using System; using System.Linq; using InABox.Clients; using InABox.Core; namespace Comal.Classes { public class ContactLookups : EntityLookup, ILookupDefinition { public Filter DefineFilter(Quote[] items) { if (items == null || !items.Any()) return new Filter(x => x.ID).IsEqualTo(CoreUtils.FullGuid); var customer = items.First().Customer; if (!customer.IsValid()) return new Filter(x => x.ID).IsEqualTo(CoreUtils.FullGuid); var contacts = new Client().Query( new Filter(x => x.Customer.ID).IsEqualTo(customer.ID), new Columns(x => x.Contact.ID) ); var ids = contacts.Rows.Select(x => x.Get(c => c.Contact.ID)); if (!ids.Any()) return new Filter(x => x.ID).IsEqualTo(CoreUtils.FullGuid); return new Filter(x => x.ID).InList(ids.ToArray()); } Columns ILookupDefinition.DefineFilterColumns() => new Columns(x => x.Customer.ID).Add(x => x.Customer.Deleted); public override Columns DefineColumns() { return new Columns( x => x.ID, x => x.Name, x => x.Email ); } public override Filter? DefineFilter() { return null; } public override SortOrder DefineSortOrder() { return new SortOrder(x => x.Name); } } }