EmployeeStandardLeave.cs 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. using System;
  2. using System.Linq.Expressions;
  3. using InABox.Core;
  4. namespace Comal.Classes
  5. {
  6. public interface IEmployeeLeaveRequest
  7. {
  8. EmployeeLink EmployeeLink { get; set; }
  9. LeaveRequestActivityLink LeaveType { get; set; }
  10. DateTime From { get; set; }
  11. TimeSpan FromTime { get; set; }
  12. DateTime To { get; set; }
  13. TimeSpan ToTime { get; set; }
  14. DateTime Approved { get; set; }
  15. LeaveRequestStatus Status { get; set; }
  16. LeaveRequestLink LeaveRequest { get; set; }
  17. StandardLeaveLink StandardLeave { get; set; }
  18. }
  19. public class EmployeeStandardLeaveGenerator : AutoEntityCartesianGenerator<IEmployeeLeaveRequest>
  20. {
  21. public override void Configure()
  22. {
  23. AddTable(LookupFactory.DefineFilter<Employee>())
  24. .AddMapping(x => x.ID, x => x.EmployeeLink.ID);
  25. AddTable<StandardLeave>(null)
  26. .AddMapping(x => x.LeaveType.ID, x => x.LeaveType.ID)
  27. .AddMapping(x => x.From, x => x.From)
  28. .AddMapping(x => x.FromTime, x => x.FromTime)
  29. .AddMapping(x => x.To, x => x.To)
  30. .AddMapping(x => x.ToTime, x => x.ToTime)
  31. .AddMapping(x=>x.Created, x=>x.Approved)
  32. .AddMapping(x=>x.ID, x=>x.StandardLeave.ID);
  33. AddConstant(LeaveRequestStatus.Approved.ToString(), x=>x.Status);
  34. AddConstant(Guid.Empty, x => x.LeaveRequest.ID);
  35. }
  36. public override bool Distinct => false;
  37. public override Column<IEmployeeLeaveRequest>[] IDColumns => new Column<IEmployeeLeaveRequest>[]
  38. {
  39. new Column<IEmployeeLeaveRequest>(x => x.EmployeeLink.ID),
  40. new Column<IEmployeeLeaveRequest>(x => x.StandardLeave.ID)
  41. };
  42. }
  43. [AutoEntity(typeof(EmployeeStandardLeaveGenerator))]
  44. [Obsolete("Not Used at this stage", false)]
  45. public class EmployeeStandardLeave : Entity, IRemotable, IPersistent, IEmployeeLeaveRequest, ILicense<LeaveManagementLicense>
  46. {
  47. public EmployeeLink EmployeeLink { get; set; }
  48. public LeaveRequestActivityLink LeaveType { get; set; }
  49. public DateTime From { get; set; }
  50. public TimeSpan FromTime { get; set; }
  51. public DateTime To { get; set; }
  52. public TimeSpan ToTime { get; set; }
  53. public DateTime Approved { get; set; }
  54. public LeaveRequestStatus Status { get; set; }
  55. public LeaveRequestLink LeaveRequest { get; set; }
  56. public StandardLeaveLink StandardLeave { get; set; }
  57. }
  58. }