EquipmentEditViewModel.cs 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Threading.Tasks;
  5. using Comal.Classes;
  6. using InABox.Core;
  7. using InABox.Mobile;
  8. using Xamarin.Forms;
  9. namespace PRS.Mobile
  10. {
  11. public class EquipmentEditViewModel : MobileViewModel<Equipment, EquipmentShell>
  12. {
  13. public EquipmentDocumentModel Documents { get; private set; }
  14. public DocumentModel SpecificationSheet { get; private set; }
  15. public EquipmentKanbanModel Kanbans { get; private set; }
  16. public CoreObservableCollection<EquipmentKanbanShell> OpenKanbans { get; private set; }
  17. public Point Coordinates =>
  18. Item == null
  19. ? new Point()
  20. : new Point
  21. (
  22. Item.Latitude,
  23. Item.Longitude
  24. );
  25. public override bool IsChanged => Item == null || Item.ID == Guid.Empty || Item.IsChanged();
  26. public EquipmentEditViewModel()
  27. {
  28. Documents = new EquipmentDocumentModel(App.Data,
  29. () => new Filter<EquipmentDocument>(x => x.EntityLink.ID).IsEqualTo(Item?.ID ?? CoreUtils.FullGuid));
  30. SpecificationSheet = new DocumentModel(App.Data,
  31. () => new Filter<Document>(x => x.ID).IsEqualTo(Item?.SpecificationSheetID ?? CoreUtils.FullGuid));
  32. Kanbans = new EquipmentKanbanModel(App.Data,
  33. () => new Filter<Kanban>(x => x.Equipment.ID).IsEqualTo(Item?.ID ?? CoreUtils.FullGuid));
  34. Kanbans.Changed += (sender, args) =>
  35. OpenKanbans.ReplaceRange(Kanbans.Where(x => x.Completed.IsEmpty()).ToArray());
  36. OpenKanbans = new CoreObservableCollection<EquipmentKanbanShell>();
  37. }
  38. protected override void DoLoad()
  39. {
  40. var tasks = new Task[]
  41. {
  42. Task.Run(() => Documents.Refresh(true)),
  43. Task.Run(() => SpecificationSheet.Refresh(true)),
  44. Task.Run(() => Kanbans.Refresh(true)),
  45. };
  46. Task.WaitAll(tasks);
  47. }
  48. }
  49. }