Esempio n. 1
0
        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();
            }
        }
Esempio n. 2
0
        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();
            }
        }
Esempio n. 3
0
        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();
                }
            }
        }