DeliveryEditViewModel.cs 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. using System;
  2. using System.Threading.Tasks;
  3. using Comal.Classes;
  4. using InABox.Core;
  5. using InABox.Mobile;
  6. using Xamarin.Forms;
  7. namespace PRS.Mobile
  8. {
  9. public class DeliveryEditViewModel : MobileViewModel<Delivery,DeliveryShell>
  10. {
  11. public DeliveryDocumentModel Documents { get; set; }
  12. public DeliveryItemModel Items { get; set; }
  13. public DeliveryFormModel Forms { get; set; }
  14. public DeliveryEditViewModel()
  15. {
  16. Documents = new DeliveryDocumentModel(App.Data,
  17. () => new Filter<DeliveryDocument>(x => x.EntityLink.ID).IsEqualTo(Item?.ID ?? Guid.Empty));
  18. Items = new DeliveryItemModel(App.Data,
  19. () => new Filter<DeliveryItem>(x => x.Delivery.ID).IsEqualTo(Item?.ID ?? Guid.Empty));
  20. Forms = new DeliveryFormModel(App.Data,
  21. () => new Filter<DeliveryForm>(x => x.Parent.ID).IsEqualTo(Item?.ID ?? Guid.Empty));
  22. }
  23. protected override void DoLoad()
  24. {
  25. var tasks = new Task[]
  26. {
  27. Task.Run(() =>
  28. {
  29. if (Item != null && Item.ID != Guid.Empty)
  30. Items.Refresh(true);
  31. }),
  32. Task.Run(() =>
  33. {
  34. if (Item != null && Item.ID != Guid.Empty)
  35. Documents.Refresh(true);
  36. }),
  37. Task.Run(() =>
  38. {
  39. if (Item != null && Item.ID != Guid.Empty)
  40. Forms.Refresh(true);
  41. })
  42. };
  43. Task.WaitAll(tasks);
  44. }
  45. public override bool IsChanged => Item == null || Item.ID == Guid.Empty || Item.IsChanged();
  46. }
  47. }