QuoteDesign.cs 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq.Expressions;
  4. using InABox.Core;
  5. namespace Comal.Classes
  6. {
  7. public class QuoteDesignSize : CoreAggregate<QuoteDesign, QuoteDesignItem, double>
  8. {
  9. public override Expression<Func<QuoteDesignItem, double>> Aggregate => QuoteDesignItem => QuoteDesignItem.Takeoff.Dimensions.Value;
  10. public override Dictionary<Expression<Func<QuoteDesignItem, object>>, Expression<Func<QuoteDesign, object>>> Links =>
  11. new Dictionary<Expression<Func<QuoteDesignItem, object>>, Expression<Func<QuoteDesign, object>>>()
  12. {
  13. { QuoteDesignItem => QuoteDesignItem.Design.ID, QuoteDesign => QuoteDesign.ID }
  14. };
  15. public override AggregateCalculation Calculation => AggregateCalculation.Sum;
  16. }
  17. [UserTracking(typeof(Quote))]
  18. public class QuoteDesign : Entity, IRemotable, IPersistent, ISequenceable, IQuoteDesign, IOneToMany<Quote>, ILicense<QuotesManagementLicense>
  19. {
  20. [NullEditor]
  21. [EntityRelationship(DeleteAction.Cascade)]
  22. public QuoteLink Quote { get; set; }
  23. [TextBoxEditor(Visible = Visible.Default)]
  24. [EditorSequence(1)]
  25. public string Description { get; set; }
  26. [Aggregate(typeof(QuoteDesignSize))]
  27. [DoubleEditor(Visible = Visible.Optional, Editable = Editable.Disabled)]
  28. [EditorSequence(2)]
  29. public double Size { get; set; }
  30. [NullEditor]
  31. public long Sequence { get; set; }
  32. protected override void Init()
  33. {
  34. base.Init();
  35. Quote = new QuoteLink();
  36. }
  37. }
  38. }