using System; using System.Linq.Expressions; using InABox.Core; namespace Comal.Classes { [UserTracking(typeof(Job))] public class JobITP : Entity, IRemotable, IPersistent, IOneToMany, IStringAutoIncrement, ILicense, IExportable, IImportable, IMergeable { [NullEditor] [EditorSequence(0)] public JobLink Job { get; set; } [CodeEditor(Editable = Editable.Enabled)] [EditorSequence(1)] public string Code { get; set; } [TextBoxEditor] [EditorSequence(2)] public string Description { get; set; } [MemoEditor] [EditorSequence(3)] public string Comments { get; set; } [EditorSequence(4)] public EmployeeLink EmployeeLink { get; set; } [DateEditor] [EditorSequence(5)] public DateTime DueDate { get; set; } [Caption("ITP Form Type")] [EditorSequence(6)] public DigitalFormLink DigitalForm { get; set; } private class OpenFormsFormula : ComplexFormulaGenerator { public override IComplexFormulaNode GetFormula() => Count(x => x.Property(x => x.ID), new Filter(x => x.FormCompleted).IsEqualTo(DateTime.MinValue)) .WithLink(x => x.Parent.ID, x => x.ID); } [ComplexFormula(typeof(OpenFormsFormula))] [EditorSequence(7)] public int OpenForms { get; set; } private class ClosedFormsFormula : ComplexFormulaGenerator { public override IComplexFormulaNode GetFormula() => Count(x => x.Property(x => x.ID), new Filter(x => x.FormCompleted).IsNotEqualTo(DateTime.MinValue)) .WithLink(x => x.Parent.ID, x => x.ID); } [ComplexFormula(typeof(ClosedFormsFormula))] [EditorSequence(7)] public int ClosedForms { get; set; } public Expression> AutoIncrementField() { return x => x.Code; } public Filter AutoIncrementFilter() { return null; } public string AutoIncrementPrefix() => ""; public string AutoIncrementFormat() => "{0:D4}"; public override string ToString() { return string.Format("{0}: {1}", Code, Description); } } }