using System; using System.Collections.Generic; using System.Linq.Expressions; using InABox.Core; namespace Comal.Classes { public class EquipmentDocumentCount : CoreAggregate, IExportable, IImportable, IMergeable { public override Expression> Aggregate => x => x.ID; public override AggregateCalculation Calculation => AggregateCalculation.Count; public override Dictionary>, Expression>> Links => new Dictionary>, Expression>>() { { EquipmentDocument => EquipmentDocument.EntityLink.ID, Equipment => Equipment.ID } }; } public class EquipmentKanbanCount : CoreAggregate, IExportable, IImportable, IMergeable { public override Expression> Aggregate => x => x.ID; public override AggregateCalculation Calculation => AggregateCalculation.Count; public override Dictionary>, Expression>> Links => new Dictionary>, Expression>>() { { Kanban => Kanban.Equipment.ID, Equipment => Equipment.ID } }; } [UserTracking("Equipment")] public class Equipment : Entity, IPersistent, IRemotable, ISchedulable, ILicense, IEquipment, IExportable, IImportable, IOneToMany { [UniqueCodeEditor(Visible = Visible.Default, Editable = Editable.Enabled)] [EditorSequence(1)] public string Code { get; set; } [TextBoxEditor] [EditorSequence(2)] public string Description { get; set; } [MemoEditor] [EditorSequence(3)] public string Notes { get; set; } [EditorSequence(4)] public string Type { get; set; } [EditorSequence(5)] public EquipmentGroupLink GroupLink { get; set; } [EditorSequence(6)] public ImageDocumentLink SpecificationSheet { get; set; } [DateEditor] [EditorSequence(7)] public DateTime Purchased { get; set; } [CurrencyEditor] [EditorSequence(8)] public double PurchasePrice { get; set; } [DateEditor] [EditorSequence(9)] public DateTime Disposed { get; set; } [CurrencyEditor] [EditorSequence(10)] public double DisposalPrice { get; set; } [EditorSequence(11)] public string SerialNumber { get; set; } [Obsolete("Replaced with ManufacturedDate")] [EditorSequence(12)] public int YearOfManufacture { get; set; } [DateEditor] [EditorSequence(13)] public DateTime ManufacturedDate { get; set; } public CustomerLink Customer { get; set; } [EntityRelationship(DeleteAction.SetNull)] [EditorSequence("Counters", 1)] public GPSTrackerLink TrackerLink { get; set; } [DoubleEditor] [EditorSequence("Counters", 2)] public double Hours { get; set; } [DoubleEditor] [EditorSequence("Counters", 3)] public double Distance { get; set; } [DoubleEditor] [EditorSequence("Counters", 4)] public double Counter1 { get; set; } [DoubleEditor] [EditorSequence("Counters", 5)] public double Counter2 { get; set; } [DoubleEditor] [EditorSequence("Counters", 6)] public double Counter3 { get; set; } [DoubleEditor] [EditorSequence("Counters", 7)] public double Counter4 { get; set; } [DoubleEditor] [EditorSequence("Counters", 8)] public double Counter5 { get; set; } [EditorSequence("Counters", 9)] public DigitalKeyLink DigitalKey { get; set; } [Aggregate(typeof(NextScheduleDue))] [DateTimeEditor(Editable = Editable.Hidden)] public DateTime NextSchedule { get; set; } [IntegerEditor(Editable = Editable.Hidden)] public int ActiveSchedules { get; set; } [Aggregate(typeof(EquipmentDocumentCount))] [IntegerEditor(Editable = Editable.Hidden)] public int Documents { get; set; } [Aggregate(typeof(EquipmentKanbanCount))] [IntegerEditor(Editable = Editable.Hidden)] public int Kanbans { get; set; } protected override void Init() { base.Init(); GroupLink = new EquipmentGroupLink(); SpecificationSheet = new ImageDocumentLink(); TrackerLink = new GPSTrackerLink(); DigitalKey = new DigitalKeyLink(); Customer = new CustomerLink(); } public override string ToString() { return string.Format("{0}: {1}", Code, Description); } static Equipment() { LinkedProperties.Register(x => x.TrackerLink, x => x.Hours, x => x.Hours); LinkedProperties.Register(x => x.TrackerLink, x => x.Distance, x => x.Distance); LinkedProperties.Register(x => x.TrackerLink, x => x.Counter1, x => x.Counter1); LinkedProperties.Register(x => x.TrackerLink, x => x.Counter2, x => x.Counter2); LinkedProperties.Register(x => x.TrackerLink, x => x.Counter3, x => x.Counter3); LinkedProperties.Register(x => x.TrackerLink, x => x.Counter4, x => x.Counter4); LinkedProperties.Register(x => x.TrackerLink, x => x.Counter5, x => x.Counter5); } } }