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