using System; using System.Linq; using System.Threading; using Comal.Classes; using InABox.Core; using InABox.DynamicGrid; using InABox.Wpf; namespace PRSDesktop { public class JobOrderGrid : DynamicDataGrid, IMasterDetailControl, IDataModelSource { public Job? Master { get; set; } public Filter MasterDetailFilter => (Master?.ID ?? Guid.Empty) != Guid.Empty ? new Filter(x => x.Job.ID).IsEqualTo(Master.ID) : new Filter().None(); public JobOrderGrid() { ColumnsTag = "JobOrders"; HiddenColumns.Add(x => x.PurchaseOrderLink.SupplierLink.ID); HiddenColumns.Add(x => x.PurchaseOrderLink.Category.ID); HiddenColumns.Add(x => x.ID); HiddenColumns.Add(x => x.Product.ID); HiddenColumns.Add(x => x.Product.Code); HiddenColumns.Add(x => x.Product.Name); HiddenColumns.Add(x => x.Description); HiddenColumns.Add(x => x.TaxCode.ID); HiddenColumns.Add(x => x.TaxCode.Code); HiddenColumns.Add(x => x.TaxCode.Description); HiddenColumns.Add(x => x.TaxCode.Rate); HiddenColumns.Add(x => x.TaxRate); HiddenColumns.Add(x => x.ExTax); HiddenColumns.Add(x => x.Tax); HiddenColumns.Add(x => x.IncTax); HiddenColumns.Add(x => x.BillLine.ID); HiddenColumns.Add(x => x.Consignment.ID); HiddenColumns.Add(x => x.Product.DigitalForm.ID); HiddenColumns.Add(x => x.Product.DigitalForm.Description); HiddenColumns.Add(x => x.PurchaseOrderLink.SupplierLink.Code); HiddenColumns.Add(x => x.PurchaseOrderLink.SupplierLink.Name); } protected override void DoReconfigure(DynamicGridOptions options) { base.DoReconfigure(options); options.RecordCount = true; options.SelectColumns = true; options.FilterRows = true; options.MultiSelect = true; options.ExportData = true; } public event DataModelUpdateEvent? OnUpdateDataModel; public string SectionName => "Job Orders"; public DataModel DataModel(Selection selection) { var ids = ExtractValues(x => x.ID, selection).ToArray(); return new BaseDataModel(new Filter(x => x.ID).InList(ids)); } protected override void Reload( Filters criteria, Columns columns, ref SortOrder? sort, CancellationToken token, Action action) { criteria.Add(MasterDetailFilter); base.Reload(criteria, columns, ref sort, token, action); } } }