JobStage.cs 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  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 Init()
  55. {
  56. base.Init();
  57. Job = new JobLink();
  58. Parent = new JobStageLink();
  59. Calendar = new JobStageCalendarLink();
  60. }
  61. protected override void DoPropertyChanged(string name, object before, object after)
  62. {
  63. base.DoPropertyChanged(name, before, after);
  64. if (bChanging)
  65. return;
  66. bChanging = true;
  67. if (name.Equals("WorkDays"))
  68. {
  69. EndDate = Calendar.CalculateEndDate(StartDate, (int)after);
  70. Tradespersons = Calendar.CalculateWorkers(StartDate, EndDate, TradesHours);
  71. Supervisors = Calendar.CalculateWorkers(StartDate, EndDate, SupervisionHours);
  72. Apprentices = Calendar.CalculateWorkers(StartDate, EndDate, ApprenticeHours);
  73. }
  74. else if (name.Equals("EndDate"))
  75. {
  76. WorkDays = Calendar.CalculateWorkDays(StartDate, (DateTime)after);
  77. Tradespersons = Calendar.CalculateWorkers(StartDate, (DateTime)after, TradesHours);
  78. Supervisors = Calendar.CalculateWorkers(StartDate, (DateTime)after, SupervisionHours);
  79. Apprentices = Calendar.CalculateWorkers(StartDate, (DateTime)after, ApprenticeHours);
  80. }
  81. else if (name.Equals("TradesHours"))
  82. {
  83. Tradespersons = Calendar.CalculateWorkers(StartDate, EndDate, (double)after);
  84. TotalHours = SupervisionHours + (double)after + ApprenticeHours;
  85. }
  86. else if (name.Equals("SupervisionHours"))
  87. {
  88. Supervisors = Calendar.CalculateWorkers(StartDate, EndDate, (double)after);
  89. TotalHours = (double)after + TradesHours + ApprenticeHours;
  90. }
  91. else if (name.Equals("ApprenticeHours"))
  92. {
  93. Apprentices = Calendar.CalculateWorkers(StartDate, EndDate, (double)after);
  94. TotalHours = SupervisionHours + TradesHours + (double)after;
  95. }
  96. bChanging = false;
  97. }
  98. }
  99. }