AssignmentFormLookups.cs 1.5 KB

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