private void Page_Loaded(object sender, RoutedEventArgs e)
        {

            ObservableCollection<ColumnData> datas = new ObservableCollection<ColumnData>();


            //Filter von Buchunge mit DAtum und Kunde
            List<Buchung> buchungen = hm.repBuchung.Get(includes: "Kunde,Zimmer,ZimmerTyp")
                .Where(z => z.idZimmer == null)
                .OrderBy(a => a.vonBuchung)
                .ToList();


            ColumnData addData = new ColumnData();

            foreach (Buchung buch in buchungen)
            {
                addData.kunde = buch.Kunde;
                addData.buchung = buch;
                datas.Add(addData);
                addData = new ColumnData();
            }


            //Datagrid + Combobox füllen
            ReservierungData.ItemsSource = datas;
            cbZimmerEdit.ItemsSource = hm.repZimmer.Get().ToList();

        }
        private void createBill_Click(object sender, RoutedEventArgs e)
        {
            ObservableCollection<ColumnData> datas = new ObservableCollection<ColumnData>();
            //inputs dürfen nicht null sein
            if (dpVon.SelectedDate != null && dpBis.SelectedDate != null)
            {


                //if dpVon.SelectedDate == null -> DateTime.Now
                // DateTime von = dpVon.SelectedDate ?? DateTime.Now;
                DateTime von = (DateTime)dpVon.SelectedDate;
                DateTime bis = (DateTime)dpBis.SelectedDate;

                //Filter von Buchunge mit DAtum und Kunde
                List<Buchung> buchungen = hm.repBuchung.Get(includes: "Zimmer,Kunde,ZimmerTyp")
                    .Where(b => b.vonBuchung.CompareTo(von) >= 0 && b.vonBuchung.CompareTo(bis) <= 0 || // vonbuchung is früher als value // bisbuchung ist später als value ODER
                    b.bisBuchung.CompareTo(von) >= 0 && b.bisBuchung.CompareTo(bis) <= 0) // vonbuchung is früher als value  // bisbuchung is später als value                                                            
                    .ToList();

                ColumnData addData = new ColumnData();
                List<Kunde> kunden = hm.repKunde.Get().ToList();


                foreach (Buchung buch in buchungen)
                {
                    //  addData.kunde = k;
                    addData.kunde = kunden.Where(k => k.idKunde == buch.idKunde).FirstOrDefault();
                    addData.buchung = buch;
                    datas.Add(addData);
                    addData = new ColumnData();
                }
               
             
            }
             ReservierungData.ItemsSource = datas;

       


        }
        public void FillData(ColumnData data)
        {
            try { 
            this.tbVorName.DataContext = data.kunde;
            this.tbName.Text = data.kunde.nachnameKunde;
            this.tbAdresse.Text = data.kunde.adresseKunde;
            this.tbPlzOrt.Text = data.kunde.Ort;
            this.tbTelefonN.Text = data.kunde.telefonKunde.ToString();
            this.dpVonEdit.SelectedDate = data.buchung.vonBuchung;
            this.dpBisEdit.SelectedDate = data.buchung.bisBuchung;
           //ComboBox

            List<Buchung> bookings = hm.repBuchung.Get(includes: "Kunde, Zimmer").Where(c => c.vonBuchung < dpBisEdit.SelectedDate).Where(d => d.bisBuchung > dpVonEdit.SelectedDate).ToList();
            List<Zimmer> rooms = hm.repZimmer.Get().ToList();

            foreach (var buch in bookings)
            {
                try
                {
                    var itemToRemove = rooms.Single(r => r.idZimmer == buch.idZimmer);
                    rooms.Remove(itemToRemove);
                }
                catch (Exception ex) { }
            }

            this.cbZimmerEdit.ItemsSource = rooms;
           
           // this.cbZimmerEdit.SelectedValue = data.buchung.Zimmer.idZimmer;
            this.tbErw.Text = data.buchung.erwachseneBuchung.ToString();
            this.tbKind.Text = data.buchung.kinderBuchung.ToString();
            }
            catch (NullReferenceException nullRef)
            {
                Console.WriteLine("Buchung nicht mehr vorhanden --> Zimmer erfolgreich hinzugefügt");
            }
        }
        private void dpVon_SelectedDateChanged(object sender, SelectionChangedEventArgs e)
        {
            ObservableCollection<ColumnData> datas = new ObservableCollection<ColumnData>();
            dpBis.DisplayDateStart = Convert.ToDateTime(dpVon.SelectedDate).AddDays(1);
            //inputs dürfen nicht null sein
            if (dpBis.SelectedDate != null && dpVon.SelectedDate != null)
            {
                DateTime bis = (DateTime)dpBis.SelectedDate;
                List<Buchung> buchungen = new List<Buchung>();
                if (dpVon.SelectedDate != null)
                {
                    DateTime von = (DateTime)dpVon.SelectedDate;
                    //Filter von Buchunge mit DAtum und Kunde
                    buchungen = hm.repBuchung.Get(includes: "Zimmer,Kunde")
                        .Where(b => b.vonBuchung.CompareTo(von) >= 0 && b.vonBuchung.CompareTo(bis) <= 0 || // vonbuchung is früher als value // bisbuchung ist später als value ODER
                        b.bisBuchung.CompareTo(von) >= 0 && b.bisBuchung.CompareTo(bis) <= 0) // vonbuchung is früher als value  // bisbuchung is später als value                                                            
                        .ToList();
                }
                else
                {
                    DateTime help = (DateTime)dpBis.SelectedDate;
                    dpVon.SelectedDate = help.AddDays(-5);
                    DateTime von = (DateTime)dpVon.SelectedDate;

                    buchungen = hm.repBuchung.Get(includes: "Zimmer,Kunde")
                        .Where(b => b.vonBuchung.CompareTo(von) >= 0 && b.vonBuchung.CompareTo(bis) <= 0 || // vonbuchung is früher als value // bisbuchung ist später als value ODER
                        b.bisBuchung.CompareTo(von) >= 0 && b.bisBuchung.CompareTo(bis) <= 0) // vonbuchung is früher als value  // bisbuchung is später als value                                                            
                        .ToList();
                }
                
                ColumnData addData = new ColumnData();
                List<Kunde> kunden = hm.repKunde.Get().ToList();


                foreach (Buchung buch in buchungen)
                {                    
                    addData.kunde = kunden.Where(k => k.idKunde == buch.idKunde).FirstOrDefault();
                    addData.buchung = buch;
                    datas.Add(addData);
                    addData = new ColumnData();
                }
            }
            ReservierungData.ItemsSource = datas;
        }
        //änderungen speichern
        private void buSaveEdit_Click(object sender, RoutedEventArgs e)
        {
            try { 
            Zimmer zim = (Zimmer)cbZimmerEdit.SelectedItem;
            int id = (int)cbZimmerEdit.SelectedValue;
            zim.idZimmer = id;
            ColumnData col = (ColumnData)ReservierungData.SelectedItem;
            col.buchung.vonBuchung = (DateTime)dpVonEdit.SelectedDate;
            col.buchung.bisBuchung = (DateTime)dpBisEdit.SelectedDate;

           // col.buchung.Zimmer = zim;
            col.buchung.idZimmer = zim.idZimmer;
            col.buchung.erwachseneBuchung = int.Parse(tbErw.Text);
            col.buchung.kinderBuchung = (tbKind.Text != "")? int.Parse(tbKind.Text):0;

            Buchung b = col.buchung;
            hm.repBuchung.Update(b);
            }
            catch (NullReferenceException ex)
            {

            }
            //Aktualisieren
            ObservableCollection<ColumnData> datas = new ObservableCollection<ColumnData>();
            //Filter von Buchunge mit DAtum und Kunde
            List<Buchung> buchungen = hm.repBuchung.Get(includes: "Kunde,Zimmer,ZimmerTyp")
                .Where(z => z.idZimmer == null)
                .OrderBy(a => a.vonBuchung)
                .ToList();


            ColumnData addData = new ColumnData();

            foreach (Buchung buch in buchungen)
            {
                addData.kunde = buch.Kunde;
                addData.buchung = buch;
                datas.Add(addData);
                addData = new ColumnData();
            }
            //Datagrid + Combobox füllen
            ReservierungData.ItemsSource = datas;
            cbZimmerEdit.ItemsSource = hm.repZimmer.Get().ToList();
            this.tbVorName.DataContext = null;
            this.tbName.Text = null;
            this.tbAdresse.Text = null;
            this.tbPlzOrt.Text = null;
            this.tbTelefonN.Text = null;
            this.dpVonEdit.SelectedDate = null;
            this.dpBisEdit.SelectedDate = null;
            this.tbErw.Text = null;
            this.tbKind.Text = null;
           // ReservierungData.SelectedIndex = 5;
        }