//XML - Elemente zuweisen auf die jeweiligen Variablen
        public static Reservation switchReservation(XElement parameter, Reservation res, String[] boolRooms,int index)
        {
            //Index ... stelle von boolRooms

            XElement variable = parameter.Descendants("name").FirstOrDefault();
            XElement value = parameter.Descendants("value").FirstOrDefault();
 
                switch (variable.Value)
                {
                    case "id_channel":
                        res.bu.id_channel = Convert.ToInt32(value.Value);
                        break;
                    case "reservation_code":
                        res.bu.reservationCode = Convert.ToInt32(value.Value);
                        break;
                    case "status":
                        res.bu.idStatus = Convert.ToInt32(value.Value);
                        break;
                    case "amount":
                        if (boolRooms != null)
                        {
                            //überprüfen anzahl men (richtig setzten und nicht alle)
                            res.bu.preisBuchung = Convert.ToDecimal(manager.repZimmerTyp.
                                Get().Where(a => a.idZimmerTyp == Convert.ToInt32(boolRooms.ElementAt(index))).FirstOrDefault().preis, new CultureInfo("en-US"));
                        }
                        else
                        {
                            res.bu.preisBuchung = Convert.ToDecimal(value.Value, new CultureInfo("en-US"));
                        }
                        break;
                    case "orig_amount":
                        if (boolRooms != null)
                        {
                            //überprüfen anzahl men (richtig setzten und nicht alle)
                            res.bu.originalPreisBuchung = Convert.ToDecimal(manager.repZimmerTyp.
                                Get().Where(a => a.idZimmerTyp == Convert.ToInt32(boolRooms.ElementAt(index))).FirstOrDefault().preis, new CultureInfo("en-US"));
                        }
                        else
                        {
                            res.bu.originalPreisBuchung = Convert.ToDecimal(value.Value, new CultureInfo("en-US"));
                        }
                        break;
                    case "was_modified": // ob es geändert wurde (0 ok, 1 not)
                        res.bu.wurdeKorrigiert = Convert.ToInt32(value.Value);
                        break;
                    case "modified_reservations": // wenn geändert wurde dann rcode gesetzt, ansonst null
                        res.bu.welcheBuchung = value.Value != ""?Convert.ToInt32(value.Value):0;
                        break;
                    case "date_arrival":
                        res.bu.vonBuchung = Convert.ToDateTime(value.Value);
                        break;
                    case "date_departure":
                        res.bu.bisBuchung = Convert.ToDateTime(value.Value);
                        break;
                    case "date_received":
                        res.bu.eingegangenBuchung = Convert.ToDateTime(value.Value);
                        break;
                    case "boards":
                        res.bu.board = value.Value;
                        break;
                    case"men":
                        if (boolRooms != null)
                        {
                            //überprüfen anzahl men (richtig setzten und nicht alle)
                            res.bu.erwachseneBuchung = Convert.ToInt32(manager.repZimmerTyp.
                                Get().Where(a=>a.idZimmerTyp == Convert.ToInt32(boolRooms.ElementAt(index))).FirstOrDefault().anzahlErw);
                        }
                        else
                        {
                            res.bu.erwachseneBuchung = Convert.ToInt32(value.Value);
                        }
                        break;
                    case "children":
                        res.bu.kinderBuchung = Convert.ToInt32(value.Value);
                        break;
                    case "customer_notes":
                        res.bu.notizen = value.Value;
                        break;
                    case "rooms":
                            if (boolRooms != null) 
                            {
                                res.bu.idZimmerTyp = Convert.ToInt32(boolRooms.ElementAt(index));
                            }
                            else 
                            {
                                res.bu.idZimmerTyp = Convert.ToInt32(value.Value);
                            }
                        break;


                    //Kunden anlegen oder exestierende verwenden ??
                    case "customer_city":
                        res.kunde.Ort = value.Value;
                        break;
                    case "customer_country":
                        res.kunde.Land = value.Value;
                        break;
                    case "customer_mail":
                        res.kunde.emailBuchung = value.Value;
                        break;
                    case "customer_name":
                        res.kunde.vornameKunde = value.Value;
                        break;
                    case "customer_surname":
                        res.kunde.nachnameKunde = value.Value;
                        break;
                    case "customer_phone":
                        res.kunde.telefonKunde = value.Value;
                        break;
                    case "customer_address":
                        res.kunde.adresseKunde = value.Value;
                        break;
                    case "customer_language":
                        res.kunde.Sprache = value.Value;
                        break;
                    case "customer_zip":
                        //PLZ
                        res.kunde.PLZ =value.Value;
                        break;
                }
            return res;
        }
        //führt Status aus (cancelled, save,...)
        public static bool doStatusTask(Reservation res)
        {
            //neuer kunde oder existierenden übernehmen
            var exists = customerExists(res.kunde);
            #region untere Abfrage
            //if (exists == 0)
            //{ //erstellen von kunde wenn nicht exisitert
            //    res.bu.idKunde = res.kunde.idKunde; // kunde setzten wenn er noch nicht existierte
            //}
            //else
            //{
            //    res.bu.idKunde = exists;
            //}
            #endregion

            //abkürzung von oben, kunde setzten wenn er noch nicht existierte
            res.bu.idKunde = (exists == 0) ? res.kunde.idKunde : exists;

            //wenn notizen über die länge von 255 gehen
            res.bu.notizen = (res.bu.notizen.Length >= 255) ? "" : res.bu.notizen;
 
            switch (res.bu.idStatus)
            {                 
                case 1:
                    DataHrm.Manager.repBuchung.CreateFetch(res.bu);
                    break;
                case 2:
                    break;
                case 3:
                    break;
                case 4:
                    break;
                case 5:
                    //Buchung suchen mit gleichen Daten die gelöscht werden soll
                    Buchung b = DataHrm.Manager.repBuchung.Get().
                        Where(a=> a.idKunde == res.bu.idKunde && a.vonBuchung == res.bu.vonBuchung &&
                              a.bisBuchung == res.bu.bisBuchung && a.idZimmerTyp == res.bu.idZimmerTyp).
                              FirstOrDefault();
                    if (b != null)
                    {
                        DataHrm.Manager.repBuchung.DeleteFetch(b);
                    }
                    else 
                    { 
                        return false;
                    }
                    break;
            }
             return true;
        }
        //get parameters per room + speicherung
        public static bool getParameters(List<XElement> xmlRooms)
        {
            #region variablenDeklaration
                Reservation res = new Reservation();
                res.bu = new Buchung();
                res.kunde = new Kunde();
                String[] boolRooms; //Wenn eine Buchung mehrere Zimmer enthält
                bool doTasks = true; // ob speichern und löschen erfolgreich war
            #endregion

            foreach (XElement xele in xmlRooms)
            {  
                List<Buchung> saveBookings = new List<Buchung>();

                //prüft ob Buchung mit mehreren zimmern ist (rooms: 11,11,11,11)
                boolRooms = moreRooms(xele);

                if (boolRooms != null && doTasks) { 
                    for (int i = 0; i < boolRooms.Length; i++)
                    {
                        foreach (XElement parameter in xele.Descendants("member"))
                        {
                            res = switchReservation(parameter, res, boolRooms,i);
                        }
                      doTasks =  doStatusTask(res);
                       res.bu = new Buchung();
                       res.kunde = new Kunde();
                    }
                }
                else if(doTasks) { 

                    foreach (XElement parameter in xele.Descendants("member"))
                    {
                        res = switchReservation(parameter, res, boolRooms,0);
                    }
                  doTasks =  doStatusTask(res);
                    res.bu = new Buchung();
                    res.kunde = new Kunde();
                }                
            }
            return doTasks;
        }