| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162 | using System.Linq;using InABox.Core;namespace Comal.Classes{    public class JobScopeLookups : EntityLookup<JobScope>,        ILookupDefinition<JobScope, InvoiceLine>,        ILookupDefinition<JobScope, Job>,        ILookupDefinition<JobScope, StagingSetout>,        ILookupDefinition<JobScope, Assignment>,        ILookupDefinition<JobScope, Kanban>,        ILookupDefinition<JobScope, RequisitionItem>,        ILookupDefinition<JobScope, JobForm>,        ILookupDefinition<JobScope, Requisition>    {                #region Invoice Lines                public Filter<JobScope> DefineFilter(InvoiceLine[] items)        {            if (items == null)                return new Filter<JobScope>(x => x.ID).IsEqualTo(CoreUtils.FullGuid);            var jobid = CoreUtils.FullGuid;            foreach (var item in items)            {                if (jobid == CoreUtils.FullGuid)                    jobid = item.InvoiceLink.JobLink.ID;                if (item.InvoiceLink.JobLink.ID != jobid)                    return new Filter<JobScope>(x => x.ID).IsEqualTo(CoreUtils.FullGuid);            }            return new Filter<JobScope>(x => x.Job.ID).IsEqualTo(jobid).And(x => x.Status.Approved).IsEqualTo(true);        }                Columns<InvoiceLine> ILookupDefinition<JobScope, InvoiceLine>.DefineFilterColumns()            => new Columns<InvoiceLine>(x => x.InvoiceLink.JobLink.ID);        #endregion                #region Assignments        public Filter<JobScope> DefineFilter(Assignment[] items)        {            var item = items?.Length == 1 ? items[0] : null;            if (item != null)                return new Filter<JobScope>(x => x.Job.ID).IsEqualTo(item.JobLink.ID).And(x => x.Status.Approved).IsEqualTo(true);            return new Filter<JobScope>(x => x.ID).None();        }                Columns<Assignment> ILookupDefinition<JobScope, Assignment>.DefineFilterColumns()            => new Columns<Assignment>(x=>x.JobLink.ID);        #endregion                #region Jobs (Default Scope)                public Filter<JobScope> DefineFilter(Job[] items)        {            var item = items?.Length == 1 ? items[0] : null;            if (item != null)                return new Filter<JobScope>(x => x.Job.ID).IsEqualTo(item.ID).And(x => x.Status.Approved).IsEqualTo(true);            return new Filter<JobScope>(x => x.ID).None();        }                Columns<Job> ILookupDefinition<JobScope, Job>.DefineFilterColumns()            => new Columns<Job>(x=>x.ID);                        #endregion                #region StagingSetout                public Filter<JobScope> DefineFilter(StagingSetout[] items)        {            var item = items?.Length == 1 ? items[0] : null;            if (item != null)                return new Filter<JobScope>(x => x.Job.ID).IsEqualTo(item.JobLink.ID).And(x => x.Status.Approved).IsEqualTo(true);            return new Filter<JobScope>(x => x.ID).None();        }                Columns<StagingSetout> ILookupDefinition<JobScope, StagingSetout>.DefineFilterColumns()            => new Columns<StagingSetout>(x=>x.JobLink.ID);                #endregion                #region RequisitionItem                public Filter<JobScope> DefineFilter(RequisitionItem[] items)        {            var item = items?.Length == 1 ? items[0] : null;            if (item != null)                return new Filter<JobScope>(x => x.Job.ID).IsEqualTo(item.RequisitionLink.JobLink.ID).And(x => x.Status.Approved).IsEqualTo(true);            return new Filter<JobScope>(x => x.ID).None();        }                Columns<RequisitionItem> ILookupDefinition<JobScope, RequisitionItem>.DefineFilterColumns()            => new Columns<RequisitionItem>(x=>x.RequisitionLink.JobLink.ID);                #endregion                #region Requisition                public Filter<JobScope> DefineFilter(Requisition[] items)        {            var item = items?.Length == 1 ? items[0] : null;            if (item != null)                return new Filter<JobScope>(x => x.Job.ID).IsEqualTo(item.JobLink.ID).And(x => x.Status.Approved).IsEqualTo(true);            return new Filter<JobScope>(x => x.ID).None();        }                Columns<Requisition> ILookupDefinition<JobScope, Requisition>.DefineFilterColumns()            => new Columns<Requisition>(x=>x.JobLink.ID);        #endregion        #region Kanban                 public Filter<JobScope> DefineFilter(Kanban[] items)        {            var item = items?.Length == 1 ? items[0] : null;            if (item != null)                return new Filter<JobScope>(x => x.Job.ID).IsEqualTo(item.JobLink.ID).And(x => x.Status.Approved).IsEqualTo(true);            return new Filter<JobScope>(x => x.ID).None();        }        Columns<Kanban> ILookupDefinition<JobScope, Kanban>.DefineFilterColumns()            => new Columns<Kanban>(x => x.JobLink.ID);        #endregion        #region JobForm        public Filter<JobScope> DefineFilter(JobForm[] items)        {            var item = items?.Length == 1 ? items[0] : null;            if (item != null)                return new Filter<JobScope>(x => x.Job.ID).IsEqualTo(item.Parent.ID).And(x => x.Status.Approved).IsEqualTo(true);            return new Filter<JobScope>(x => x.ID).None();        }        Columns<JobForm> ILookupDefinition<JobScope, JobForm>.DefineFilterColumns()            => new Columns<JobForm>(x => x.Parent.ID);        #endregion        public override Columns<JobScope> DefineColumns()        {            return new Columns<JobScope>().Default();        }        public override Filter<JobScope> DefineFilter()        {            return new Filter<JobScope>(x => x.ID).IsEqualTo(CoreUtils.FullGuid);        }        public override SortOrder<JobScope> DefineSortOrder()        {            return new SortOrder<JobScope>(x => x.Number);        }    }}
 |