JobDocumentSetFolder.cs 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq.Expressions;
  4. using InABox.Core;
  5. namespace Comal.Classes
  6. {
  7. public interface IJobDocumentSetFolder
  8. {
  9. String Name { get; set; }
  10. }
  11. public class JobDocumentSetFolderDocumentCount : CoreAggregate<JobDocumentSetFolder, JobDocumentSet, Guid>
  12. {
  13. public override Expression<Func<JobDocumentSet, Guid>> Aggregate => x => x.ID;
  14. public override AggregateCalculation Calculation => AggregateCalculation.Count;
  15. public override Dictionary<Expression<Func<JobDocumentSet, object>>, Expression<Func<JobDocumentSetFolder, object>>> Links =>
  16. new Dictionary<Expression<Func<JobDocumentSet, object>>, Expression<Func<JobDocumentSetFolder, object>>>()
  17. {
  18. { JobDocumentSet => JobDocumentSet.Folder.ID, JobDocumentSetFolder => JobDocumentSetFolder.ID }
  19. };
  20. }
  21. public class JobDocumentSetFolder : Entity, IRemotable, IPersistent, IJobDocumentSetFolder, IOneToMany<Job>, ILicense<ProjectManagementLicense>
  22. {
  23. [EntityRelationship(DeleteAction.Cascade)]
  24. [NullEditor]
  25. public JobLink Job { get; set; }
  26. [NullEditor]
  27. [EntityRelationship(DeleteAction.Cascade)]
  28. public JobDocumentSetFolderLink Parent { get; set; }
  29. [TextBoxEditor]
  30. [EditorSequence(1)]
  31. public String Name { get; set; }
  32. [NullEditor]
  33. [Aggregate(typeof(JobDocumentSetFolderDocumentCount))]
  34. public int Documents { get; set; }
  35. }
  36. public class JobDocumentSetFolderLink : EntityLink<JobDocumentSetFolder>, IJobDocumentSetFolder
  37. {
  38. [NullEditor]
  39. public override Guid ID { get; set; }
  40. public string Name { get; set; }
  41. }
  42. }