ManagedProblem.cs 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. using System;
  2. using System.Linq;
  3. using InABox.Core;
  4. namespace Comal.Classes
  5. {
  6. public class ManagedProblem : Problem
  7. {
  8. [EditorSequence(2)]
  9. [Caption("Assigned To", IncludePath = false)]
  10. public EmployeeLookupLink AssignedTo { get; set; }
  11. }
  12. public interface IManagedProblemSummary
  13. {
  14. Guid ID { get; set; }
  15. string Type { get; set; }
  16. string Code { get; set; }
  17. string Description { get; set; }
  18. ManagedProblem Problem { get; set; }
  19. }
  20. public class ManagedProblemSummaryUnionGenerator : AutoEntityUnionGenerator<IManagedProblemSummary>
  21. {
  22. private AutoEntityUnionTable<IManagedProblemSummary,T> AddTable<T>() where T : IProblems<ManagedProblem>
  23. {
  24. return AddTable<T>(new Filter<T>(x => x.Problem.Notes).IsNotEqualTo(null).And(x => x.Problem.Resolved)
  25. .IsEqualTo(DateTime.MinValue))
  26. .AddConstant<String>(x => x.Type, typeof(T).Name.Split('.').Last());
  27. }
  28. protected override void Configure()
  29. {
  30. AddTable<Bill>()
  31. .AliasField<String>(x=>x.Code, x=>x.Number)
  32. .AliasField<String>(x=>x.Description, x=>x.SupplierLink.Name);
  33. AddTable<Activity>();
  34. AddTable<ProductStyle>();
  35. AddTable<Product>()
  36. .AliasField(x=>x.Description, x=>x.Name);
  37. AddTable<CostSheet>();
  38. AddTable<Kit>();
  39. AddTable<JobBillOfMaterialsItem>()
  40. .AliasField(x => x.Code, "%s / %s", x => x.BillOfMaterials.Job.JobNumber, x => x.BillOfMaterials.Number)
  41. .AliasField(x => x.Description, "%s / %s", x => x.Product.Code, x => x.Product.Name);
  42. AddTable<JobRequisitionItem>()
  43. .AliasField(x=>x.Code, "%s / %s", x=>x.Requisition.Job.JobNumber, x=>x.Requisition.Number)
  44. .AliasField(x=>x.Description, "%s / %s", x=>x.Product.Code, x=>x.Product.Name);
  45. AddTable<ManufacturingPacket>()
  46. .AliasField<String>(x=>x.Code, x=>x.Serial)
  47. .AliasField<String>(x=>x.Description, x=>x.Title);
  48. }
  49. public override bool Distinct => false;
  50. public override Column<IManagedProblemSummary>[] IDColumns => new Column<IManagedProblemSummary>[]
  51. {
  52. new Column<IManagedProblemSummary>(x => x.ID)
  53. };
  54. }
  55. [UserTracking(typeof(Job))]
  56. [AutoEntity(typeof(ManagedProblemSummaryUnionGenerator))]
  57. public class Problems : Entity, IRemotable, IPersistent, IManagedProblemSummary, ILicense<CoreLicense>
  58. {
  59. public string Type { get; set; }
  60. public string Code { get; set; }
  61. public string Description { get; set; }
  62. public ManagedProblem Problem { get; set; }
  63. }
  64. }