EmployeeStandardLeave.cs 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  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. StandardLeaveLink StandardLeave { get; set; }
  17. }
  18. public class EmployeeStandardLeaveGenerator : AutoEntityCartesianGenerator<IEmployeeLeaveRequest>
  19. {
  20. public override void Configure()
  21. {
  22. AddTable(LookupFactory.DefineFilter<Employee>())
  23. .AddMapping(x => x.ID, x => x.EmployeeLink.ID);
  24. AddTable<StandardLeave>(null)
  25. .AddMapping(x => x.LeaveType.ID, x => x.LeaveType.ID)
  26. .AddMapping(x => x.From, x => x.From)
  27. .AddMapping(x => x.FromTime, x => x.FromTime)
  28. .AddMapping(x => x.To, x => x.To)
  29. .AddMapping(x => x.ToTime, x => x.ToTime)
  30. .AddMapping(x=>x.Created, x=>x.Approved)
  31. .AddMapping(x=>x.ID, x=>x.StandardLeave.ID);
  32. AddConstant(LeaveRequestStatus.Approved.ToString(), x=>x.Status);
  33. }
  34. public override bool Distinct => false;
  35. }
  36. [AutoEntity(typeof(EmployeeStandardLeaveGenerator))]
  37. public class EmployeeStandardLeave : Entity, IRemotable, IPersistent, IEmployeeLeaveRequest
  38. {
  39. public EmployeeLink EmployeeLink { get; set; }
  40. public LeaveRequestActivityLink LeaveType { get; set; }
  41. public DateTime From { get; set; }
  42. public TimeSpan FromTime { get; set; }
  43. public DateTime To { get; set; }
  44. public TimeSpan ToTime { get; set; }
  45. public DateTime Approved { get; set; }
  46. public LeaveRequestStatus Status { get; set; }
  47. public StandardLeaveLink StandardLeave { get; set; }
  48. protected override void Init()
  49. {
  50. base.Init();
  51. EmployeeLink = new EmployeeLink();
  52. LeaveType = new LeaveRequestActivityLink();
  53. StandardLeave = new StandardLeaveLink();
  54. }
  55. }
  56. }