EmployeeStandardLeave.cs 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  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. public override Column<IEmployeeLeaveRequest>[] IDColumns => new Column<IEmployeeLeaveRequest>[]
  36. {
  37. new Column<IEmployeeLeaveRequest>(x => x.EmployeeLink.ID),
  38. new Column<IEmployeeLeaveRequest>(x => x.StandardLeave.ID)
  39. };
  40. }
  41. [AutoEntity(typeof(EmployeeStandardLeaveGenerator))]
  42. public class EmployeeStandardLeave : Entity, IRemotable, IPersistent, IEmployeeLeaveRequest
  43. {
  44. public EmployeeLink EmployeeLink { get; set; }
  45. public LeaveRequestActivityLink LeaveType { get; set; }
  46. public DateTime From { get; set; }
  47. public TimeSpan FromTime { get; set; }
  48. public DateTime To { get; set; }
  49. public TimeSpan ToTime { get; set; }
  50. public DateTime Approved { get; set; }
  51. public LeaveRequestStatus Status { get; set; }
  52. public StandardLeaveLink StandardLeave { get; set; }
  53. protected override void Init()
  54. {
  55. base.Init();
  56. EmployeeLink = new EmployeeLink();
  57. LeaveType = new LeaveRequestActivityLink();
  58. StandardLeave = new StandardLeaveLink();
  59. }
  60. }
  61. }