ProductInstanceLookups.cs 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. using InABox.Core;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Text;
  5. namespace Comal.Classes
  6. {
  7. public class ProductInstanceLookups : EntityLookup<ProductInstance>, ILookupDefinition<ProductInstance, Product>
  8. {
  9. #region Default Lookups (should always be empty)
  10. public override Filter<ProductInstance>? DefineFilter()
  11. {
  12. return new Filter<ProductInstance>().None();
  13. }
  14. public override SortOrder<ProductInstance> DefineSortOrder()
  15. {
  16. return new SortOrder<ProductInstance>(x => x.Sequence);
  17. }
  18. #endregion
  19. public override string FormatLookup(Dictionary<string, object?> values, IEnumerable<string> exclude)
  20. {
  21. List<object> result = new List<object>();
  22. if (values.TryGetValue("Dimensions.UnitSize", out object size) && !String.IsNullOrWhiteSpace(size?.ToString()))
  23. result.Add(size);
  24. if (values.TryGetValue("Style.Description", out object description) && !String.IsNullOrWhiteSpace(description?.ToString()))
  25. result.Add(description);
  26. return String.Join(" ", result);
  27. }
  28. #region Lookups for Products
  29. public Filter<ProductInstance>? DefineFilter(Product[] items)
  30. {
  31. if (items.Length == 0)
  32. {
  33. return new Filter<ProductInstance>().None();
  34. }
  35. else
  36. {
  37. var filter = new Filters<ProductInstance>();
  38. foreach (var item in items)
  39. {
  40. filter.Add(new Filter<ProductInstance>(x => x.Product.ID).IsEqualTo(item.ID));
  41. }
  42. return filter.Combine();
  43. }
  44. }
  45. public Columns<Product> DefineFilterColumns() => new Columns<Product>(x => x.ID);
  46. #endregion
  47. }
  48. }