ManagedProblem.cs 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  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. AddTable<DataEntryDocument>()
  49. .AliasField<String>(x=>x.Code, x=>x.Tag.Name)
  50. .AliasField<String>(x=>x.Description, x=>x.Note);
  51. }
  52. public override bool Distinct => false;
  53. public override Column<IManagedProblemSummary>[] IDColumns => new Column<IManagedProblemSummary>[]
  54. {
  55. new Column<IManagedProblemSummary>(x => x.ID)
  56. };
  57. }
  58. [UserTracking(typeof(Job))]
  59. [AutoEntity(typeof(ManagedProblemSummaryUnionGenerator))]
  60. public class Problems : Entity, IRemotable, IPersistent, IManagedProblemSummary, ILicense<CoreLicense>
  61. {
  62. public string Type { get; set; }
  63. public string Code { get; set; }
  64. public string Description { get; set; }
  65. public ManagedProblem Problem { get; set; }
  66. }
  67. }