ProductTreatment.cs 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. using InABox.Core;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Text;
  6. namespace Comal.Classes
  7. {
  8. public class ProductTreatment : Entity, IManyToMany<Product, TreatmentType>, IRemotable, IPersistent, ILicense<ProductManagementLicense>
  9. {
  10. [NullEditor]
  11. public ProductLink Product { get; set; }
  12. private class TreatmentTypeLookup : LookupDefinitionGenerator<TreatmentType, ProductTreatment>
  13. {
  14. public override Filter<TreatmentType>? DefineFilter(ProductTreatment[] items)
  15. {
  16. if (items.Length != 1) return Filter.None<TreatmentType>();
  17. var item = items[0];
  18. var productID = item.Product.ID;
  19. var currentTreatment = item.TreatmentType.ID;
  20. return new Filter<TreatmentType>(x => x.ID)
  21. .NotInQuery(new Filter<ProductTreatment>(x => x.Product.ID).IsEqualTo(productID), x => x.TreatmentType.ID)
  22. .Or(x => x.ID).IsEqualTo(currentTreatment);
  23. }
  24. public override Columns<ProductTreatment> DefineFilterColumns()
  25. {
  26. return Columns.None<ProductTreatment>().Add(x => x.Product.ID).Add(x => x.TreatmentType.ID);
  27. }
  28. }
  29. [EditorSequence(1)]
  30. [LookupDefinition(typeof(TreatmentTypeLookup))]
  31. public TreatmentTypeLink TreatmentType { get; set; }
  32. [EditorSequence(2)]
  33. [DoubleEditor]
  34. public double Parameter { get; set; }
  35. }
  36. }