ActivityModel.cs 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  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 JetBrains.Annotations;
  9. using Xamarin.CommunityToolkit.ObjectModel;
  10. namespace PRS.Mobile
  11. {
  12. public class ActivityModel : CoreRepository<ActivityModel,ActivityShell, EmployeeActivity>
  13. {
  14. public ActivityModel(IModelHost host, Func<Filter<EmployeeActivity>>? filter = null, Func<string>? cachefilename = null) : base(host, filter, cachefilename)
  15. {
  16. }
  17. protected override void Initialize()
  18. {
  19. base.Initialize();
  20. Forms = new ObservableRangeCollection<ActivityFormShell>();
  21. }
  22. public ObservableRangeCollection<ActivityFormShell> Forms { get; private set; }
  23. protected override void BeforeLoad(MultiQuery query)
  24. {
  25. base.BeforeLoad(query);
  26. query.Add<ActivityForm>(
  27. new Filter<ActivityForm>(x=>x.Form.Active).IsEqualTo(true)
  28. .And(x=>x.Activity.ID).InQuery(EffectiveFilter(), x=>x.Activity.ID),
  29. GetColumns<ActivityFormShell,ActivityForm>()
  30. );
  31. }
  32. protected override void AfterLoad(MultiQuery query)
  33. {
  34. base.AfterLoad(query);
  35. Forms.ReplaceRange(
  36. query.Get<ActivityForm>()
  37. .Rows
  38. .Select(x => new ActivityFormShell() { Row = x, Parent = this })
  39. .ToArray()
  40. );
  41. }
  42. }
  43. }