DeliveryDetailModel.cs 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. using System;
  2. using System.IO;
  3. using System.Linq;
  4. using Comal.Classes;
  5. using InABox.Clients;
  6. using InABox.Core;
  7. using System.Diagnostics.CodeAnalysis;
  8. using Syncfusion.XForms.EffectsView;
  9. using Xamarin.Forms;
  10. namespace comal.timesheets
  11. {
  12. public class DeliveryDetailModel : DetailModel<DeliveryDetailModel,DeliveryDetailShell, Delivery>
  13. {
  14. public DeliveryDetailModel(IModelHost host, Func<Filter<Delivery>> filter, bool transient = false) : base(host, filter, transient)
  15. {
  16. }
  17. public DeliveryDetailModel(IModelHost host, Func<Filter<Delivery>> filter, [NotNull] String filename) : base(host, filter, filename)
  18. {
  19. }
  20. public DeliveryDetailItemShell[] Dockets { get; private set; }
  21. public DeliveryDocumentShell[] Documents { get; private set; }
  22. public override void BeforeLoad(MultiQuery query)
  23. {
  24. base.BeforeLoad(query);
  25. query.Add<DeliveryItem>(
  26. new Filter<DeliveryItem>(x => x.Delivery.ID).InQuery(Filter(), x => x.ID),
  27. DeliveryDetailItemShell.Columns.Columns
  28. );
  29. query.Add<DeliveryDocument>(
  30. new Filter<DeliveryDocument>(x => x.EntityLink.ID).InQuery(Filter(), x => x.ID),
  31. DeliveryDocumentShell.Columns.Columns
  32. );
  33. }
  34. public override void AfterLoad(MultiQuery query)
  35. {
  36. base.AfterLoad(query);
  37. Dockets = query.Get<DeliveryItem>()
  38. .Rows
  39. .Select(r => new DeliveryDetailItemShell() { Row = r, Parent = this })
  40. .ToArray();
  41. Documents = query.Get<DeliveryDocument>()
  42. .Rows
  43. .Select(r => new DeliveryDocumentShell() { Row = r, Parent = this })
  44. .ToArray();
  45. }
  46. protected override void Initialize()
  47. {
  48. base.Initialize();
  49. Dockets = new DeliveryDetailItemShell[] { };
  50. Documents = new DeliveryDocumentShell[] { };
  51. }
  52. }
  53. }