EquipmentDetailsDataModel.cs 3.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using Comal.Classes;
  5. using InABox.Core;
  6. namespace comal.timesheets
  7. {
  8. public class EquipmentDetailsDataModel : ListDataModel<Equipment, EquipmentDetailsDataModelItem>
  9. {
  10. private IList<EquipmentKanbanDataModelItem> _openKanbans = new List<EquipmentKanbanDataModelItem>();
  11. public IList<EquipmentKanbanDataModelItem> OpenKanbans
  12. {
  13. get { return _openKanbans; }
  14. set { SetProperty(ref _openKanbans, value); }
  15. }
  16. private bool _openKanbansVisible = false;
  17. public bool OpenKanbansVisible
  18. {
  19. get { return _openKanbansVisible; }
  20. set { SetProperty(ref _openKanbansVisible, value); }
  21. }
  22. public override Columns<Equipment> Columns => new Columns<Equipment>(x => x.ID)
  23. .Add(x => x.Description)
  24. .Add(x => x.GroupLink.Description)
  25. .Add(x => x.DigitalKey.ID)
  26. .Add(x => x.Notes)
  27. .Add(x => x.SpecificationSheet.ID)
  28. .Add(x => x.Documents);
  29. //.Add(x => x.Kanbans);
  30. public override void BeforeLoad(MultiQuery query, Filter<Equipment> filter)
  31. {
  32. base.BeforeLoad(query, filter);
  33. query.Add(
  34. new Filter<Kanban>(x => x.Equipment.ID).InQuery(filter, x => x.ID)
  35. .And(x=>x.Completed).IsEqualTo(DateTime.MinValue),
  36. new Columns<Kanban>(x=>x.ID)
  37. .Add(x=>x.Title)
  38. );
  39. }
  40. public override void AfterLoad(MultiQuery query, Filter<Equipment> filter)
  41. {
  42. OpenKanbans = new List<EquipmentKanbanDataModelItem>(
  43. query.Get<Kanban>().Rows.Select(row => new EquipmentKanbanDataModelItem() { Row = row, Parent = this })
  44. );
  45. OpenKanbansVisible = OpenKanbans.Any();
  46. base.AfterLoad(query, filter);
  47. }
  48. }
  49. public class EquipmentKanbanDataModelItem : CoreDataModelItem
  50. {
  51. public Guid ID => Row.Get<Kanban, Guid>(c => c.ID);
  52. public String Title => Row.Get<Kanban, String>(c => c.Title);
  53. }
  54. public class EquipmentDetailsDataModelItem : CoreDataModelItem
  55. {
  56. public Guid ID => Row.Get<Equipment, Guid>(c => c.ID);
  57. public String Description => Row.Get<Equipment, String>(c => c.Description);
  58. public String GroupName => Row.Get<Equipment, String>(c => c.GroupLink.Description);
  59. public String Notes => Row.Get<Equipment, String>(c => c.Notes);
  60. public bool DigitalKeyVisible => Row.Get<Equipment, Guid>(c => c.DigitalKey.ID) != Guid.Empty;
  61. public Guid SpecificationSheetID => Row.Get<Equipment, Guid>(c => c.SpecificationSheet.ID);
  62. public bool SpecificationSheetVisible => SpecificationSheetID != Guid.Empty;
  63. public bool DocumentsVisible => Row.Get<Equipment, int>(c => c.Documents) > 0;
  64. public String DocumentsDescription => $"Documents ({Row.Get<Equipment, int>(c => c.Documents)})";
  65. public bool KanbansVisible => false; //Row.Get<Equipment, int>(c => c.Kanbans) > 0;
  66. public String KanbansDescription => $"View Tasks / History (0)"; //{Row.Get<Equipment, int>(c => c.Kanbans)})";
  67. }
  68. }