BaseActivityLookup.cs 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. using System;
  2. using InABox.Clients;
  3. using InABox.Core;
  4. namespace Comal.Classes
  5. {
  6. public abstract class BaseActivityLookup<T> : LookupGenerator<T>
  7. {
  8. public BaseActivityLookup(T[] items) : base(items)
  9. {
  10. AddColumn("Code", typeof(string));
  11. AddColumn("Description", typeof(string));
  12. AddColumn("Color", typeof(string));
  13. }
  14. protected abstract Guid EmployeeID();
  15. protected virtual Filter<EmployeeActivity> CreateFilter()
  16. {
  17. return new Filter<EmployeeActivity>(x => x.Employee.ID).IsEqualTo(EmployeeID());
  18. }
  19. protected override void DoGenerateLookups()
  20. {
  21. Clear();
  22. var eacts = new Client<EmployeeActivity>().Query(
  23. CreateFilter(),
  24. new Columns<EmployeeActivity>(x => x.Activity.ID, x => x.Activity.Code, x => x.Activity.Description, x => x.Activity.Color),
  25. new SortOrder<EmployeeActivity>(x => x.Activity.Code)
  26. );
  27. foreach (var row in eacts.Rows)
  28. AddValue(
  29. row.Get<EmployeeActivity, Guid>(col => col.Activity.ID),
  30. string.Format("{0}: {1}", row.Get<EmployeeActivity, string>(col => col.Activity.Code),
  31. row.Get<EmployeeActivity, string>(col => col.Activity.Description)),
  32. row.Get<EmployeeActivity, string>(col => col.Activity.Code),
  33. row.Get<EmployeeActivity, string>(col => col.Activity.Description),
  34. row.Get<EmployeeActivity, string>(col => col.Activity.Color)
  35. );
  36. }
  37. }
  38. }