using System; using System.ComponentModel; using InABox.Core; namespace Comal.Classes { [UserTracking("Gantt Charts")] public class JobStage : Entity, IRemotable, IPersistent, ISequenceable, INotifyPropertyChanged, ILicense, IOneToMany { private bool bChanging; [EntityRelationship(DeleteAction.Cascade)] [EditorSequence(0)] public JobLink Job { get; set; } [NullEditor] public bool IsHeader { get; set; } [NullEditor] public JobStageLink Parent { get; set; } [EditorSequence(1)] public string Name { get; set; } [EditorSequence(2)] [NullEditor] public JobStageCalendarLink Calendar { get; set; } [DateEditor] [EditorSequence(3)] public DateTime StartDate { get; set; } [IntegerEditor] [EditorSequence(4)] public int WorkDays { get; set; } [DateEditor] [EditorSequence(5)] public DateTime EndDate { get; set; } [DoubleEditor] [EditorSequence(9)] public double SupervisionHours { get; set; } [DoubleEditor] [EditorSequence(10)] public double TradesHours { get; set; } [DoubleEditor] [EditorSequence(11)] public double ApprenticeHours { get; set; } [DoubleEditor(Editable = Editable.Disabled)] [EditorSequence("Summary", 1)] public double TotalHours { get; set; } [DoubleEditor(Editable = Editable.Disabled)] [EditorSequence("Summary", 2)] public double Supervisors { get; set; } [DoubleEditor(Editable = Editable.Disabled)] [EditorSequence("Summary", 3)] public double Tradespersons { get; set; } [DoubleEditor(Editable = Editable.Disabled)] [EditorSequence("Summary", 4)] public double Apprentices { get; set; } [NullEditor] public long Sequence { get; set; } protected override void Init() { base.Init(); Job = new JobLink(); Parent = new JobStageLink(); Calendar = new JobStageCalendarLink(); } protected override void DoPropertyChanged(string name, object before, object after) { base.DoPropertyChanged(name, before, after); if (bChanging) return; bChanging = true; if (name.Equals("WorkDays")) { EndDate = Calendar.CalculateEndDate(StartDate, (int)after); Tradespersons = Calendar.CalculateWorkers(StartDate, EndDate, TradesHours); Supervisors = Calendar.CalculateWorkers(StartDate, EndDate, SupervisionHours); Apprentices = Calendar.CalculateWorkers(StartDate, EndDate, ApprenticeHours); } else if (name.Equals("EndDate")) { WorkDays = Calendar.CalculateWorkDays(StartDate, (DateTime)after); Tradespersons = Calendar.CalculateWorkers(StartDate, (DateTime)after, TradesHours); Supervisors = Calendar.CalculateWorkers(StartDate, (DateTime)after, SupervisionHours); Apprentices = Calendar.CalculateWorkers(StartDate, (DateTime)after, ApprenticeHours); } else if (name.Equals("TradesHours")) { Tradespersons = Calendar.CalculateWorkers(StartDate, EndDate, (double)after); TotalHours = SupervisionHours + (double)after + ApprenticeHours; } else if (name.Equals("SupervisionHours")) { Supervisors = Calendar.CalculateWorkers(StartDate, EndDate, (double)after); TotalHours = (double)after + TradesHours + ApprenticeHours; } else if (name.Equals("ApprenticeHours")) { Apprentices = Calendar.CalculateWorkers(StartDate, EndDate, (double)after); TotalHours = SupervisionHours + TradesHours + (double)after; } bChanging = false; } } }