using System; using System.Collections.Generic; using System.Linq.Expressions; using InABox.Core; namespace Comal.Classes { public class ShipmentItemCount : CoreAggregate { public override Expression> Aggregate => x => x.ID; public override AggregateCalculation Calculation => AggregateCalculation.Count; public override Dictionary>, Expression>> Links => new Dictionary>, Expression>>() { { DeliveryItem => DeliveryItem.ShipmentLink.ID, Shipment => Shipment.ID } }; } [UserTracking(typeof(Delivery))] public class Shipment : Entity, IPersistent, IRemotable, ILicense { [UniqueCodeEditor(Visible = Visible.Default, Editable = Editable.Enabled)] [EditorSequence(1)] public string Code { get; set; } [TextBoxEditor] [EditorSequence(2)] public string Description { get; set; } [TextBoxEditor] [EditorSequence(3)] public string Type { get; set; } [CodeEditor(Editable = Editable.Disabled)] [EditorSequence(4)] public string BarCode { get; set; } = CoreUtils.RandomHexString(16); [EditorSequence(5)] [EntityRelationship(DeleteAction.SetNull)] public GPSTrackerLink TrackerLink { get; set; } [EditorSequence(6)] [EntityRelationship(DeleteAction.SetNull)] public DeliveryLink Delivery { get; set; } [EditorSequence(7)] [IntegerEditor(Editable = Editable.Hidden)] [Aggregate(typeof(ShipmentItemCount))] public int ItemCount { get; set; } [Obsolete("Replaced with GPSTrackerLink")] [NullEditor] public Guid GPSTrackerID { get; set; } public override string ToString() { return string.Format("{0}: {1}", Code, Description); } } }