JobAggregates.cs 1.4 KB

1234567891011121314151617181920212223242526272829303132333435
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq.Expressions;
  4. using InABox.Core;
  5. namespace Comal.Classes
  6. {
  7. public class JobAssignmentCount : CoreAggregate<Job, Assignment, Guid>
  8. {
  9. public override Expression<Func<Assignment, Guid>> Aggregate => x => x.ID;
  10. public override AggregateCalculation Calculation => AggregateCalculation.Count;
  11. public override Dictionary<Expression<Func<Assignment, object>>, Expression<Func<Job, object>>> Links =>
  12. new Dictionary<Expression<Func<Assignment, object>>, Expression<Func<Job, object>>>()
  13. {
  14. { Assignment => Assignment.JobLink.ID, Job => Job.ID }
  15. };
  16. }
  17. public class JobOpenAssignmentCount : CoreAggregate<Job, Assignment, Guid>
  18. {
  19. public override Expression<Func<Assignment, Guid>> Aggregate => x => x.ID;
  20. public override AggregateCalculation Calculation => AggregateCalculation.Count;
  21. public override Dictionary<Expression<Func<Assignment, object>>, Expression<Func<Job, object>>> Links =>
  22. new Dictionary<Expression<Func<Assignment, object>>, Expression<Func<Job, object>>>()
  23. {
  24. { Assignment => Assignment.JobLink.ID, Job => Job.ID }
  25. };
  26. public override Filter<Assignment> Filter => new Filter<Assignment>(x => x.Completed).IsEqualTo(DateTime.MinValue);
  27. }
  28. }