using Comal.Classes; using InABox.Core; using System; using System.Collections.Generic; using System.Linq.Expressions; using System.Text; namespace Comal.Classes { public class ScanTagRoleEmployeeCrossGenerator : AutoEntityCrossGenerator { public override Expression> LeftProperty => x => x.Tag.ID; public override Expression> LeftMapping => x => x.Tag.ID; public override Expression> LeftLink => x => x.Role.ID; public override Expression> RightProperty => x => x.EmployeeLink.ID; public override Expression> RightMapping => x => x.Employee.ID; public override Expression> RightLink => x => x.RoleLink.ID; public override bool Distinct => true; public override Column[] IDColumns => new Column[] { new Column(x => x.Tag.ID), new Column(x => x.Employee.ID) }; } [AutoEntity(typeof(ScanTagRoleEmployeeCrossGenerator))] public class ScanTagRoleEmployee : Entity, IRemotable, IPersistent, IScanTagDistributionEmployee, ILicense { public EmployeeLink Employee { get; set; } public ScanTagLink Tag { get; set; } protected override void Init() { base.Init(); Employee = new EmployeeLink(); Tag = new ScanTagLink(); } } public interface IScanTagDistributionEmployee { public EmployeeLink Employee { get; set; } public ScanTagLink Tag { get; set; } } public class ScanTagDistributionUnionGenerator : AutoEntityUnionGenerator { protected override void Configure() { AddTable(); AddTable(); } public override bool Distinct => true; public override Column[] IDColumns { get; } = new Column[] { new Column(x => x.Employee.ID), new Column(x => x.Tag.ID) }; } [AutoEntity(typeof(ScanTagDistributionUnionGenerator))] public class ScanTagDistributionEmployee : Entity, IRemotable, IPersistent, IScanTagDistributionEmployee, ILicense { public EmployeeLink Employee { get; set; } public ScanTagLink Tag { get; set; } protected override void Init() { base.Init(); Employee = new EmployeeLink(); Tag = new ScanTagLink(); } } }