Example #1
0
        /*
         * Execute commands that depends on menu
         * Return true if the command was found
         */
        public bool MenuCommand(ConIO command)
        {
            switch (this.CurrentMenu)
            {
            case "root":
                switch (command.StringInput)
                {
                case "patients":
                    this.GoTo("patients", "patientlist");
                    return(true);

                case "illnesses":
                    this.GoTo("illnesses", "illnesslist");
                    return(true);

                case "back":
                    if (ConIO.Confirm("Exit programm?"))
                    {
                        ConIO.OutputLine("Programm beendet!");
                        Environment.Exit(0);
                    }
                    return(true);
                }
                break;

            case "patients":
                if (command.TestInt())
                {
                    Patient loadPatient = this.Fachkonzept.GetPatient(command.IntInput);
                    if (loadPatient == null)
                    {
                        ConIO.OutputError("ERROR: Patient " + command.IntInput + " not found!");
                    }
                    else
                    {
                        this.CurrentPatient = loadPatient;
                        this.GoTo("patient", "patient");
                    }
                    return(true);
                }
                switch (command.StringInput)
                {
                case "add":
                    this.GoTo("patient-add", "patient-add");
                    return(true);

                case "back":
                    this.GoTo("root");
                    return(true);
                }
                break;

            case "illnesses":
                if (command.TestInt())
                {
                    Illness loadIllness = this.Fachkonzept.GetIllness(command.IntInput);
                    if (loadIllness == null)
                    {
                        ConIO.OutputError("ERROR: Illness " + command.IntInput + " not found!");
                    }
                    else
                    {
                        this.CurrentIllness = loadIllness;
                        this.GoTo("illness", "illness");
                    }
                    return(true);
                }
                switch (command.StringInput)
                {
                case "add":
                    this.GoTo("illness-add", "illness-add");
                    return(true);

                case "back":
                    this.GoTo("root");
                    return(true);
                }
                break;

            case "patient":
                switch (command.StringInput)
                {
                case "edit":
                    this.GoTo("patient-edit", "patient-edit");
                    return(true);

                case "delete":
                    if (ConIO.Confirm("Delete Patient (" + this.DescribePatient(this.CurrentPatient) + ")?"))
                    {
                        if (this.Fachkonzept.DeletePatient(this.CurrentPatient))
                        {
                            this.GoTo("patients", "patientlist");
                        }
                        else
                        {
                            ConIO.OutputError("ERROR: Can not delete Patient (" + this.DescribePatient(this.CurrentPatient) + ")!");
                        }
                    }
                    return(true);

                case "illnesses":
                    this.GoTo("patient-illness", "patient-illnesslist");
                    return(true);

                case "back":
                    this.GoTo("patients", "patientlist");
                    return(true);
                }
                break;

            case "illness":
                switch (command.StringInput)
                {
                case "edit":
                    this.GoTo("illness-edit", "illness-edit");
                    return(true);

                case "delete":
                    if (ConIO.Confirm("Delete Illness (" + this.DescribeIllness(this.CurrentIllness) + ")?"))
                    {
                        if (this.Fachkonzept.DeleteIllness(this.CurrentIllness))
                        {
                            this.GoTo("illnesses", "illnesslist");
                        }
                        else
                        {
                            ConIO.OutputError("ERROR: Can not delete Illness (" + this.DescribeIllness(this.CurrentIllness) + ")!");
                        }
                    }
                    return(true);

                case "patients":
                    this.GoTo("illness-patient", "illness-patientlist");
                    return(true);

                case "back":
                    this.GoTo("illnesses", "illnesslist");
                    return(true);
                }
                break;

            case "patient-illness":
                switch (command.StringInput)
                {
                case "add":
                    this.GoTo("patient-illness-add", "illnesslist");
                    return(true);

                case "remove":
                    this.GoTo("patient-illness-remove", "patient-illnesslist");
                    return(true);

                case "back":
                    this.GoTo("patient", "patient");
                    return(true);
                }
                break;

            case "illness-patient":
                switch (command.StringInput)
                {
                case "add":
                    this.GoTo("illness-patient-add", "patientlist");
                    return(true);

                case "remove":
                    this.GoTo("illness-patient-remove", "illness-patientlist");
                    return(true);

                case "back":
                    this.GoTo("illness", "illness");
                    return(true);
                }
                break;

            case "patient-add":
                switch (command.StringInput)
                {
                case "add":
                    this.CurrentPatient = new Patient();
                    ConIO input = null;

                    // set the FirstName field of the new patient
                    do
                    {
                        input = ConIO.Input("Patient First Name", "           : ");
                        if (this.CancelAddPatient(input.StringInput))
                        {
                            return(true);
                        }
                    } while (input.StringInput.Length == 0);
                    this.CurrentPatient.FirstName = input.StringInput;

                    // set the LastName field of the new patient
                    do
                    {
                        input = ConIO.Input("Patient Last Name", "            : ");
                        if (this.CancelAddPatient(input.StringInput))
                        {
                            return(true);
                        }
                    } while (input.StringInput.Length == 0);
                    this.CurrentPatient.LastName = input.StringInput;

                    // set the Birthday field of the new patient
                    bool isDate = false;
                    do
                    {
                        input = ConIO.Input("Patient Birthday (dd.mm.YYYY)");
                        if (this.CancelAddPatient(input.StringInput))
                        {
                            isDate = false;
                            break;
                        }
                        isDate = input.TestDate();
                        if (!isDate)
                        {
                            ConIO.OutputNewLine();
                            ConIO.OutputError("ERROR: Wrong date format!");
                        }
                    } while (!isDate);
                    if (isDate)
                    {
                        this.CurrentPatient.Birthday = input.DateInput;
                    }
                    else
                    {
                        return(true);
                    }

                    // confirm the new patient from the user before save the patient
                    ConIO.OutputNewLine();
                    this.PrintMenuPage("patient-add", "patient");
                    ConIO.OutputNewLine();
                    if (ConIO.Confirm("Add the Patient?"))
                    {
                        if (!this.Fachkonzept.CreatePatient(this.CurrentPatient))
                        {
                            ConIO.OutputError("ERROR: Can not create patient!");
                            this.GoTo("patients", "patientlist");
                            return(true);
                        }
                    }
                    else
                    {
                        this.GoTo("patients", "patientlist");
                        return(true);
                    }

                    this.GoTo("patient", "patient");
                    return(true);
                }
                break;

            case "illness-add":
                switch (command.StringInput)
                {
                case "add":
                    this.CurrentIllness = new Illness();
                    ConIO input = null;

                    // set the Name field of the new illness
                    do
                    {
                        input = ConIO.Input("Illness Name", "       : ");
                        if (this.CancelAddIllness(input.StringInput))
                        {
                            return(true);
                        }
                    } while (input.StringInput.Length == 0);
                    this.CurrentIllness.Name = input.StringInput;

                    // set the Contagious field of the new illness
                    do
                    {
                        input = ConIO.Input("Is Contagious?(j/n)");
                    } while (!input.TestBool() && input.StringInput != "cancel");
                    if (this.CancelAddIllness(input.StringInput))
                    {
                        return(true);
                    }
                    this.CurrentIllness.Contagious = input.BoolInput;

                    // set the Lethal field of the new illness
                    do
                    {
                        input = ConIO.Input("Is Lethal?(j/n)", "    : ");
                    } while (!input.TestBool() && input.StringInput != "cancel");
                    if (this.CancelAddIllness(input.StringInput))
                    {
                        return(true);
                    }
                    this.CurrentIllness.Lethal = input.BoolInput;

                    // set the Curable field of the new illness
                    do
                    {
                        input = ConIO.Input("Is Curable?(j/n)", "   : ");
                    } while (!input.TestBool() && input.StringInput != "cancel");
                    if (this.CancelAddIllness(input.StringInput))
                    {
                        return(true);
                    }
                    this.CurrentIllness.Curable = input.BoolInput;

                    // confirm the new illness from the user before save the illness
                    ConIO.OutputNewLine();
                    this.PrintMenuPage("illness-add", "illness");
                    ConIO.OutputNewLine();
                    if (ConIO.Confirm("Add the Illness?"))
                    {
                        if (!this.Fachkonzept.CreateIllness(this.CurrentIllness))
                        {
                            ConIO.OutputError("ERROR: Can not create illness!");
                            this.GoTo("illnesses", "illnesslist");
                            return(true);
                        }
                    }
                    else
                    {
                        this.GoTo("illnesses", "illnesslist");
                        return(true);
                    }

                    this.GoTo("illness", "illness");
                    return(true);
                }
                break;

            case "patient-edit":
                switch (command.StringInput)
                {
                case "edit":
                    ConIO.OutputLine("Enter an empty text to not change the value!");
                    ConIO.OutputNewLine();
                    ConIO input = null;

                    // edit the FirstName field of the current patient
                    input = this.InputEditField(this.CurrentPatient.FirstName, "First name");
                    if (this.CancelEditPatient(input.StringInput))
                    {
                        return(true);
                    }
                    if (input.StringInput.Length != 0)
                    {
                        this.CurrentPatient.FirstName = input.StringInput;
                    }

                    // edit the LastName field of the current patient
                    input = this.InputEditField(this.CurrentPatient.LastName, "Last name ");
                    if (this.CancelEditPatient(input.StringInput))
                    {
                        return(true);
                    }
                    if (input.StringInput.Length != 0)
                    {
                        this.CurrentPatient.LastName = input.StringInput;
                    }

                    // edit the Birthday field of the current patient
                    bool isDate = false;
                    do
                    {
                        input = this.InputEditField(this.CurrentPatient.Birthday.ToShortDateString(), "Birthday  ");
                        if (this.CancelEditPatient(input.StringInput))
                        {
                            return(true);
                        }
                        if (input.StringInput.Length == 0)
                        {
                            break;
                        }
                        isDate = input.TestDate();
                        if (!isDate)
                        {
                            ConIO.OutputNewLine();
                            ConIO.OutputError("ERROR: Wrong date format");
                        }
                    } while (!isDate);
                    if (isDate)
                    {
                        this.CurrentPatient.Birthday = input.DateInput;
                    }

                    // confirm the edit patient from the user before update the patient
                    ConIO.OutputNewLine();
                    this.PrintMenuPage("patient-edit", "patient");
                    ConIO.OutputNewLine();
                    if (ConIO.Confirm("Edit the Patient?"))
                    {
                        if (!this.Fachkonzept.UpdatePatient(this.CurrentPatient))
                        {
                            ConIO.OutputError("ERROR: Can not update patient!");
                            this.CurrentPatient = this.Fachkonzept.GetPatient(this.CurrentPatient.PatientID);
                        }
                    }
                    else
                    {
                        this.CurrentPatient = this.Fachkonzept.GetPatient(this.CurrentPatient.PatientID);
                    }

                    this.GoTo("patient", "patient");
                    return(true);
                }
                break;

            case "illness-edit":
                switch (command.StringInput)
                {
                case "edit":
                    ConIO.OutputLine("Enter an empty text to not change the value!");
                    ConIO.OutputNewLine();
                    ConIO input = null;

                    // edit the Name field of the current illness
                    input = this.InputEditField(this.CurrentIllness.Name, "Illness name       ");
                    if (this.CancelEditIllness(input.StringInput))
                    {
                        return(true);
                    }
                    if (input.StringInput.Length != 0)
                    {
                        this.CurrentIllness.Name = input.StringInput;
                    }

                    // edit the Contagious field of the current illness
                    do
                    {
                        input = this.InputEditField(this.CurrentIllness.Contagious.ToString(), "Is Contagious?(j/n)");
                    } while (!input.TestBool() && input.StringInput != "cancel" && input.StringInput.Length != 0);
                    if (this.CancelEditIllness(input.StringInput))
                    {
                        return(true);
                    }
                    if (input.StringInput.Length != 0)
                    {
                        this.CurrentIllness.Contagious = input.BoolInput;
                    }

                    // edit the Lethal field of the current illness
                    do
                    {
                        input = this.InputEditField(this.CurrentIllness.Lethal.ToString(), "Is Lethal?(j/n)    ");
                    } while (!input.TestBool() && input.StringInput != "cancel" && input.StringInput.Length != 0);
                    if (this.CancelEditIllness(input.StringInput))
                    {
                        return(true);
                    }
                    if (input.StringInput.Length != 0)
                    {
                        this.CurrentIllness.Lethal = input.BoolInput;
                    }

                    // edit the Curable field of the current illness
                    do
                    {
                        input = this.InputEditField(this.CurrentIllness.Curable.ToString(), "Is Curable?(j/n)   ");
                    } while (!input.TestBool() && input.StringInput != "cancel" && input.StringInput.Length != 0);
                    if (this.CancelEditIllness(input.StringInput))
                    {
                        return(true);
                    }
                    if (input.StringInput.Length != 0)
                    {
                        this.CurrentIllness.Curable = input.BoolInput;
                    }

                    // confirm the edit illness from the user before update the illness
                    ConIO.OutputNewLine();
                    this.PrintMenuPage("illness-edit", "illness");
                    ConIO.OutputNewLine();
                    if (ConIO.Confirm("Edit the Illness?"))
                    {
                        if (!this.Fachkonzept.UpdateIllness(this.CurrentIllness))
                        {
                            ConIO.OutputError("ERROR: Can not update Illness!");
                            this.CurrentIllness = this.Fachkonzept.GetIllness(this.CurrentIllness.IllnessID);
                        }
                    }
                    else
                    {
                        this.CurrentIllness = this.Fachkonzept.GetIllness(this.CurrentIllness.IllnessID);
                    }

                    this.GoTo("illness", "illness");
                    return(true);
                }
                break;

            case "patient-illness-add":
                switch (command.StringInput)
                {
                case "back":
                    this.GoTo("patient-illness", "patient-illnesslist");
                    return(true);

                default:
                    if (command.TestInt())
                    {
                        Illness illness = this.Fachkonzept.GetIllness(command.IntInput);
                        if (illness == null)
                        {
                            ConIO.OutputError("ERROR: Can not load Illness!");
                        }
                        else
                        {
                            // Confirm the link from illness to patient
                            if (ConIO.Confirm("Add Illness to patient?"))
                            {
                                if (!this.Fachkonzept.LinkPatientIllness(this.CurrentPatient, illness))
                                {
                                    ConIO.OutputError("ERROR: Can not link Illness to Patient!");
                                }
                            }
                            this.GoTo("patient-illness", "patient-illnesslist");
                        }
                        return(true);
                    }
                    break;
                }
                break;

            case "patient-illness-remove":
                switch (command.StringInput)
                {
                case "back":
                    this.GoTo("patient-illness", "patient-illnesslist");
                    return(true);

                default:
                    if (command.TestInt())
                    {
                        Illness illness = this.Fachkonzept.GetIllness(command.IntInput);
                        if (illness == null)
                        {
                            ConIO.OutputError("ERROR: Can not load Illness!");
                        }
                        else
                        {
                            // Confirm the delink of illness from patient
                            if (ConIO.Confirm("Remove Illness from Patient?"))
                            {
                                if (!this.Fachkonzept.UnLinkPatientIllness(this.CurrentPatient, illness))
                                {
                                    ConIO.OutputError("ERROR: Can not delink Illness from Patient!");
                                }
                            }
                            this.GoTo("patient-illness", "patient-illnesslist");
                        }
                        return(true);
                    }
                    break;
                }
                break;

            case "illness-patient-add":
                switch (command.StringInput)
                {
                case "back":
                    this.GoTo("illness-patient", "illness-patientlist");
                    return(true);

                default:
                    if (command.TestInt())
                    {
                        Patient patient = this.Fachkonzept.GetPatient(command.IntInput);
                        if (patient == null)
                        {
                            ConIO.OutputError("ERROR: Can not load Patient!");
                        }
                        else
                        {
                            // Confirm the link from patient to illness
                            if (ConIO.Confirm("Add Patient to Illness?"))
                            {
                                if (!this.Fachkonzept.LinkPatientIllness(patient, this.CurrentIllness))
                                {
                                    ConIO.OutputError("ERROR: Can not link Patient to Illness!");
                                }
                            }
                            this.GoTo("illness-patient", "illness-patientlist");
                        }
                        return(true);
                    }
                    break;
                }
                break;

            case "illness-patient-remove":
                switch (command.StringInput)
                {
                case "back":
                    this.GoTo("illness-patient", "illness-patientlist");
                    return(true);

                default:
                    if (command.TestInt())
                    {
                        Patient patient = this.Fachkonzept.GetPatient(command.IntInput);
                        if (patient == null)
                        {
                            ConIO.OutputError("ERROR: Can not load Patient!");
                        }
                        else
                        {
                            // Confirm the delink of Patient from Illness
                            if (ConIO.Confirm("Remove Patient from Illness?"))
                            {
                                if (!this.Fachkonzept.UnLinkPatientIllness(patient, this.CurrentIllness))
                                {
                                    ConIO.OutputError("ERROR: Can not delink Patient from Illness!");
                                }
                            }
                            this.GoTo("illness-patient", "illness-patientlist");
                        }
                        return(true);
                    }
                    break;
                }
                break;
            }
            return(false);
        }