using System; using System.Collections.Generic; using System.Linq.Expressions; using InABox.Core; namespace Comal.Classes { public class CostSheetDocumentCount : CoreAggregate { public override Expression> Aggregate => x => x.ID; public override AggregateCalculation Calculation => AggregateCalculation.Count; public override Dictionary>, Expression>> Links => new Dictionary>, Expression>>() { { CostSheetDocument => CostSheetDocument.EntityLink.ID, Delivery => Delivery.ID } }; } [UserTracking(typeof(Quote))] public class CostSheet : Entity, ICostSheet, IRemotable, IPersistent, IIssues, ILicense, IProblems { [UniqueCodeEditor(Visible = Visible.Default, Editable = Editable.Enabled)] [EditorSequence(1)] public string Code { get; set; } [TextBoxEditor] [EditorSequence(2)] public string Description { get; set; } [EntityRelationship(DeleteAction.SetNull)] [EditorSequence(3)] public CostSheetTypeLink Type { get; set; } [EntityRelationship(DeleteAction.SetNull)] [EditorSequence(4)] public CostSheetBrandLink Brand { get; set; } [CheckBoxEditor] [EditorSequence(5)] public bool Active { get; set; } = true; [EditorSequence(6)] public TaxCodeLink TaxCode { get; set; } [EditorSequence(7)] [CurrencyEditor] public double Price { get; set; } [Aggregate(typeof(CostSheetDocumentCount))] [IntegerEditor(Editable = Editable.Hidden)] [EditorSequence(6)] public int Documents { get; set; } [NullEditor] [Obsolete("Replaced with Problem", true)] public string Issues { get; set; } [EditorSequence("Issues", 1)] public ManagedProblem Problem { get; set; } [EditorSequence(6)] public DigitalFormLink Form { get; set; } public override string ToString() { return string.Format("{0}: {1}", Code, Description); } } public class DigitalFormCostSheetLookup : LookupDefinitionGenerator { public override Filter DefineFilter(CostSheet[] items) { return new Filter(x => x.Active).IsEqualTo(true).And(x => x.AppliesTo).IsEqualTo(nameof(Quote)); } public override Columns DefineFilterColumns() => new Columns(ColumnTypeFlags.Required); } }