QuoteDesignItemGrid.cs 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. using System;
  2. using System.Linq;
  3. using Comal.Classes;
  4. using InABox.Core;
  5. using InABox.DynamicGrid;
  6. using InABox.Wpf;
  7. namespace PRSDesktop;
  8. public class QuoteDesignItemGrid : DynamicDataGrid<QuoteDesignItem>, IMasterDetailControl<QuoteDesign,QuoteDesignItem>
  9. {
  10. public QuoteDesign? Master { get; set; }
  11. public Filter<QuoteDesignItem> MasterDetailFilter => Master != null && Master.ID != Guid.Empty
  12. ? new Filter<QuoteDesignItem>(x => x.Design.ID).IsEqualTo(Master.ID)
  13. : new Filter<QuoteDesignItem>().None();
  14. public QuoteDesignItemGrid()
  15. {
  16. HiddenColumns.Add(x => x.Design.ID);
  17. HiddenColumns.Add(x => x.Design.Quote.ID);
  18. }
  19. protected override void DoReconfigure(FluentList<DynamicGridOption> options)
  20. {
  21. base.DoReconfigure(options);
  22. options.AddRange(DynamicGridOption.RecordCount, DynamicGridOption.SelectColumns);
  23. }
  24. protected override void Reload(Filters<QuoteDesignItem> criteria, Columns<QuoteDesignItem> columns, ref SortOrder<QuoteDesignItem>? sort, Action<CoreTable?, Exception?> action)
  25. {
  26. criteria.Add(MasterDetailFilter);
  27. base.Reload(criteria, columns, ref sort, action);
  28. }
  29. public override QuoteDesignItem CreateItem()
  30. {
  31. var result = base.CreateItem();
  32. result.Design.ID = Master?.ID ?? Guid.Empty;
  33. result.Design.Synchronise(Master ?? new QuoteDesign());
  34. return result;
  35. }
  36. // protected override IFilter? GetFilter()
  37. // {
  38. // var ids = CurrentGuids();
  39. // if (ids.Any())
  40. // return new Filter<QuoteTakeoff>(x => x.Quote.ID).IsEqualTo(Design.Quote.ID).And(x => x.ID).NotInList(CurrentGuids());
  41. // return new Filter<QuoteTakeoff>(x => x.Quote.ID).IsEqualTo(Design.Quote.ID);
  42. // }
  43. }