LeaveRequestFormLookups.cs 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. using InABox.Core;
  2. using System;
  3. namespace Comal.Classes
  4. {
  5. public class LeaveRequestFormLookups : DigitalFormInstanceLookups<LeaveRequest, LeaveRequestLink, LeaveRequestForm> { }
  6. public class DigitalFormLeaveRequestLookup : LookupDefinitionGenerator<DigitalForm, LeaveRequest>
  7. {
  8. public override Filter<DigitalForm> DefineFilter(LeaveRequest[] items)
  9. {
  10. var filter =
  11. LookupFactory.DefineLookupFilter<LeaveRequestForm, DigitalForm, DigitalFormLink>(x => x.Form,
  12. Array.Empty<LeaveRequestForm>())
  13. ?? new Filter<DigitalForm>().All();
  14. foreach (var leaveRequest in items)
  15. {
  16. filter.And(x => x.ID).InQuery(
  17. new Filter<EmployeeDigitalForm>(x => x.Employee.ID).IsEqualTo(leaveRequest.EmployeeLink.ID),
  18. x => x.Form.ID);
  19. }
  20. return filter;
  21. }
  22. public override Columns<LeaveRequest> DefineFilterColumns()
  23. => new Columns<LeaveRequest>(x => x.EmployeeLink.ID);
  24. }
  25. public class DigitalFormLeaveRequestFormLookup : LookupDefinitionGenerator<DigitalForm, LeaveRequestForm>
  26. {
  27. public override Filter<DigitalForm> DefineFilter(LeaveRequestForm[] items)
  28. {
  29. return new Filter<DigitalForm>(x => x.Active).IsEqualTo(true).And(x => x.AppliesTo)
  30. .IsEqualTo("LeaveRequest");
  31. }
  32. public override Columns<LeaveRequestForm> DefineFilterColumns()
  33. => new Columns<LeaveRequestForm>();
  34. }
  35. }