private void DefineProjectPhase(object context) { VProjectPhasePhase selectedProjectPhase = (VProjectPhasePhase)context; if (selectedProjectPhase == null) { MessageBox.Show("Um eine Projektphase zu definieren, muss eine Projektphase ausgewählt werden.", "Phase definieren"); } else { DefinePhaseView definePhaseView = new DefinePhaseView(); var contextDefinePhaseView = (DefinePhaseViewViewModel)definePhaseView.DataContext; contextDefinePhaseView.contextProjectViewViewModel = this; contextDefinePhaseView.selectedVProjectPhasePhase = selectedProjectPhase; contextDefinePhaseView.SetPhaseValues(); definePhaseView.Show(); } }
private void OpenProjectPhase(object context) { VProjectPhasePhase selectedProjectPhase = (VProjectPhasePhase)context; if (selectedProjectPhase == null) { MessageBox.Show("Um eine Phase zu öffnen, muss eine Phase ausgewählt sein.", "Phase öffnen"); } else if (selectedProjectPhase.PlannedStartdate == null || selectedProjectPhase.PlannedEnddate == null || selectedProjectPhase.PlannedReviewdate == null || String.IsNullOrWhiteSpace(selectedProjectPhase.PhaseDocumentsLink)) { MessageBox.Show("Phase muss zuerst definiert und alle Werte gesetzt werden.", "Phase öffnen"); } else { PhaseView phaseView = new PhaseView(); var contextPhaseView = (PhaseViewViewModel)phaseView.DataContext; contextPhaseView.contextProjectViewViewModel = this; contextPhaseView.selectedVProjectPhasePhase = selectedProjectPhase; contextPhaseView.SetPhaseValues(); phaseView.Show(); } }
private void SetState(object context) { if (contextProjectViewViewModel != null) { Boolean StateCanBeSet = true; Boolean NotAllPhaseDefined = false; Boolean NotAllPhaseClosed = false; Boolean PreviousPhaseChange = false; Boolean NotAllDatesSet = false; if (cmbbxState == State.InPlanning) { // Will der Projekt-Status auf InPlanning gewechsel werden und ist nicht auf Released / InPlanning, ist dies nicht möglich if (contextProjectViewViewModel.lblProjectState != State.Released && contextProjectViewViewModel.lblProjectState != State.InPlanning) { StateCanBeSet = false; PreviousPhaseChange = true; } else { // Ist Fortschritt unter 10%, wird dieser mit dem InPlanning setzen auf 10% gehoben if (txtProgress < 10) { txtProgress = 10; } } } if (cmbbxState == State.WorkInProgress) { // Will der Projekt-Status auf WIP gesetzt werden, wird geprüft ob alle Phasen definiert sind foreach (var pp in contextProjectViewViewModel.lvProjectPhase) { VProjectPhasePhase ppObj = (VProjectPhasePhase)pp; if (ppObj.PlannedStartdate == null) { StateCanBeSet = false; NotAllPhaseDefined = true; } } if (NotAllPhaseDefined == false && txtProgress < 20) { // Ist der Projekt-Fortschritt unter 20%, wird dieser mit dem WIP Setzen auf 20% gehoben txtProgress = 20; } } else if (cmbbxState == State.Closed) { // Will der Projekt-Status auf Closed gesetzt werden, wird geprüft ob alle Phasen geschlossen sind foreach (var pp in contextProjectViewViewModel.lvProjectPhase) { VProjectPhasePhase ppObj = (VProjectPhasePhase)pp; if (ppObj.PhaseState != State.Closed) { StateCanBeSet = false; NotAllPhaseClosed = true; } } // Prüfen ob Start- und Enddatum gesetzt sind if (contextProjectViewViewModel.lblStartdate == null || contextProjectViewViewModel.lblEnddate == null) { StateCanBeSet = false; NotAllDatesSet = true; } if (NotAllPhaseClosed == false && NotAllDatesSet == false) { // Ist der Status unter 100% beim Setzen auf Closend, wird dieser auf 100% gehoben txtProgress = 100; } } if (StateCanBeSet == true) { contextProjectViewViewModel.selectedProject.SetState(txtProgress, cmbbxState, cmbbxPriority); contextProjectViewViewModel.lblProjectProgress = txtProgress; contextProjectViewViewModel.lblProjectState = cmbbxState; contextProjectViewViewModel.lblPriority = cmbbxPriority; contextProjectViewViewModel.UpdateProjectOverview(); Close?.Invoke(); } else if (NotAllPhaseDefined == true) { MessageBox.Show("Um den Status auf WorkInProgress zu setzen, müssen alle Projektphasen definiert sein.", "Status setzen"); } else if (NotAllPhaseClosed == true) { MessageBox.Show("Um den Status auf Closed zu setzen, müssen alle Projektphasen bereits geschlossen sein (Status closed).", "Status setzen"); } else if (NotAllDatesSet == true) { MessageBox.Show("Um den Status auf Closed zu setzen, müssen Start- sowie Enddatum des Projektes gesetzt sein.", "Status setzen"); } else if (PreviousPhaseChange == true) { MessageBox.Show("Es kann nicht auf einen vorherigen Status gewechselt werden.", "Status setzen"); } } if (contextPhaseViewViewModel != null) { Boolean StateCanBeSet = true; Boolean NoActivityCreated = false; Boolean PreviousPhaseChange = false; Boolean NotAllActivity100 = false; Boolean NotAllDatesSet = false; Boolean CloseFromNotWIP = false; if (cmbbxState == State.InPlanning) { // Will der Phasen-Status auf InPlanning gewechsel werden und ist nicht auf Released / InPlanning, ist dies nicht möglich if (contextPhaseViewViewModel.lblPhaseState != State.Released && contextPhaseViewViewModel.lblPhaseState != State.InPlanning) { StateCanBeSet = false; PreviousPhaseChange = true; } else { if (txtProgress < 10) { // Ist Fortschritt unter 10%, wird dieser mit dem InPlanning setzen auf 10% gehoben txtProgress = 10; } } } else if (cmbbxState == State.WorkInProgress) { // Will der Phasen-Status auf WIP gesetzt werden, wird geprüft ob mind. eine Aktivität existiert if (contextPhaseViewViewModel.lvActivity.Count == 0) { StateCanBeSet = false; NoActivityCreated = true; } if (NoActivityCreated == false && txtProgress < 20) { // Ist der Phasen-Fortschritt unter 20%, wird dieser mit dem WIP Setzen auf 20% gehoben txtProgress = 20; } } else if (cmbbxState == State.Closed) { // Will der Phasen-Status auf Closed gesetzt werden, kann dies nur aus WIP geschehen if (contextPhaseViewViewModel.lblPhaseState != State.WorkInProgress) { StateCanBeSet = false; CloseFromNotWIP = true; } else { // Um den Phasen-Status auf Closed zu setzen, muss jede Aktivität 100% Fortschritt aufzeigen foreach (var act in contextPhaseViewViewModel.lvActivity) { Activity actObj = (Activity)act; if (actObj.ActivityProgress != 100) { StateCanBeSet = false; NotAllActivity100 = true; } } // prüfen ob Start- End- und Reviewdatum gesetzt sind if (contextPhaseViewViewModel.lblStartdate == null || contextPhaseViewViewModel.lblEnddate == null || contextPhaseViewViewModel.lblReviewdate == null) { StateCanBeSet = false; NotAllDatesSet = true; } if (NotAllActivity100 == false && NotAllDatesSet == false) { // Ist der Status unter 100% beim Setzen auf Closend, wird dieser auf 100% gehoben txtProgress = 100; } } } if (StateCanBeSet == true) { contextPhaseViewViewModel.selectedProjectPhase.SetState(txtProgress, cmbbxState); contextPhaseViewViewModel.lblPhaseProgress = txtProgress; contextPhaseViewViewModel.lblPhaseState = cmbbxState; contextPhaseViewViewModel.UpdatePhaseOverview(); Close?.Invoke(); } else if (NoActivityCreated == true) { MessageBox.Show("Um den Status auf WorkInProgress zu setzen, muss eine Aktivität erstellt werden.", "Status setzen"); } else if (NotAllActivity100 == true) { MessageBox.Show("Um den Status auf Closed zu setzen, müssen alle Aktivitäten abgeschlossen sein (Fortschritt 100%).", "Status setzen"); } else if (NotAllDatesSet == true) { MessageBox.Show("Um den Status auf Closed zu setzen, müssen Start-, End- sowie Reviewdatum der Phase gesetzt sein.", "Status setzen"); } else if (PreviousPhaseChange == true) { MessageBox.Show("Es kann nicht auf einen vorherigen Status gewechselt werden.", "Status setzen"); } else if (CloseFromNotWIP == true) { MessageBox.Show("Die Phase kann nur aus dem Status WorkInProgress geschlossen werden.", "Status setzen"); } } if (contextActivityViewViewModel != null) { Boolean StateCanBeSet = true; if (txtProgress > 100) { MessageBox.Show("100% ist der maximale Projektfortschritt, welcher gesetzt werden kann.", "Status setzen"); StateCanBeSet = false; } else if (txtProgress == 100) { // Prüfen ob alle externen Kosten sowie personellen Ressourcen (effektiv) eingetragen sind Boolean allExternalCostCompleted = true; foreach (var extCost in contextActivityViewViewModel.lvExternalCost) { VExternalCostCostType extCostObj = (VExternalCostCostType)extCost; if (extCostObj.EffectiveCost == null) { allExternalCostCompleted = false; } } Boolean allEmployeeResourceCompleted = true; foreach (var empRes in contextActivityViewViewModel.lvEmployeeResource) { VEmployeeResourceFunction empResObj = (VEmployeeResourceFunction)empRes; if (empResObj.EffectiveTime == null) { allEmployeeResourceCompleted = false; } } if (allExternalCostCompleted == false || allEmployeeResourceCompleted == false) { MessageBox.Show("Um den Aktivitätsfortschritt auf 100% zu setzen, müssen alle effektiven Kosten der externen Kosten und effektiven Zeiten der personellen Ressoucen gesetzt sein.", "Status setzen"); StateCanBeSet = false; } else if (contextActivityViewViewModel.lblStartdate == null || contextActivityViewViewModel.lblEnddate == null) { // Prüfung ob Start- und Enddatum gesetzt sind MessageBox.Show("Um den Aktivitätsfortschritt auf 100% zu setzen, müssen Start- sowie Enddatum gesetzt sein.", "Status setzen"); StateCanBeSet = false; } } if (StateCanBeSet == true) { contextActivityViewViewModel.selectedActivity.SetState(txtProgress); contextActivityViewViewModel.lblActivityProgress = txtProgress; contextActivityViewViewModel.contextPhaseViewViewModel.SetActivityView(); Close?.Invoke(); } } }