AssignmentEditDataModel.cs 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using Comal.Classes;
  5. using comal.timesheets;
  6. using InABox.Core;
  7. namespace comal.timesheets
  8. {
  9. public class AssignmentEditDataModel : SingleDataModel<Assignment, AssignmentEditDataModelItem>
  10. {
  11. public List<KeyValuePair<Guid, String>> Activities { get; private set; }
  12. public override Columns<Assignment> Columns => new Columns<Assignment>(x => x.ID)
  13. .Add(x => x.Title)
  14. .Add(x => x.Description)
  15. .Add(x => x.Start)
  16. .Add(x => x.Finish)
  17. .Add(c => c.JobLink.ID)
  18. .Add(c => c.JobLink.JobNumber)
  19. .Add(c => c.JobLink.Name)
  20. .Add(c => c.ActivityLink.ID)
  21. .Add(c => c.ActivityLink.Code)
  22. .Add(c => c.ActivityLink.Description);
  23. public override void BeforeLoad(MultiQuery query, Guid id)
  24. {
  25. base.BeforeLoad(query, id);
  26. query.Add<Activity>(
  27. new Filter<Activity>(x => x.ID).InQuery<EmployeeActivity>(
  28. new Filter<EmployeeActivity>(x => x.Employee.ID).IsEqualTo(App.Data.Employee.ID),
  29. x => x.Activity.ID),
  30. LookupFactory.DefineColumns<Activity>()
  31. );
  32. }
  33. public override void AfterLoad(MultiQuery query, Guid id)
  34. {
  35. base.AfterLoad(query, id);
  36. Activities = query.Get<Activity>().ToDictionary<Activity, Guid, String>(
  37. x => x.ID,
  38. (row) => String.Format("{0}: {1}", row.Get<Activity, String>(c => c.Code),
  39. row.Get<Activity, String>(c => c.Description)),
  40. x => x.Code
  41. ).ToList();
  42. }
  43. }
  44. }