EquipmentDetailModel.cs 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. using System;
  2. using System.Linq;
  3. using System.Linq.Expressions;
  4. using Comal.Classes;
  5. using InABox.Core;
  6. using InABox.Mobile;
  7. using System.Diagnostics.CodeAnalysis;
  8. namespace comal.timesheets
  9. {
  10. public class EquipmentDetailModel : DetailModel<EquipmentDetailModel,EquipmentDetailShell,Equipment>
  11. {
  12. public EquipmentDetailModel(IModelHost host, Func<Filter<Equipment>> filter, bool transient = false) : base(host, filter, transient)
  13. {
  14. }
  15. public EquipmentDetailModel(IModelHost host, Func<Filter<Equipment>> filter, [NotNull] string filename) : base(host, filter, filename)
  16. {
  17. }
  18. protected override void Initialize()
  19. {
  20. base.Initialize();
  21. Documents = new CoreObservableCollection<IDocumentShell>();
  22. Kanbans = new CoreObservableCollection<EquipmentKanbanShell>();
  23. }
  24. // public override Columns<(.+)> Columns => EquipmentDetailShell.Columns.Columns;
  25. public CoreObservableCollection<IDocumentShell> Documents { get; private set; }
  26. public CoreObservableCollection<EquipmentKanbanShell> Kanbans { get; private set; }
  27. protected override Expression<Func<Equipment, object>> ImageColumn => x => x.SpecificationSheet.ID;
  28. public override void BeforeLoad(MultiQuery query)
  29. {
  30. base.BeforeLoad(query);
  31. query.Add(
  32. new Filter<EquipmentDocument>(x => x.EntityLink.ID).InQuery(Filter(),x=>x.ID),
  33. EquipmentDocumentShell.Columns.Columns
  34. );
  35. query.Add(
  36. new Filter<Kanban>(x => x.Equipment.ID).InQuery(Filter(),x=>x.ID),
  37. EquipmentKanbanShell.Columns.Columns
  38. );
  39. }
  40. public override void AfterLoad(MultiQuery query)
  41. {
  42. base.AfterLoad(query);
  43. Documents.ReplaceRange(
  44. query.Get<EquipmentDocument>()
  45. .Rows
  46. .Select(x => new EquipmentDocumentShell() { Row = x, Parent = this })
  47. .ToArray()
  48. );
  49. Kanbans.ReplaceRange(
  50. query.Get<Kanban>()
  51. .Rows
  52. .Select(x => new EquipmentKanbanShell() { Row = x, Parent = this })
  53. .ToArray()
  54. );
  55. }
  56. }
  57. }