JobStage.cs 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. using System;
  2. using System.ComponentModel;
  3. using InABox.Core;
  4. namespace Comal.Classes
  5. {
  6. [UserTracking("Gantt Charts")]
  7. public class JobStage : Entity, IRemotable, IPersistent, ISequenceable, INotifyPropertyChanged, ILicense<ProjectManagementLicense>, IOneToMany<Job>
  8. {
  9. private bool bChanging;
  10. [EntityRelationship(DeleteAction.Cascade)]
  11. [EditorSequence(0)]
  12. public JobLink Job { get; set; }
  13. [NullEditor]
  14. public bool IsHeader { get; set; }
  15. [NullEditor]
  16. public JobStageLink Parent { get; set; }
  17. [EditorSequence(1)]
  18. public string Name { get; set; }
  19. [EditorSequence(2)]
  20. [NullEditor]
  21. public JobStageCalendarLink Calendar { get; set; }
  22. [DateEditor]
  23. [EditorSequence(3)]
  24. public DateTime StartDate { get; set; }
  25. [IntegerEditor]
  26. [EditorSequence(4)]
  27. public int WorkDays { get; set; }
  28. [DateEditor]
  29. [EditorSequence(5)]
  30. public DateTime EndDate { get; set; }
  31. [DoubleEditor]
  32. [EditorSequence(9)]
  33. public double SupervisionHours { get; set; }
  34. [DoubleEditor]
  35. [EditorSequence(10)]
  36. public double TradesHours { get; set; }
  37. [DoubleEditor]
  38. [EditorSequence(11)]
  39. public double ApprenticeHours { get; set; }
  40. [DoubleEditor(Editable = Editable.Disabled)]
  41. [EditorSequence("Summary", 1)]
  42. public double TotalHours { get; set; }
  43. [DoubleEditor(Editable = Editable.Disabled)]
  44. [EditorSequence("Summary", 2)]
  45. public double Supervisors { get; set; }
  46. [DoubleEditor(Editable = Editable.Disabled)]
  47. [EditorSequence("Summary", 3)]
  48. public double Tradespersons { get; set; }
  49. [DoubleEditor(Editable = Editable.Disabled)]
  50. [EditorSequence("Summary", 4)]
  51. public double Apprentices { get; set; }
  52. [NullEditor]
  53. public long Sequence { get; set; }
  54. protected override void DoPropertyChanged(string name, object? before, object? after)
  55. {
  56. base.DoPropertyChanged(name, before, after);
  57. if (bChanging)
  58. return;
  59. bChanging = true;
  60. if (name.Equals("WorkDays"))
  61. {
  62. EndDate = Calendar.CalculateEndDate(StartDate, (int)after);
  63. Tradespersons = Calendar.CalculateWorkers(StartDate, EndDate, TradesHours);
  64. Supervisors = Calendar.CalculateWorkers(StartDate, EndDate, SupervisionHours);
  65. Apprentices = Calendar.CalculateWorkers(StartDate, EndDate, ApprenticeHours);
  66. }
  67. else if (name.Equals("EndDate"))
  68. {
  69. WorkDays = Calendar.CalculateWorkDays(StartDate, (DateTime)after);
  70. Tradespersons = Calendar.CalculateWorkers(StartDate, (DateTime)after, TradesHours);
  71. Supervisors = Calendar.CalculateWorkers(StartDate, (DateTime)after, SupervisionHours);
  72. Apprentices = Calendar.CalculateWorkers(StartDate, (DateTime)after, ApprenticeHours);
  73. }
  74. else if (name.Equals("TradesHours"))
  75. {
  76. Tradespersons = Calendar.CalculateWorkers(StartDate, EndDate, (double)after);
  77. TotalHours = SupervisionHours + (double)after + ApprenticeHours;
  78. }
  79. else if (name.Equals("SupervisionHours"))
  80. {
  81. Supervisors = Calendar.CalculateWorkers(StartDate, EndDate, (double)after);
  82. TotalHours = (double)after + TradesHours + ApprenticeHours;
  83. }
  84. else if (name.Equals("ApprenticeHours"))
  85. {
  86. Apprentices = Calendar.CalculateWorkers(StartDate, EndDate, (double)after);
  87. TotalHours = SupervisionHours + TradesHours + (double)after;
  88. }
  89. bChanging = false;
  90. }
  91. }
  92. }