using System; using InABox.Core; namespace Comal.Classes { public interface ICustomerActivity { CustomerLink Customer { get; set; } ActivityLink Activity { get; set; } ActivityCharge Charge { get; set; } } [UserTracking(typeof(Customer))] public class CustomerActivity : Entity, IPersistent, IRemotable, ICustomerActivity, IManyToMany, IManyToMany, ILicense { [EditorSequence(1)] [EntityRelationship(DeleteAction.Cascade)] public CustomerLink Customer { get; set; } [EditorSequence(2)] [EntityRelationship(DeleteAction.Cascade)] public ActivityLink Activity { get; set; } [EditorSequence(3)] public ActivityCharge Charge { get; set; } } public class CustomerActivityUnionGenerator : AutoEntityUnionGenerator { protected override void Configure() { AddTable(); AddTable() .AddConstant(x => x.Customer.ID, Guid.Empty) .AddConstant(x=>x.Activity.ID, new Column(x=>x.ID)); } public override bool Distinct => false; public override Column[] IDColumns => new Column[] { new Column(x => x.Customer.ID), new Column(x => x.Activity.ID) }; } [AutoEntity(typeof(CustomerActivityUnionGenerator))] public class CustomerActivitySummary : Entity, IRemotable, IPersistent, ICustomerActivity, ILicense { public CustomerLink Customer { get; set; } public ActivityLink Activity { get; set; } public ActivityCharge Charge { get; set; } } }