using InABox.Core; using System; using System.Linq; namespace Comal.Classes { [UserTracking(typeof(Product))] public class ProductStyle : Entity, IRemotable, IPersistent, IProductStyle, ILicense, IMergeable, IIssues, IProblems { [EditorSequence(1)] [UniqueCodeEditor(Visible = Visible.Default, Editable = Editable.Enabled)] public string Code { get; set; } = ""; [EditorSequence(2)] [TextBoxEditor] public string Description { get; set; } = ""; [EditorSequence(3)] [DataModelTableName("Image")] public ImageDocumentLink Image { get; set; } private class TreatmentTypeLookup : LookupDefinitionGenerator { public override Filter? DefineFilter(Product[] items) { return new Filter(x => x.Active).IsEqualTo(true); } } [LookupDefinition(typeof(TreatmentTypeLookup))] [EditorSequence(4)] public TreatmentTypeLink TreatmentType { get; set; } [NullEditor] [Obsolete("Replaced with Problem", true)] public string Issues { get; set; } [EditorSequence("Issues", 1)] public ManagedProblem Problem { get; set; } private class TreatmentProductLookup : LookupDefinitionGenerator { public override Filter? DefineFilter(ProductStyle[] items) { var treatmentID = items.Select(x => x.TreatmentType.ID).SingleOrDefault(); if(treatmentID == Guid.Empty) { return Filter.None(); } else { return new Filter(x => x.TreatmentType.ID).IsEqualTo(treatmentID); } } public override Columns DefineFilterColumns() { return Columns.None().Add(x => x.TreatmentType.ID); } } [LookupDefinition(typeof(TreatmentProductLookup))] public ProductLink ManufacturingTreatmentProduct { get; set; } [LookupDefinition(typeof(TreatmentProductLookup))] public ProductLink StockTreatmentProduct { get; set; } public override string ToString() => $"{Code}: {Description}"; } }