using System; using System.Collections.Generic; using System.Linq.Expressions; using InABox.Core; namespace Comal.Classes { public class ManufacturingTemplateTime : CoreAggregate { public override Expression> Aggregate => x => x.Time; public override AggregateCalculation Calculation => AggregateCalculation.Sum; public override Dictionary>, Expression>> Links => new Dictionary>, Expression>>() { { ManufacturingTemplateStage => ManufacturingTemplateStage.Template.ID, ManufacturingTemplate => ManufacturingTemplate.ID } }; } public class ManufacturingTemplateStages : CoreAggregate { public override Expression> Aggregate => x => x.ID; public override AggregateCalculation Calculation => AggregateCalculation.Count; public override Dictionary>, Expression>> Links => new Dictionary>, Expression>>() { { ManufacturingTemplateStage => ManufacturingTemplateStage.Template.ID, ManufacturingTemplate => ManufacturingTemplate.ID } }; } [UserTracking(typeof(ManufacturingPacket))] public class ManufacturingTemplate : Entity, IRemotable, IPersistent, ILicense { [EditorSequence(1)] public ManufacturingFactoryLink Factory { get; set; } [EditorSequence(2)] [UniqueCodeEditor(Visible = Visible.Default, Editable = Editable.Enabled)] public string Code { get; set; } [EditorSequence(3)] [TextBoxEditor] public string Name { get; set; } [EditorSequence(4)] [EnumLookupEditor(typeof(BarcodeType))] public BarcodeType Barcode { get; set; } //[EditorType(EditorClass.)] //public PackableList CustomAttributes { get; set; } [EditorSequence(5)] [CheckBoxEditor] public bool Active { get; set; } [IntegerEditor(Editable = Editable.Hidden)] [Aggregate(typeof(ManufacturingTemplateStages))] public int Stages { get; set; } [TimeOfDayEditor(Editable = Editable.Hidden)] [Aggregate(typeof(ManufacturingTemplateTime))] public TimeSpan Time { get; set; } protected override void Init() { base.Init(); Factory = new ManufacturingFactoryLink(); Active = true; } public override string ToString() { return string.Format("{0}: {1}", Code, Name); } } }