using System; using System.Collections.Generic; using InABox.Core; namespace Comal.Classes { public class JobRetentionType : Entity, IRemotable, IPersistent, ILicense, ISequenceable { [TextBoxEditor] [EditorSequence(1)] public string Description { get; set; } [DoubleEditor] [EditorSequence(2)] public double Rate { get; set; } [DoubleEditor] [EditorSequence(3)] public double Maximum { get; set; } [DoubleEditor] [EditorSequence(4)] public double Completion { get; set; } [IntegerEditor] [EditorSequence(5)] public int Release { get; set; } [CheckBoxEditor] [EditorSequence(6)] public bool IncludeVariations { get; set; } [NullEditor] public long Sequence { get; set; } } public class JobRetentionTypeLink : EntityLink { [LookupEditor(typeof(JobRetentionType))] public override Guid ID { get; set; } [TextBoxEditor(Visible = Visible.Optional, Editable = Editable.Hidden)] [EditorSequence(1)] public string Description { get; set; } [DoubleEditor(Visible = Visible.Hidden, Editable = Editable.Hidden)] [EditorSequence(2)] public double Rate { get; set; } [DoubleEditor(Visible = Visible.Hidden, Editable = Editable.Hidden)] [EditorSequence(3)] public double Maximum { get; set; } [DoubleEditor(Visible = Visible.Hidden, Editable = Editable.Hidden)] [EditorSequence(4)] public double Completion { get; set; } [IntegerEditor(Visible = Visible.Hidden, Editable = Editable.Hidden)] [EditorSequence(5)] public int Release { get; set; } [CheckBoxEditor(Visible = Visible.Hidden, Editable = Editable.Hidden)] [EditorSequence(6)] public bool IncludeVariations { get; set; } } public class JobRetentionTypeLookups : ILookupDefinition { public SortOrder? DefineSortOrder() { return new SortOrder(x => x.Sequence); } public Filter? DefineFilter() { return null; } public Columns DefineColumns() { return Columns.All(); } public Columns RequiredColumns() { return Columns.All(); } public string FormatLookup(Dictionary values, IEnumerable exclude) { return $"{values["Description"]}"; } } public class JobRetention : EnclosedEntity { [EditorSequence(1)] public JobRetentionTypeLink Type { get; set; } [DoubleEditor] [EditorSequence(2)] public double Rate { get; set; } [DoubleEditor] [EditorSequence(3)] public double Maximum { get; set; } [DoubleEditor] [EditorSequence(4)] public double Completion { get; set; } [IntegerEditor] [EditorSequence(5)] public int Release { get; set; } [CheckBoxEditor] [EditorSequence(6)] public bool IncludeVariations { get; set; } static JobRetention() { LinkedProperties.Register(x => x.Type, x => x.Rate, x => x.Rate); LinkedProperties.Register(x => x.Type, x => x.Maximum, x => x.Maximum); LinkedProperties.Register(x => x.Type, x => x.Completion, x => x.Completion); LinkedProperties.Register(x => x.Type, x => x.Release, x => x.Release); LinkedProperties.Register(x => x.Type, x => x.IncludeVariations, x => x.IncludeVariations); } } }