using System; using System.Linq.Expressions; using InABox.Core; namespace Comal.Classes { [UserTracking(typeof(Job))] public class JobRequisition : Entity, IRemotable, IPersistent, INumericAutoIncrement, IJobMaterialRequisition, ILicense, IChildEntityLookup { [NullEditor] [EntityRelationship(DeleteAction.Cascade)] public JobLink Job { get; set; } [IntegerEditor(Visible = Visible.Default, Editable = Editable.Disabled)] [EditorSequence(1)] public int Number { get; set; } [TextBoxEditor(Visible = Visible.Default)] [EditorSequence(2)] public string Description { get; set; } = ""; [MemoEditor(Visible = Visible.Optional)] [EditorSequence(3)] public string Notes { get; set; } = ""; [DateEditor(Visible = Visible.Default)] [EditorSequence(4)] public DateTime DueDate { get; set; } [NullEditor] [Obsolete("Replaced with Approved", true)] public DateTime Date { get; set; } [TimestampEditor(Visible = Visible.Default)] [EditorSequence(5)] [LoggableProperty] public DateTime Approved { get; set; } public Expression> AutoIncrementField() { return x => x.Number; } public Filter AutoIncrementFilter() { return new Filter(x => x.Job.ID).IsEqualTo(Job.ID); } } internal class JobRequisitionJobLookup : LookupDefinitionGenerator { public override Filter DefineFilter(Job[] items) { if (items.Length == 1) return new Filter(x => x.Job.ID).IsEqualTo(items[0].ID); return new Filter(x => x.ID).IsEqualTo(CoreUtils.FullGuid); } public override Columns DefineFilterColumns() => Columns.None().Add(x => x.ID); } }