Beispiel #1
0
        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();
        }
Beispiel #2
0
        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));
        }
Beispiel #3
0
        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);
                        }
                    }
                }
            }
        }
Beispiel #4
0
        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();
        }