JobQualification.cs 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq.Expressions;
  4. using InABox.Core;
  5. namespace Comal.Classes
  6. {
  7. [UserTracking(typeof(Qualification))]
  8. public class JobQualificationCount : CoreAggregate<JobQualification, JobEmployeeQualification, Guid>
  9. {
  10. public override Expression<Func<JobEmployeeQualification, Guid>> Aggregate => x => x.ID;
  11. public override Dictionary<Expression<Func<JobEmployeeQualification, object>>, Expression<Func<JobQualification, object>>> Links =>
  12. new Dictionary<Expression<Func<JobEmployeeQualification, object>>, Expression<Func<JobQualification, object>>>()
  13. {
  14. { JobEmployeeQualification => JobEmployeeQualification.Required.ID, JobQualification => JobQualification.ID }
  15. };
  16. public override AggregateCalculation Calculation => AggregateCalculation.Count;
  17. public override Filter<JobEmployeeQualification> Filter
  18. {
  19. get
  20. {
  21. var start = new Filter<JobEmployeeQualification>(x => x.Available.Employee.StartDate).IsEqualTo(DateTime.MinValue)
  22. .Or(x => x.Available.Employee.StartDate).IsLessThanOrEqualTo(DateTime.Today);
  23. var finish = new Filter<JobEmployeeQualification>(x => x.Available.Employee.FinishDate).IsEqualTo(DateTime.MinValue)
  24. .Or(x => x.Available.Employee.FinishDate).IsGreaterThanOrEqualTo(DateTime.Today);
  25. var expiry = new Filter<JobEmployeeQualification>(x => x.Available.Expiry).IsGreaterThanOrEqualTo(DateTime.Today);
  26. var result = expiry.And(start).And(finish);
  27. return result;
  28. }
  29. }
  30. }
  31. [UserTracking(typeof(Qualification))]
  32. public class JobQualification : Entity, IRemotable, IPersistent, IManyToMany<Job, Qualification>, ILicense<ProjectManagementLicense>
  33. {
  34. [EntityRelationship(DeleteAction.Cascade)]
  35. public JobLink Job { get; set; }
  36. [EntityRelationship(DeleteAction.Cascade)]
  37. public QualificationLink Qualification { get; set; }
  38. [CheckBoxEditor]
  39. public bool Required { get; set; }
  40. [IntegerEditor(Visible = Visible.Default, Editable = Editable.Disabled)]
  41. [Aggregate(typeof(JobQualificationCount))]
  42. public int Count { get; set; }
  43. protected override void Init()
  44. {
  45. base.Init();
  46. Job = new JobLink();
  47. Qualification = new QualificationLink();
  48. }
  49. }
  50. }