ScanTagDistributionEmployee.cs 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. using Comal.Classes;
  2. using InABox.Core;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Linq.Expressions;
  6. using System.Text;
  7. namespace Comal.Classes
  8. {
  9. public class ScanTagRoleEmployeeCrossGenerator : AutoEntityCrossGenerator<IScanTagDistributionEmployee, ScanTagRole, EmployeeRole>
  10. {
  11. public override Expression<Func<ScanTagRole, Guid>> LeftProperty => x => x.Tag.ID;
  12. public override Expression<Func<IScanTagDistributionEmployee, Guid>> LeftMapping => x => x.Tag.ID;
  13. public override Expression<Func<ScanTagRole, Guid>> LeftLink => x => x.Role.ID;
  14. public override Expression<Func<EmployeeRole, Guid>> RightProperty => x => x.EmployeeLink.ID;
  15. public override Expression<Func<IScanTagDistributionEmployee, Guid>> RightMapping => x => x.Employee.ID;
  16. public override Expression<Func<EmployeeRole, Guid>> RightLink => x => x.RoleLink.ID;
  17. public override bool Distinct => true;
  18. public override Column<IScanTagDistributionEmployee>[] IDColumns => new Column<IScanTagDistributionEmployee>[]
  19. {
  20. new Column<IScanTagDistributionEmployee>(x => x.Tag.ID),
  21. new Column<IScanTagDistributionEmployee>(x => x.Employee.ID)
  22. };
  23. }
  24. [AutoEntity(typeof(ScanTagRoleEmployeeCrossGenerator))]
  25. public class ScanTagRoleEmployee : Entity, IRemotable, IPersistent, IScanTagDistributionEmployee, ILicense<DocumentScannerLicense>
  26. {
  27. public EmployeeLink Employee { get; set; }
  28. public ScanTagLink Tag { get; set; }
  29. protected override void Init()
  30. {
  31. base.Init();
  32. Employee = new EmployeeLink();
  33. Tag = new ScanTagLink();
  34. }
  35. }
  36. public interface IScanTagDistributionEmployee
  37. {
  38. public EmployeeLink Employee { get; set; }
  39. public ScanTagLink Tag { get; set; }
  40. }
  41. public class ScanTagDistributionUnionGenerator : AutoEntityUnionGenerator<IScanTagDistributionEmployee>
  42. {
  43. protected override void Configure()
  44. {
  45. AddTable<ScanTagEmployee>();
  46. AddTable<ScanTagRoleEmployee>();
  47. }
  48. public override bool Distinct => true;
  49. public override Column<IScanTagDistributionEmployee>[] IDColumns { get; } = new Column<IScanTagDistributionEmployee>[]
  50. {
  51. new Column<IScanTagDistributionEmployee>(x => x.Employee.ID),
  52. new Column<IScanTagDistributionEmployee>(x => x.Tag.ID)
  53. };
  54. }
  55. [AutoEntity(typeof(ScanTagDistributionUnionGenerator))]
  56. public class ScanTagDistributionEmployee : Entity, IRemotable, IPersistent, IScanTagDistributionEmployee, ILicense<DocumentScannerLicense>
  57. {
  58. public EmployeeLink Employee { get; set; }
  59. public ScanTagLink Tag { get; set; }
  60. protected override void Init()
  61. {
  62. base.Init();
  63. Employee = new EmployeeLink();
  64. Tag = new ScanTagLink();
  65. }
  66. }
  67. }