BaseActivityLookupGenerator.cs 1.9 KB

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