EmployeeDetailModel.cs 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. using System;
  2. using System.Linq;
  3. using System.Linq.Expressions;
  4. using Comal.Classes;
  5. using InABox.Core;
  6. using System.Diagnostics.CodeAnalysis;
  7. namespace comal.timesheets
  8. {
  9. public class EmployeeDetailModel : DetailModel<EmployeeDetailModel,EmployeeDetailShell,Employee>
  10. {
  11. public EmployeeDetailModel(IModelHost host, Func<Filter<Employee>> filter, bool transient = false) : base(host, filter, transient)
  12. {
  13. }
  14. public EmployeeDetailModel(IModelHost host, Func<Filter<Employee>> filter, [NotNull] string filename) : base(host, filter, filename)
  15. {
  16. }
  17. protected override void Initialize()
  18. {
  19. base.Initialize();
  20. Activities = new EmployeeActivityShell[] { };
  21. Forms = new EmployeeFormShell[] { };
  22. }
  23. public EmployeeActivityShell[] Activities { get; private set; }
  24. public EmployeeFormShell[] Forms { get; private set; }
  25. protected override Expression<Func<Employee, object>> ImageColumn => x => x.Thumbnail.ID;
  26. public override void BeforeLoad(MultiQuery query)
  27. {
  28. base.BeforeLoad(query);
  29. query.Add(
  30. new Filter<EmployeeActivity>(x => x.Employee.ID).InQuery(Filter(),x=>x.ID),
  31. EmployeeActivityShell.Columns.Columns
  32. );
  33. query.Add(
  34. new Filter<EmployeeForm>(x => x.Parent.ID).InQuery(Filter(),x=>x.ID),
  35. EmployeeFormShell.Columns.Columns
  36. );
  37. }
  38. public override void AfterLoad(MultiQuery query)
  39. {
  40. base.AfterLoad(query);
  41. Activities = query.Get<EmployeeActivity>()
  42. .Rows
  43. .Select(x => new EmployeeActivityShell() { Row = x, Parent = this })
  44. .ToArray();
  45. Forms = query.Get<EmployeeForm>()
  46. .Rows
  47. .Select(x => new EmployeeFormShell() { Row = x, Parent = this })
  48. .ToArray();
  49. }
  50. public Guid ID => Item?.ID ?? Guid.Empty;
  51. public String Name => Item?.Name ?? "";
  52. }
  53. }