ActivityModel.cs 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Diagnostics.CodeAnalysis;
  4. using System.Linq;
  5. using Comal.Classes;
  6. using InABox.Core;
  7. using InABox.Mobile;
  8. using Xamarin.CommunityToolkit.ObjectModel;
  9. namespace PRS.Mobile
  10. {
  11. public class ActivityModel : CoreRepository<ActivityModel,ActivityShell, EmployeeActivity>
  12. {
  13. public ActivityModel(IModelHost host, Func<Filter<EmployeeActivity>> filter) : base(host, filter)
  14. {
  15. }
  16. protected override void Initialize()
  17. {
  18. base.Initialize();
  19. Forms = new ObservableRangeCollection<ActivityFormShell>();
  20. }
  21. public ObservableRangeCollection<ActivityFormShell> Forms { get; private set; }
  22. protected override void BeforeLoad(MultiQuery query)
  23. {
  24. base.BeforeLoad(query);
  25. query.Add<ActivityForm>(
  26. new Filter<ActivityForm>(x=>x.Form.Active).IsEqualTo(true)
  27. .And(x=>x.Activity.ID).InQuery(EffectiveFilter(), x=>x.Activity.ID),
  28. GetColumns<ActivityFormShell,ActivityForm>()
  29. );
  30. }
  31. protected override void AfterLoad(MultiQuery query)
  32. {
  33. base.AfterLoad(query);
  34. Forms.ReplaceRange(
  35. query.Get<ActivityForm>()
  36. .Rows
  37. .Select(x => new ActivityFormShell() { Row = x, Parent = this })
  38. .ToArray()
  39. );
  40. }
  41. }
  42. }