public void AddAssignment() { WORKPACK_ASSIGNMENT newWORKPACK_ASSIGNMENT = new WORKPACK_ASSIGNMENT() { GUID = Guid.Empty, HIGH_VALUE = this.AssignmentHighValue, LOW_VALUE = this.AssignmentLowValue, P6_ACTIVITYID = this.SelectedTASK.Subject, PRIORITY = this.SelectedWORKPACK.ObservableWORKPACK_ASSIGNMENTS.Count + 1, GUID_WORKPACK = this.SelectedWORKPACK.GUID, ISMODIFIEDBASELINE = this.IsModified }; WORKPACK_ASSIGNMENTSViewModel.Save(newWORKPACK_ASSIGNMENT); this.SelectedWORKPACK.WORKPACK.WORKPACK_ASSIGNMENT.Add(newWORKPACK_ASSIGNMENT); this.SelectedWORKPACK_ASSIGNMENT = newWORKPACK_ASSIGNMENT; if (this.AssignmentMinValue == 0) { this.AssignmentHighValue = 0; } else if (this.AssignmentMinValue > AssignmentMaxValue) { this.AssignmentHighValue = AssignmentMaxValue; } else { this.AssignmentHighValue = this.AssignmentMinValue; } Refresh(); }
private void RemoveWorkpackAssignment(WORKPACK_ASSIGNMENT removeWORKPACK_ASSIGNMENT) { decimal removingWORKPACK_ASSIGNMENTLowValue = removeWORKPACK_ASSIGNMENT.LOW_VALUE; WORKPACK_Dashboard activeWORKPACK = WORKPACKSItemSource.FirstOrDefault(x => x.WORKPACK.GUID == removeWORKPACK_ASSIGNMENT.GUID_WORKPACK); if (activeWORKPACK == null) { return; } activeWORKPACK.WORKPACK.WORKPACK_ASSIGNMENT.Remove(removeWORKPACK_ASSIGNMENT); WORKPACK_ASSIGNMENTSViewModel.Delete(removeWORKPACK_ASSIGNMENT); List <WORKPACK_ASSIGNMENT> workpackAssignmentsInOrder = activeWORKPACK.ObservableWORKPACK_ASSIGNMENTS.Where(x => x.LOW_VALUE > removingWORKPACK_ASSIGNMENTLowValue).OrderBy(x => x.PRIORITY).ToList(); for (int i = 0; i < workpackAssignmentsInOrder.Count; i++) { decimal currentWORKPACK_ASSIGNMENTAmount = (workpackAssignmentsInOrder[i].HIGH_VALUE - workpackAssignmentsInOrder[i].LOW_VALUE) + 1; workpackAssignmentsInOrder[i].LOW_VALUE = removingWORKPACK_ASSIGNMENTLowValue; workpackAssignmentsInOrder[i].HIGH_VALUE = (removingWORKPACK_ASSIGNMENTLowValue + currentWORKPACK_ASSIGNMENTAmount) - 1; removingWORKPACK_ASSIGNMENTLowValue = workpackAssignmentsInOrder[i].HIGH_VALUE + 1; workpackAssignmentsInOrder[i].PRIORITY = workpackAssignmentsInOrder[i].PRIORITY - 1; } WORKPACK_ASSIGNMENTSViewModel.BulkSave(new ObservableCollection <WORKPACK_ASSIGNMENT>(workpackAssignmentsInOrder)); }
void OnPROJECTWORKPACKSMappingViewModelLoaded(IEnumerable <WORKPACK_Dashboard> entities) { IEnumerable <TASK> PROJECTTASK = WORKPACK_DashboardViewModel.P6TASKCollection; IEnumerable <ProgressInfo> cumulativeEarnedDataPoints = WORKPACK_DashboardViewModel.MainViewModel.Entities.Where(x => x.Summary_CumulativeEarnedDataPoints != null).SelectMany(x => x.Summary_CumulativeEarnedDataPoints); cumulativeEarnedDataPoints = cumulativeEarnedDataPoints.OrderBy(x => x.ProgressDate).ToList(); TimeSpan intervalTimeSpan = ISupportProgressReportingExtensions.ConvertProgressIntervalToPeriod(loadPROGRESS); CollectionViewModel <TASK, int, IP6EntitiesUnitOfWork> P6TASKCollectionViewModel = WORKPACK_DashboardViewModel.P6TASKCollectionViewModel; foreach (WORKPACK_Dashboard workpack in WORKPACK_DashboardViewModel.MainViewModel.Entities) { ProgressInfo fWorkpackEarnedDataPoint = cumulativeEarnedDataPoints.FirstOrDefault(dataPoint => dataPoint.WorkpackGuid == workpack.WORKPACK.GUID && dataPoint.Units > 0); if (fWorkpackEarnedDataPoint != null) { ProgressInfo lWorkpackEarnedDataPoint = cumulativeEarnedDataPoints.LastOrDefault(dataPoint => dataPoint.WorkpackGuid == workpack.WORKPACK.GUID && dataPoint.ProgressDate <= loadPROGRESS.DATA_DATE); List <WORKPACK_ASSIGNMENT> workpackAssignments = workpack.WORKPACK.WORKPACK_ASSIGNMENT.Where(assignment => assignment.LOW_VALUE <= lWorkpackEarnedDataPoint.Units).OrderBy(assignment => assignment.LOW_VALUE).ToList(); for (int i = 0; i < workpackAssignments.Count; i++) { WORKPACK_ASSIGNMENT workpackAssignment = workpackAssignments[i]; TASK P6TASK = PROJECTTASK.FirstOrDefault(P6Task => P6Task.task_code == workpackAssignment.P6_ACTIVITYID); if (P6TASK != null) { DateTime proposedStartDate = fWorkpackEarnedDataPoint.ProgressDate.AddDays(-1 * intervalTimeSpan.Days).AddSeconds(1); if (P6TASK.act_start_date == null || P6TASK.act_start_date > proposedStartDate) { P6TASK.act_start_date = proposedStartDate; } decimal actUnits = lWorkpackEarnedDataPoint.Units < workpackAssignment.HIGH_VALUE ? lWorkpackEarnedDataPoint.Units : workpackAssignment.HIGH_VALUE; decimal actWorkUnitNormalize = i == 0 ? actUnits : (actUnits - workpackAssignments[i - 1].HIGH_VALUE); P6TASK.act_work_qty = actWorkUnitNormalize; if (P6TASK.remain_work_qty >= 0) { P6TASK.remain_work_qty = P6TASK.target_work_qty - P6TASK.act_work_qty; } P6TASK.remain_drtn_hr_cnt = P6TASK.target_drtn_hr_cnt * (P6TASK.remain_work_qty / P6TASK.target_work_qty); if (P6TASK.remain_work_qty == 0) { P6TASK.status_code = P6TASKSTATUS.TK_Complete.ToString(); P6TASK.act_end_date = lWorkpackEarnedDataPoint.ProgressDate; } else if (P6TASK.remain_work_qty > 0) { P6TASK.status_code = P6TASKSTATUS.TK_Active.ToString(); P6TASK.act_end_date = null; } else if (P6TASK.status_code == P6TASKSTATUS.TK_NotStart.ToString()) { P6TASK.status_code = P6TASKSTATUS.TK_Active.ToString(); } P6TASKCollectionViewModel.Save(P6TASK); } } } } }
private void MovePriority(bool isUp) { List <WORKPACK_ASSIGNMENT> WORKPACK_ASSIGNMENTSInOrder = this.SelectedWORKPACK.ObservableWORKPACK_ASSIGNMENTS.OrderBy(x => x.PRIORITY).ToList(); int selectionIndex = WORKPACK_ASSIGNMENTSInOrder.IndexOf(SelectedWORKPACK_ASSIGNMENT); WORKPACK_ASSIGNMENT swapWORKPACK_ASSIGNMENT = WORKPACK_ASSIGNMENTSInOrder[selectionIndex + (isUp == true ? -1 : 1)]; string swapWORKPACK_ASSIGNMENTId = swapWORKPACK_ASSIGNMENT.P6_ACTIVITYID; swapWORKPACK_ASSIGNMENT.P6_ACTIVITYID = SelectedWORKPACK_ASSIGNMENT.P6_ACTIVITYID; SelectedWORKPACK_ASSIGNMENT.P6_ACTIVITYID = swapWORKPACK_ASSIGNMENTId; WORKPACK_ASSIGNMENTSViewModel.BulkSave(new ObservableCollection <WORKPACK_ASSIGNMENT>(WORKPACK_ASSIGNMENTSInOrder)); this.SelectedWORKPACK_ASSIGNMENT = swapWORKPACK_ASSIGNMENT; Refresh(); }