LeaveRequestApproval.cs 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. using System;
  2. using InABox.Core;
  3. namespace Comal.Classes
  4. {
  5. public enum LeaveRequestApprovalStatus
  6. {
  7. Approved,
  8. NotYetApproved,
  9. Rejected
  10. }
  11. public class LeaveRequestApproval : Entity, ISequenceable, IRemotable, IPersistent, ILicense<HumanResourcesLicense>
  12. {
  13. private class EmployeeLookup : LookupDefinitionGenerator<Employee, LeaveRequestApproval>
  14. {
  15. public override Filter<Employee>? DefineFilter(LeaveRequestApproval[] items)
  16. {
  17. return new Filter<Employee>(x => x.ID).NotInList(items.ToArray(x => x.Employee.ID));
  18. }
  19. public override Columns<LeaveRequestApproval> DefineFilterColumns()
  20. {
  21. return base.DefineFilterColumns().Add(x => x.Employee.ID);
  22. }
  23. }
  24. [EditorSequence(1)]
  25. [EntityRelationship(DeleteAction.Cascade)]
  26. [LookupDefinition(typeof(EmployeeLookup))]
  27. public EmployeeLink Employee { get; set; }
  28. [NullEditor]
  29. [EntityRelationship(DeleteAction.Cascade)]
  30. public LeaveRequestLink LeaveRequest { get; set; }
  31. [EditorSequence(2)]
  32. public LeaveRequestApprovalStatus Status { get; set; } = LeaveRequestApprovalStatus.NotYetApproved;
  33. [EditorSequence(3)]
  34. public string Notes { get; set; }
  35. [NullEditor]
  36. public bool IsCustom { get; set; }
  37. [NullEditor]
  38. public long Sequence { get; set; }
  39. static LeaveRequestApproval()
  40. {
  41. DefaultColumns.Add<LeaveRequestApproval>(x => x.LeaveRequest.EmployeeLink.Code);
  42. DefaultColumns.Add<LeaveRequestApproval>(x => x.LeaveRequest.EmployeeLink.Name);
  43. DefaultColumns.Add<LeaveRequestApproval>(x => x.Employee.Code);
  44. DefaultColumns.Add<LeaveRequestApproval>(x => x.Employee.Name);
  45. DefaultColumns.Add<LeaveRequestApproval>(x => x.Status);
  46. DefaultColumns.Add<LeaveRequestApproval>(x => x.Notes);
  47. }
  48. }
  49. }