CustomerActivity.cs 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. using System;
  2. using InABox.Core;
  3. namespace Comal.Classes
  4. {
  5. public interface ICustomerActivity
  6. {
  7. CustomerLink Customer { get; set; }
  8. ActivityLink Activity { get; set; }
  9. ActivityCharge Charge { get; set; }
  10. }
  11. [UserTracking(typeof(Customer))]
  12. public class CustomerActivity :
  13. Entity, IPersistent, IRemotable,
  14. ICustomerActivity,
  15. IManyToMany<Customer, Activity>,
  16. IManyToMany<Activity, Customer>,
  17. ILicense<CoreLicense>
  18. {
  19. [EditorSequence(1)]
  20. [EntityRelationship(DeleteAction.Cascade)]
  21. public CustomerLink Customer { get; set; }
  22. [EditorSequence(2)]
  23. [EntityRelationship(DeleteAction.Cascade)]
  24. public ActivityLink Activity { get; set; }
  25. [EditorSequence(3)]
  26. public ActivityCharge Charge { get; set; }
  27. }
  28. public class CustomerActivityUnionGenerator : AutoEntityUnionGenerator<ICustomerActivity>
  29. {
  30. protected override void Configure()
  31. {
  32. AddTable<CustomerActivity>();
  33. AddTable<Assignment>()
  34. .AddConstant(x => x.Customer.ID, Guid.Empty)
  35. .AddConstant(x=>x.Activity.ID, new Column<Activity>(x=>x.ID));
  36. }
  37. public override bool Distinct => false;
  38. public override Column<ICustomerActivity>[] IDColumns => new Column<ICustomerActivity>[]
  39. {
  40. new Column<ICustomerActivity>(x => x.Customer.ID),
  41. new Column<ICustomerActivity>(x => x.Activity.ID)
  42. };
  43. }
  44. [AutoEntity(typeof(CustomerActivityUnionGenerator))]
  45. public class CustomerActivitySummary : Entity, IRemotable, IPersistent, ICustomerActivity, ILicense<CoreLicense>
  46. {
  47. public CustomerLink Customer { get; set; }
  48. public ActivityLink Activity { get; set; }
  49. public ActivityCharge Charge { get; set; }
  50. }
  51. }