AssignmentDetailModel.cs 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. using System;
  2. using System.Drawing;
  3. using System.Linq;
  4. using Comal.Classes;
  5. using InABox.Core;
  6. using System.Diagnostics.CodeAnalysis;
  7. namespace comal.timesheets
  8. {
  9. public class AssignmentDetailModel : DetailModel<AssignmentDetailModel, AssignmentDetailShell, Assignment>
  10. {
  11. public AssignmentDetailModel(IModelHost host, Func<Filter<Assignment>> filter, bool transient = false) : base(host, filter, transient)
  12. {
  13. }
  14. public AssignmentDetailModel(IModelHost host, Func<Filter<Assignment>> filter, [NotNull] string filename) : base(host, filter, filename)
  15. {
  16. }
  17. protected override void Initialize()
  18. {
  19. base.Initialize();
  20. Forms = new AssignmentFormShell[] { };
  21. }
  22. public AssignmentFormShell[] Forms { get; private set; }
  23. // public override Columns<Assignment> Columns => AssignmentDetailShell.Columns.Columns;
  24. public override void BeforeLoad(MultiQuery query)
  25. {
  26. base.BeforeLoad(query);
  27. query.Add<AssignmentForm>(
  28. new Filter<AssignmentForm>(x => x.Parent.ID).InQuery(Filter(),x =>x.ID),
  29. AssignmentFormShell.Columns.Columns
  30. );
  31. }
  32. public override void AfterLoad(MultiQuery query)
  33. {
  34. base.AfterLoad(query);
  35. Forms = query.Get<AssignmentForm>()
  36. .Rows
  37. .Select(row => new AssignmentFormShell() { Row = row, Parent = this })
  38. .ToArray();
  39. }
  40. public PointF Coordinates => new PointF(
  41. (float)(Item?.Longitude ?? 0),
  42. (float)(Item?.Latitude ?? 0)
  43. );
  44. }
  45. }