JobRequisition.cs 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. using System;
  2. using System.Linq.Expressions;
  3. using InABox.Core;
  4. namespace Comal.Classes
  5. {
  6. [UserTracking(typeof(Job))]
  7. public class JobRequisition : Entity, IRemotable, IPersistent, INumericAutoIncrement<JobRequisition>, IJobMaterialRequisition,
  8. ILicense<ProjectManagementLicense>,
  9. IChildEntityLookup<Job, JobRequisition, JobRequisitionJobLookup>
  10. {
  11. [NullEditor]
  12. [EntityRelationship(DeleteAction.Cascade)]
  13. public JobLink Job { get; set; }
  14. [IntegerEditor(Visible = Visible.Default, Editable = Editable.Disabled)]
  15. [EditorSequence(1)]
  16. public int Number { get; set; }
  17. [TextBoxEditor(Visible = Visible.Default)]
  18. [EditorSequence(2)]
  19. public string Description { get; set; } = "";
  20. [MemoEditor(Visible = Visible.Optional)]
  21. [EditorSequence(3)]
  22. public string Notes { get; set; } = "";
  23. [DateEditor(Visible = Visible.Default)]
  24. [EditorSequence(4)]
  25. public DateTime DueDate { get; set; }
  26. [NullEditor]
  27. [Obsolete("Replaced with Approved", true)]
  28. public DateTime Date { get; set; }
  29. [TimestampEditor(Visible = Visible.Default)]
  30. [EditorSequence(5)]
  31. [LoggableProperty]
  32. public DateTime Approved { get; set; }
  33. public Expression<Func<JobRequisition, int>> AutoIncrementField()
  34. {
  35. return x => x.Number;
  36. }
  37. public Filter<JobRequisition> AutoIncrementFilter()
  38. {
  39. return new Filter<JobRequisition>(x => x.Job.ID).IsEqualTo(Job.ID);
  40. }
  41. }
  42. internal class JobRequisitionJobLookup : LookupDefinitionGenerator<JobRequisition, Job>
  43. {
  44. public override Filter<JobRequisition> DefineFilter(Job[] items)
  45. {
  46. if (items.Length == 1)
  47. return new Filter<JobRequisition>(x => x.Job.ID).IsEqualTo(items[0].ID);
  48. return new Filter<JobRequisition>(x => x.ID).IsEqualTo(CoreUtils.FullGuid);
  49. }
  50. public override Columns<Job> DefineFilterColumns()
  51. => Columns.None<Job>().Add(x => x.ID);
  52. }
  53. }