public ActionResult CreateKunde(Kunde neuerKunde)
        {
            try
            {
                this.kundenService.KundeSpeichern(neuerKunde, 1);

                return RedirectToAction("Index");
            }
            catch
            {
                return View();
            }
        }
        /// <summary>
        /// Gibt alle Kunden von allen Geschaeftspaertnern zurueck
        /// </summary>
        /// <returns>List aller Kunden</returns>
        public List<Kunde> GetAlleKunden()
        {
            var result = new List<Kunde>();

            MySqlCommand command = new MySqlCommand(
                "SELECT k.ID, k.KundeSeit, k.KundenNr, p.Vorname, p.Nachname,p.GeschlechtID, p.Geburtsdatum, p.Fax, p.Telefon, p.Strasse, p.Hausnummer, p.PLZ, p.Ort, p.`E-Mail`, p.MobilNr FROM Kunden k, Person p WHERE k.PersonId=p.ID", this.connection);
            var reader = command.ExecuteReader();

            try
            {
                if (reader.HasRows)
                {
                    while (reader.Read())
                    {
                        var kunde = new Kunde();
                        kunde.Id = reader.IsDBNull(reader.GetOrdinal("ID")) != true ? reader.GetInt32("ID") : 0;
                        kunde.KundeSeit = reader.IsDBNull(reader.GetOrdinal("KundeSeit")) != true ? reader.GetDateTime("KundeSeit") : DateTime.MinValue;
                        kunde.Vorname = reader.IsDBNull(reader.GetOrdinal("Vorname")) != true ? reader.GetString("Vorname") : "";
                        kunde.Nachname = reader.IsDBNull(reader.GetOrdinal("Nachname")) != true ? reader.GetString("Nachname") : "";
                        kunde.Geburtstag = reader.IsDBNull(reader.GetOrdinal("Geburtsdatum")) != true ? reader.GetDateTime("Geburtsdatum").Date : DateTime.MinValue;
                        kunde.Fax = reader.IsDBNull(reader.GetOrdinal("Fax")) != true ? reader.GetString("Fax") : "";
                        kunde.Telefon = reader.IsDBNull(reader.GetOrdinal("Telefon")) != true ? reader.GetString("Telefon") : "";
                        kunde.Strasse = reader.IsDBNull(reader.GetOrdinal("Strasse")) != true ? reader.GetString("Strasse") : "";
                        kunde.Hausnummer = reader.IsDBNull(reader.GetOrdinal("Hausnummer")) != true ? reader.GetString("Hausnummer") : "";
                        kunde.PLZ = reader.IsDBNull(reader.GetOrdinal("PLZ")) != true ? reader.GetString("PLZ") : "";
                        kunde.Ort = reader.IsDBNull(reader.GetOrdinal("Ort")) != true ? reader.GetString("Ort") : "";
                        kunde.EMail = reader.IsDBNull(reader.GetOrdinal("E-Mail")) != true ? reader.GetString("E-Mail") : "";
                        kunde.KundenNummer = reader.IsDBNull(reader.GetOrdinal("KundenNr")) != true ? reader.GetString("KundenNr") : "";
                        kunde.Geschlecht = reader.IsDBNull(reader.GetOrdinal("GeschlechtID")) != true
                        ? reader.GetBoolean(reader.GetOrdinal("GeschlechtID"))
                        : true;
                        kunde.MobilNr = reader.IsDBNull(reader.GetOrdinal("MobilNr")) != true
                     ? reader.GetString("MobilNr")
                     : "";
                        result.Add(kunde);
                    }
                }

                reader.Close();
            }
            catch (Exception exception)
            {
                reader.Dispose();
            }

            return result;
        }
        public ActionResult Edit(Kunde kunde)
        {
            try
            {
                this.kundenService.KundenAktualisieren(kunde);

                return RedirectToAction("Index");
            }
            catch
            {
                ViewBag.ErrorMessage = "Es ist ein Fehler während der Aktualisierung aufgetreten.";
                return View(kunde);
            }
        }
        /// <summary>
        /// Gibt einen Wert zurueck ob der Kunde gespeichert wurde
        /// </summary>
        /// <param name="neuerKunde">Der zu speichernde Kunde</param>
        /// <returns>true oder false</returns>
        public bool KundeSpeichern(Kunde neuerKunde,int gpId)
        {
            var command = new MySqlCommand("INSERT INTO person (Vorname, Nachname, Geburtsdatum, GeschlechtID, Fax, Telefon, Strasse, Hausnummer, PLZ, Ort, `E-Mail`,MobilNr) VALUES (@Vorname, @Nachname, @Geburtsdatum, @Geschlecht, @Fax, @Telefon, @Strasse, @Hausnummer, @PLZ, @Ort, @EMail, @MobilNr)", this.connection);
            command.Parameters.AddWithValue("@Vorname", neuerKunde.Vorname);
            command.Parameters.AddWithValue("@Nachname", neuerKunde.Nachname);
            command.Parameters.AddWithValue("@Geburtsdatum", neuerKunde.Geburtstag);
            command.Parameters.AddWithValue("@Geschlecht", neuerKunde.Geschlecht);
            command.Parameters.AddWithValue("@Fax", neuerKunde.Fax != "" ? neuerKunde.Fax : null);
            command.Parameters.AddWithValue("@Telefon", neuerKunde.Telefon != "" ? neuerKunde.Telefon : null);
            command.Parameters.AddWithValue("@Strasse", neuerKunde.Strasse != "" ? neuerKunde.Strasse : null);
            command.Parameters.AddWithValue("@PLZ", neuerKunde.PLZ != "" ? neuerKunde.PLZ : null);
            command.Parameters.AddWithValue("@Ort", neuerKunde.Ort != "" ? neuerKunde.Ort : null);
            command.Parameters.AddWithValue("@EMail", neuerKunde.EMail != "" ? neuerKunde.EMail : null);
            command.Parameters.AddWithValue("@Hausnummer", neuerKunde.Hausnummer);
            command.Parameters.AddWithValue("@MobilNr", neuerKunde.MobilNr);

            try
            {
                command.ExecuteNonQuery();
            }
            catch (Exception exception)
            {
                return false;
            }

            var personId = (int)command.LastInsertedId;

            command = new MySqlCommand("INSERT INTO Kunden (KundeSeit, UnternehmenId, EmpfohlenVon, GeschaeftspartnerID, PersonId, KundenNr) VALUES (@KundeSeit, @UnternehmenId, @EmpfohlenVon, @GeschaeftspartnerID, @PersonId, @kdnr);", this.connection);
            command.Parameters.AddWithValue(
                "@KundeSeit", neuerKunde.KundeSeit != DateTime.MinValue ? neuerKunde.KundeSeit : DateTime.Now);
            command.Parameters.AddWithValue(
                "@UnternehmenID", neuerKunde.Unternehmen != null ? neuerKunde.Unternehmen.Id : 0);
            command.Parameters.AddWithValue(
                "@EmpfohlenVon", neuerKunde.EmpfohlenVon != null ? (object)neuerKunde.EmpfohlenVon.Id : null);
            command.Parameters.AddWithValue("@GeschaeftspartnerID", gpId); // todo: gpId als parameter übergeben
            command.Parameters.AddWithValue("@PersonId", personId);
            command.Parameters.AddWithValue("@kdnr", neuerKunde.KundenNummer);

            try
            {
                command.ExecuteNonQuery();
            }
            catch (Exception exception)
            {
                return false;
            }

            return true;
        }
        /// <summary>
        /// Gibt einen Wert zurueck ob der Kunde aktualisiert wurde
        /// </summary>
        /// <param name="kunden">Der vorhandene und zu aktualisierende Kunde</param>
        /// <returns>true oder false</returns>
        public bool KundenAktualisieren(Kunde kunden)
        {
            var command = new MySqlCommand("SELECT PersonId From Kunden WHERE ID=@id",this.connection);
            command.Parameters.AddWithValue("@id", kunden.Id);
            var id = command.ExecuteScalar();

            command = new MySqlCommand("UPDATE Person SET Vorname=@Vorname, Nachname=@Nachname, Geburtsdatum=@Geburtsdatum, GeschlechtID=@Geschlecht, Fax=@Fax, Telefon=@Telefon, Strasse=@Strasse, Hausnummer=@Hausnummer, PLZ=@PLZ, Ort=@Ort, `E-Mail`=@EMail, MobilNr=@MobilNr WHERE ID=@id", this.connection);
            command.Parameters.AddWithValue("@Vorname", kunden.Vorname);
            command.Parameters.AddWithValue("@Nachname", kunden.Nachname);
            command.Parameters.AddWithValue("@Geburtsdatum", kunden.Geburtstag);
            command.Parameters.AddWithValue("@Geschlecht", kunden.Geschlecht);
            command.Parameters.AddWithValue("@Fax", kunden.Fax != "" ? kunden.Fax : null);
            command.Parameters.AddWithValue("@Telefon", kunden.Telefon != "" ? kunden.Telefon : null);
            command.Parameters.AddWithValue("@Strasse", kunden.Strasse != "" ? kunden.Strasse : null);
            command.Parameters.AddWithValue("@PLZ", kunden.PLZ != "" ? kunden.PLZ : null);
            command.Parameters.AddWithValue("@Ort", kunden.Ort != "" ? kunden.Ort : null);
            command.Parameters.AddWithValue("@EMail", kunden.EMail != "" ? kunden.EMail : null);
            command.Parameters.AddWithValue("@Hausnummer", kunden.Hausnummer);
            command.Parameters.AddWithValue("@id", Convert.ToInt32(id));
            command.Parameters.AddWithValue("@MobilNr", kunden.MobilNr);

            try
            {
                command.ExecuteNonQuery();
            }
            catch (Exception exception)
            {
                return false;
            }

            command = new MySqlCommand("UPDATE Kunden SET KundenNr=@kdnr WHERE ID=@id",this.connection);
            command.Parameters.AddWithValue("@kdnr", kunden.KundenNummer);
            command.Parameters.AddWithValue("@id", kunden.Id);

            try
            {
                command.ExecuteNonQuery();
            }
            catch (Exception exception)
            {
                return false;
            }

            //var personId = (int)command.LastInsertedId;

            //command = new MySqlCommand("INSERT INTO Kunden (KundeSeit, UnternehmenId, EmpfohlenVon, GeschaeftspartnerID, PersonId) VALUES (@KundeSeit, @UnternehmenId, @EmpfohlenVon, @GeschaeftspartnerID, @PersonId);", this.connection);
            //command.Parameters.AddWithValue(
            //    "@KundeSeit", kunde.KundeSeit != DateTime.MinValue ? kunde.KundeSeit : DateTime.Now);
            //command.Parameters.AddWithValue(
            //    "@UnternehmenID", kunde.Unternehmen != null ? kunde.Unternehmen.Id : 0);
            //command.Parameters.AddWithValue(
            //    "@EmpfohlenVon", kunde.EmpfohlenVon != null ? (object)kunde.EmpfohlenVon.Id : null);
            //command.Parameters.AddWithValue("@GeschaeftspartnerID", gpId); // todo: gpId als parameter übergeben
            //command.Parameters.AddWithValue("@PersonId", personId);

            //try
            //{
            //    command.ExecuteNonQuery();
            //}
            //catch (Exception exception)
            //{
            //    return false;
            //})

            return true;
        }