| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 | 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<Customer, Activity>,        IManyToMany<Activity, Customer>,        ILicense<CoreLicense>    {        [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; }        protected override void Init()        {            base.Init();            Customer = new CustomerLink();            Activity = new ActivityLink();            Charge = new ActivityCharge();        }    }    public class CustomerActivityUnionGenerator : AutoEntityUnionGenerator<ICustomerActivity>    {        protected override void Configure()        {            AddTable<CustomerActivity>();            AddTable<Assignment>()                .AddConstant(x => x.Customer.ID, Guid.Empty)                .AddConstant(x=>x.Activity.ID, new Column<Activity>(x=>x.ID));        }        public override bool Distinct => false;        public override Column<ICustomerActivity>[] IDColumns => new Column<ICustomerActivity>[]        {            new Column<ICustomerActivity>(x => x.Customer.ID),            new Column<ICustomerActivity>(x => x.Activity.ID)        };    }    [AutoEntity(typeof(CustomerActivityUnionGenerator))]    public class CustomerActivitySummary : Entity, IRemotable, IPersistent, ICustomerActivity, ILicense<CoreLicense>    {        public CustomerLink Customer { get; set; }                public ActivityLink Activity { get; set; }                public ActivityCharge Charge { get; set; }        protected override void Init()        {            base.Init();            Customer = new CustomerLink();            Activity = new ActivityLink();            Charge = new ActivityCharge();        }    }}
 |