| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 | using System;using System.Collections.Generic;using System.Linq.Expressions;using InABox.Core;namespace Comal.Classes{    [UserTracking(typeof(Qualification))]    public class JobQualificationCount : CoreAggregate<JobQualification, JobEmployeeQualification, Guid>    {        public override Expression<Func<JobEmployeeQualification, Guid>> Aggregate => x => x.ID;        public override Dictionary<Expression<Func<JobEmployeeQualification, object>>, Expression<Func<JobQualification, object>>> Links =>            new Dictionary<Expression<Func<JobEmployeeQualification, object>>, Expression<Func<JobQualification, object>>>()            {                { JobEmployeeQualification => JobEmployeeQualification.Required.ID, JobQualification => JobQualification.ID }            };        public override AggregateCalculation Calculation => AggregateCalculation.Count;        public override Filter<JobEmployeeQualification> Filter        {            get            {                var start = new Filter<JobEmployeeQualification>(x => x.Available.Employee.StartDate).IsEqualTo(DateTime.MinValue)                    .Or(x => x.Available.Employee.StartDate).IsLessThanOrEqualTo(DateTime.Today);                var finish = new Filter<JobEmployeeQualification>(x => x.Available.Employee.FinishDate).IsEqualTo(DateTime.MinValue)                    .Or(x => x.Available.Employee.FinishDate).IsGreaterThanOrEqualTo(DateTime.Today);                var expiry = new Filter<JobEmployeeQualification>(x => x.Available.Expiry).IsGreaterThanOrEqualTo(DateTime.Today);                var result = expiry.And(start).And(finish);                return result;            }        }    }    [UserTracking(typeof(Qualification))]    public class JobQualification : Entity, IRemotable, IPersistent, IManyToMany<Job, Qualification>, ILicense<ProjectManagementLicense>    {        [EntityRelationship(DeleteAction.Cascade)]        public JobLink Job { get; set; }        [EntityRelationship(DeleteAction.Cascade)]        public QualificationLink Qualification { get; set; }        [CheckBoxEditor]        public bool Required { get; set; }        [IntegerEditor(Visible = Visible.Default, Editable = Editable.Disabled)]        [Aggregate(typeof(JobQualificationCount))]        public int Count { get; set; }    }}
 |