public TaskInformation(Issue issue, ResourceInformation assignedTo) { TaskName = issue.Subject; ID = issue.Id; Tracker = issue.Tracker.Name; double est = 0, spent = 0; if (issue.EstimatedHours.HasValue) { est = issue.EstimatedHours.Value; } if (issue.SpentHours.HasValue) { spent = issue.SpentHours.Value; } Duration = new WorkDuration(est, spent); CompletePercentage = int.Parse(issue.DoneRatio.Value.ToString()); if (CompletePercentage == 100 && Duration.Spent == 0) { Duration.Spent = Duration.Estimated; Duration.ReCalculateOvertime(); } Dates = new ProjectDates(issue.StartDate, issue.DueDate); Dates.SetCreatedDate(issue.CreatedOn); //Costs double costPerHour = assignedTo.CostPerTimeUnit; Cost = (int)(costPerHour * Duration.TotalDuration()); ActualCost = (int)(costPerHour * Duration.Spent); if (CompletePercentage == 100) { RemainingCost = 0; } else { RemainingCost = (int)(costPerHour * (Duration.Estimated - Duration.Spent)); } OverCost = (int)(costPerHour * Duration.Overtime); //TODO: issue status if (CompletePercentage == 100) { Status = TaskStatus.Closed; } else { Status = TaskStatus.InWork; } ChildTasks = new List <TaskInformation>(); SetAnomaly(); SetDeviation(); }
public TaskInformation(Task task, List <Resource> resources) { Resources = new List <ResourceInformation>(); this.task = task; foreach (Resource res in resources) { this.Resources.Add(new ResourceInformation(res)); } ChildTasks = new List <TaskInformation>(); //Dates Dates = new ProjectDates(task.getStart(), task.getFinish()); if (task.getBaselineStart() != null && task.getBaselineFinish() != null) { Dates.SetBaseline(task.getBaselineStart(), task.getBaselineFinish()); } else { //TODO: ERR_MSG_NOT_NIN_BASELINE } if (task.getBaselineDuration() != null && task.getDuration() != null) { Duration = new WorkDuration( TimeUnitStringConverter.ConvertTime(task.getBaselineDuration().toString()), TimeUnitStringConverter.ConvertTime(task.getDuration().toString())); } else { Duration = new WorkDuration(); } OverCost = task.getCost().doubleValue() - task.getBaselineCost().doubleValue(); TaskName = task.getName(); Cost = task.getCost().intValue(); ActualCost = task.getActualCost().intValue(); RemainingCost = task.getRemainingCost().intValue(); CompletePercentage = task.getPercentageComplete().intValue(); if (CompletePercentage == 100) { Status = TaskStatus.Closed; } else { Status = TaskStatus.InWork; } Tracker = "Undefined"; Dates.SetCreatedDate(task.getCreateDate()); SetAnomaly(); SetDeviation(); }