CustomerActivity.cs 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  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. protected override void Init()
  28. {
  29. base.Init();
  30. Customer = new CustomerLink();
  31. Activity = new ActivityLink();
  32. Charge = new ActivityCharge();
  33. }
  34. }
  35. public class CustomerActivityUnionGenerator : AutoEntityUnionGenerator<ICustomerActivity>
  36. {
  37. protected override void Configure()
  38. {
  39. AddTable<CustomerActivity>();
  40. AddTable<Assignment>()
  41. .AddConstant(x => x.Customer.ID, Guid.Empty)
  42. .AddConstant(x=>x.Activity.ID, new Column<Activity>(x=>x.ID));
  43. }
  44. public override bool Distinct => false;
  45. public override Column<ICustomerActivity>[] IDColumns => new Column<ICustomerActivity>[]
  46. {
  47. new Column<ICustomerActivity>(x => x.Customer.ID),
  48. new Column<ICustomerActivity>(x => x.Activity.ID)
  49. };
  50. }
  51. [AutoEntity(typeof(CustomerActivityUnionGenerator))]
  52. public class CustomerActivitySummary : Entity, IRemotable, IPersistent, ICustomerActivity, ILicense<CoreLicense>
  53. {
  54. public CustomerLink Customer { get; set; }
  55. public ActivityLink Activity { get; set; }
  56. public ActivityCharge Charge { get; set; }
  57. protected override void Init()
  58. {
  59. base.Init();
  60. Customer = new CustomerLink();
  61. Activity = new ActivityLink();
  62. Charge = new ActivityCharge();
  63. }
  64. }
  65. }