EmployeeLookups.cs 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. using System;
  2. using System.Linq;
  3. using InABox.Core;
  4. namespace Comal.Classes
  5. {
  6. public class EmployeeLookups : EntityLookup<Employee>, ILookupDefinition<Employee, Kanban>, ILookupDefinition<Employee, Employee>
  7. {
  8. public Filter<Employee> DefineFilter(Employee[] items)
  9. {
  10. var result = DefineFilter();
  11. result.Ands.Add(new Filter<Employee>(x => x.ID).NotInList(items.Select(x => x.ID).ToArray()));
  12. return result;
  13. }
  14. Columns<Employee> ILookupDefinition<Employee, Employee>.DefineFilterColumns()
  15. => new Columns<Employee>(x => x.ID);
  16. public Filter<Employee> DefineFilter(Kanban[] items)
  17. {
  18. var result = DefineFilter();
  19. result.Ands.Add(new Filter<Employee>(x => x.CanAllocateTasks).IsEqualTo(true));
  20. return result;
  21. }
  22. Columns<Kanban> ILookupDefinition<Employee, Kanban>.DefineFilterColumns()
  23. => new Columns<Kanban>();
  24. public override Columns<Employee> DefineColumns()
  25. {
  26. return new Columns<Employee>(
  27. x => x.ID,
  28. x => x.Name
  29. );
  30. }
  31. public override Filter<Employee> DefineFilter()
  32. {
  33. var filter = new Filter<Employee>(x => x.ID).IsNotEqualTo(Guid.Empty);
  34. filter.Ands.Add(new Filter<Employee>(x => x.StartDate).IsEqualTo(DateTime.MinValue).Or(x => x.StartDate)
  35. .IsLessThanOrEqualTo(FilterConstant.Today));
  36. filter.Ands.Add(new Filter<Employee>(x => x.FinishDate).IsEqualTo(DateTime.MinValue).Or(x => x.FinishDate)
  37. .IsGreaterThanOrEqualTo(FilterConstant.Today));
  38. return filter;
  39. }
  40. public override SortOrder<Employee> DefineSortOrder()
  41. {
  42. return new SortOrder<Employee>(x => x.Name);
  43. }
  44. }
  45. }