JobDocumentSet.cs 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  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. [EditorSequence("Advanced", 4)]
  56. public JobITPLink Area { get; set; }
  57. [EditorSequence("Advanced", 5)]
  58. public DateTime Retired { get; set; }
  59. [ChildEntity(typeof(JobDocumentSetCurrentMileStone))]
  60. public LightJobDocumentSetMileStoneLink CurrentMileStone { get; set; }
  61. }
  62. public class JobDocumentSetCurrentMileStone : IChildEntityDefinition<JobDocumentSetMileStone>
  63. {
  64. public Filter<JobDocumentSetMileStone>? Filter { get; set; } = null;
  65. public SortOrder<JobDocumentSetMileStone>? Sort { get; set; }
  66. = new SortOrder<JobDocumentSetMileStone>(x => x.Type.Sequence, SortDirection.Descending).ThenBy(x => x.Created, SortDirection.Descending);
  67. public Expression<Func<JobDocumentSetMileStone, Guid>> Parent => x => x.DocumentSet.ID;
  68. }
  69. }