| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 | using System.Collections.Generic;using System.Linq;using System.Text;using InABox.Core;namespace Comal.Classes{    public class StockHoldingLookups : EntityLookup<StockHolding>, ILookupDefinition<StockHolding, RequisitionItem>    {        public Filter<StockHolding> DefineFilter(RequisitionItem[] items)        {            var item = items?.SingleOrDefault();            if (item == null)                return DefineFilter();            return new Filter<StockHolding>(x => x.Product.ID).IsEqualTo(item.Product.ID)                .And(x => x.Style.ID).IsEqualTo(item.Style.ID)                .And(x => x.Qty).IsGreaterThan(0.0F);        }        Columns<RequisitionItem> ILookupDefinition<StockHolding, RequisitionItem>.DefineFilterColumns()            => new Columns<RequisitionItem>(x => x.Product.ID).Add(x => x.Style.ID);        public override Columns<StockHolding> DefineColumns()        {            return base.DefineColumns()                .Add(x => x.Location.Code)                .Add(x => x.Location.Description)                .Add(x => x.Style.Description)                .Add(x => x.Job.JobNumber)                .Add(x => x.Units)                .Add(x => x.Dimensions.UnitSize);        }        private bool HasValue(Dictionary<string, object?> values, string key)        {            return values.ContainsKey(key) && values[key] != null && !string.IsNullOrWhiteSpace(values[key] as string);        }        public override string FormatLookup(Dictionary<string, object?> values, IEnumerable<string> exclude)        {            var result = new StringBuilder();            result.AppendFormat("{0}: {1} @ {2} {3}", values["Location.Description"], values["Units"], values["UnitSize"],                values["Product.Units.Description"]);            if (HasValue(values, "Style.Description"))                result.AppendFormat(" ({0})", values["Style.Description"]);            if (HasValue(values, "Job.JobNumber"))                result.AppendFormat(" - Job {0}", values["Job.JobNumber"]);            return result.ToString();        }        public override Filter<StockHolding> DefineFilter()        {            return new Filter<StockHolding>(x => x.ID).IsEqualTo(CoreUtils.FullGuid);        }        public override SortOrder<StockHolding> DefineSortOrder()        {            return new SortOrder<StockHolding>(x => x.Location.Code).ThenBy(x => x.Job.JobNumber);        }    }}
 |