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