| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 | using System;using System.Linq.Expressions;using InABox.Core;namespace Comal.Classes{    [UserTracking(typeof(Job))]    public class JobITP : Entity, IRemotable, IPersistent, IOneToMany<Job>, IStringAutoIncrement<JobITP>, ILicense<ProjectManagementLicense>,        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<JobITP, int>        {            public override IComplexFormulaNode<JobITP, int> GetFormula() =>                Count<JobITPForm, Guid>(x => x.Property(x => x.ID),                    new Filter<JobITPForm>(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<JobITP, int>        {            public override IComplexFormulaNode<JobITP, int> GetFormula() =>                Count<JobITPForm, Guid>(x => x.Property(x => x.ID),                    new Filter<JobITPForm>(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<Func<JobITP, string>> AutoIncrementField() => x => x.Code;        public Filter<JobITP> AutoIncrementFilter() => null;        public int AutoIncrementDefault() => 1;        public string AutoIncrementPrefix() => "";        public string AutoIncrementFormat() => "{0:D4}";        public override string ToString()        {            return string.Format("{0}: {1}", Code, Description);        }    }}
 |