using InABox.Core; using System; using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; using System.Text; namespace Comal.Classes { public class JobProductMapping : Entity, IRemotable, IPersistent, ILicense { [EntityRelationship(DeleteAction.Cascade)] [NullEditor] public JobLink Job { get; set; } [CodeEditor(Editable = Editable.Enabled, Visible = Visible.Default)] [EditorSequence(1)] public string Code { get; set; } = ""; [MemoEditor(Visible = Visible.Default)] [EditorSequence(2)] public string Description { get; set; } = ""; [EntityRelationship(DeleteAction.SetNull)] [EditorSequence(3)] public ProductLink Product { get; set; } private class JobDocumentSetLookup : LookupDefinitionGenerator { public override Filter? DefineFilter(JobProductMapping[] items) { var ids = items.Select(x => x.Job.ID).Distinct().ToArray(); return ids.Any() ? new Filter(x => x.Job.ID).InList(ids) : new Filter().None(); } public override Columns DefineFilterColumns() { return Columns.None().Add(x => x.ID) .Add(x=>x.Job.ID) .Add(x => x.Job.JobNumber) .Add(x => x.Job.Name); } } [LookupDefinition(typeof(JobDocumentSetLookup))] [EntityRelationship(DeleteAction.SetNull)] [EditorSequence(3)] public JobDocumentSetLink JobDocumentSet { get; set; } } }