using System; using System.Linq; using Comal.Classes; using InABox.Core; using InABox.DynamicGrid; using InABox.Wpf; namespace PRSDesktop; public class QuoteDesignItemGrid : DynamicDataGrid, IMasterDetailControl { public QuoteDesign? Master { get; set; } public Filter MasterDetailFilter => Master != null && Master.ID != Guid.Empty ? new Filter(x => x.Design.ID).IsEqualTo(Master.ID) : new Filter().None(); public QuoteDesignItemGrid() { HiddenColumns.Add(x => x.Design.ID); HiddenColumns.Add(x => x.Design.Quote.ID); } protected override void DoReconfigure(FluentList options) { base.DoReconfigure(options); options.AddRange(DynamicGridOption.RecordCount, DynamicGridOption.SelectColumns); } protected override void Reload(Filters criteria, Columns columns, ref SortOrder? sort, Action action) { criteria.Add(MasterDetailFilter); base.Reload(criteria, columns, ref sort, action); } public override QuoteDesignItem CreateItem() { var result = base.CreateItem(); result.Design.ID = Master?.ID ?? Guid.Empty; result.Design.Synchronise(Master ?? new QuoteDesign()); return result; } // protected override IFilter? GetFilter() // { // var ids = CurrentGuids(); // if (ids.Any()) // return new Filter(x => x.Quote.ID).IsEqualTo(Design.Quote.ID).And(x => x.ID).NotInList(CurrentGuids()); // return new Filter(x => x.Quote.ID).IsEqualTo(Design.Quote.ID); // } }