JobDocumentSet.cs 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Linq.Expressions;
  5. using InABox.Clients;
  6. using InABox.Core;
  7. namespace Comal.Classes
  8. {
  9. public enum PaperSize
  10. {
  11. A0,
  12. A1,
  13. A2,
  14. A3,
  15. A4,
  16. A5,
  17. Custom,
  18. NotSet
  19. }
  20. public class JobDocumentSet : Entity, IRemotable, IPersistent, IOneToMany<Job>, IJobDocumentSet, ILicense<ProjectManagementLicense>
  21. {
  22. [EntityRelationship(DeleteAction.Cascade)]
  23. [NullEditor]
  24. public JobLink Job { get; set; }
  25. [EntityRelationship(DeleteAction.Cascade)]
  26. [NullEditor]
  27. public JobDocumentSetFolderLink Folder { get; set; }
  28. [NullEditor]
  29. [EntityRelationship(DeleteAction.Cascade)]
  30. public JobDocumentSetLink Parent { get; set; }
  31. [CodeEditor(Visible = Visible.Default, Editable = Editable.Enabled)]
  32. [EditorSequence(1)]
  33. public string Code { get; set; }
  34. [TextBoxEditor]
  35. [EditorSequence(2)]
  36. public string Description { get; set; }
  37. [EditorSequence(3)]
  38. public JobDocumentSetDisciplineLink Discipline { get; set; }
  39. [EditorSequence(4)]
  40. public JobDocumentSetTypeLink Type { get; set; }
  41. [DateTimeEditor]
  42. [EditorSequence(5)]
  43. public DateTime Date { get; set; }
  44. [Caption("Assigned To")]
  45. [EditorSequence(6)]
  46. public EmployeeLink Employee { get; set; }
  47. [EnumLookupEditor(typeof(PaperSize))]
  48. [EditorSequence("Advanced", 1)]
  49. public PaperSize Size { get; set; } = PaperSize.NotSet;
  50. [CodeEditor(Editable = Editable.Enabled)]
  51. [EditorSequence("Advanced", 2)]
  52. public string Scale { get; set; } = "";
  53. [EditorSequence("Advanced", 3)]
  54. public JobDocumentSetCategoryLink Category { get; set; }
  55. private class JobITPLookup : LookupDefinitionGenerator<JobITP, JobDocumentSet>
  56. {
  57. public override Filter<JobITP> DefineFilter(JobDocumentSet[] items)
  58. {
  59. Guid id = items.FirstOrDefault()?.Job.ID ?? Guid.Empty;
  60. return new Filter<JobITP>(x => x.Job.ID).IsEqualTo(id);
  61. }
  62. public override Columns<JobDocumentSet> DefineFilterColumns()
  63. => new Columns<JobDocumentSet>(x => x.Job.ID);
  64. }
  65. [LookupDefinition(typeof(JobITPLookup))]
  66. [EditorSequence("Advanced", 4)]
  67. public JobITPLink Area { get; set; }
  68. [EditorSequence("Advanced", 5)]
  69. public DateTime Retired { get; set; }
  70. [ChildEntity(typeof(JobDocumentSetCurrentMileStone))]
  71. public LightJobDocumentSetMileStoneLink CurrentMileStone { get; set; }
  72. }
  73. public class JobDocumentSetCurrentMileStone : IChildEntityDefinition<JobDocumentSetMileStone>
  74. {
  75. public Filter<JobDocumentSetMileStone>? Filter { get; set; } = null;
  76. public SortOrder<JobDocumentSetMileStone>? Sort { get; set; }
  77. = new SortOrder<JobDocumentSetMileStone>(x => x.Type.Sequence, SortDirection.Descending).ThenBy(x => x.Created, SortDirection.Descending);
  78. public Expression<Func<JobDocumentSetMileStone, Guid>> Parent => x => x.DocumentSet.ID;
  79. }
  80. }