public ActionResult Laden()
        {
            log.Info("RaumController - Laden - GET");

            FilterModel filterModel = new FilterModel();

            List<RaumModel> raumList = new List<RaumModel>();

            // hier händisch eine Liste von RaumAusstattungen erstellen und dann mappen
            List<Ausstattung> alleAusstattung = RaumVerwaltung.AlleRaumAusstattungen();
            List<RaumAusstattungsModel> raumAusstattungsModel = new List<RaumAusstattungsModel>();

            foreach (var item in alleAusstattung)
            {
                RaumAusstattungsModel ausstattungsModel = new RaumAusstattungsModel()
                {
                    Id = item.Id,
                    Bezeichnung = item.Bezeichnung
                };
                raumAusstattungsModel.Add(ausstattungsModel);
            }

            filterModel.Ausstattung = raumAusstattungsModel;

            filterModel.Art = AutoMapper.Mapper.Map<List<RaumArtModel>>(RaumVerwaltung.AlleRaumArten());

            filterModel.gebuchteRaeume = new RaumBuchungsModel();
            filterModel.gebuchteRaeume.gesuchteRaumListe = AutoMapper.Mapper.Map<List<RaumModel>>(RaumVerwaltung.alleRaeume());
            return View(filterModel);
        }
        public ActionResult KartenAnsicht()
        {
            log.Info("RaumController - Suchen - Get");

            List<RaumModel> gesuchteRaeume = AutoMapper.Mapper.Map<List<RaumModel>>(RaumVerwaltung.GesuchteRaeume());
            RaumBuchungsModel buchungenZeigen = new RaumBuchungsModel();
            buchungenZeigen.gesuchteRaumListe = gesuchteRaeume;
            return View("_KartenAnsicht", buchungenZeigen);
        }
        public ActionResult Erstellen(int Monatnummer)
        {
            log.Info("Rechnung - Erstellen - GET");

            Benutzer aktBenutzer = BenutzerAdministrator.GetUser(User.Identity.Name);

            List <Buchungsdetails> gesuchteBuchungsDetails = RechnungsVerwaltung.MonatsBuchungsDetails((int)aktBenutzer.Firma_id, Monatnummer);

            Rechnung rechnung = RechnungsVerwaltung.LiefereRechnungzuFirmaAusMonat(gesuchteBuchungsDetails);

            RechnungErstellenModel rechnungsModel = new RechnungErstellenModel();

            Firma firma = FirmenVerwaltung.LiefereFirma((int)aktBenutzer.Firma_id);

            rechnungsModel.Rg_Id                = rechnung.Id;
            rechnungsModel.Firmenname           = firma.Bezeichnung;
            rechnungsModel.FirmenstrassenNummer = firma.Nummer;
            rechnungsModel.FirmenOrt            = firma.Ort;
            rechnungsModel.Firmenstrasse        = firma.Strasse;
            rechnungsModel.FirmenPlz            = firma.Plz;
            rechnungsModel.Datum                = (DateTime)rechnung.Datum;
            rechnungsModel.Firmenname           = firma.Bezeichnung;
            rechnungsModel.Gesamtpreis          = gesuchteBuchungsDetails.Sum(x => x.Preis);
            rechnungsModel.Steuerbetrag         = (rechnungsModel.Gesamtpreis / 100) * 20;
            rechnungsModel.RechnungsDetails     = new List <RechnungsDetailModel>();
            foreach (var buchungsDetail in gesuchteBuchungsDetails)
            {
                RechnungsDetailModel model = new RechnungsDetailModel()
                {
                    Buchungs_ID   = buchungsDetail.Id.ToString(),
                    Buchungsdatum = buchungsDetail.Datum,
                    Preis         = buchungsDetail.Preis,
                    RaumNummer    = RaumVerwaltung.GesuchterRaumName(buchungsDetail.Buchung_id)
                };

                rechnungsModel.RechnungsDetails.Add(model);
            }
            DateTime VonDatum = (from x in gesuchteBuchungsDetails orderby x.Datum select x.Datum).FirstOrDefault();
            DateTime BisDatum = (from x in gesuchteBuchungsDetails orderby x.Datum descending select x.Datum).FirstOrDefault();

            return(new Rotativa.ViewAsPdf("Erstellen", rechnungsModel));
        }
        public ActionResult RaumAuslastung()
        {
            List <AuslastungsModel> AuslastungDerRaueme = new List <AuslastungsModel>();
            List <Raum>             alleRaeume          = new List <Raum>();

            alleRaeume = RaumVerwaltung.alleRaeume();
            foreach (var raum in alleRaeume)
            {
                AuslastungsModel model = new AuslastungsModel()
                {
                    Raumbezeichnung = raum.Bezeichnung,
                    AnzahlTage      = BuchungsVerwaltung.AnzahlTage(raum.Id)
                };
                if (model.AnzahlTage > 0)
                {
                    AuslastungDerRaueme.Add(model);
                }
            }

            return(View(AuslastungDerRaueme));
        }
        public ActionResult BuchungsDetails(DateTime StartDatum, DateTime EndDatum, string datumVonBis, int Id)
        {
            log.Info("Buchung - BuchungsDetails - Get");


            BuchungsDetailModel buchungsDetails = new BuchungsDetailModel();

            buchungsDetails = AutoMapper.Mapper.Map <BuchungsDetailModel>(RaumVerwaltung.GesuchterRaum(Id));
            buchungsDetails.RaumAusstattung = new List <RaumAusstattungsFilterModel>();

            List <Raum_Ausstattung> raumAusstattung = RaumVerwaltung.RaumAusstattungEinesRaumes(Id);

            buchungsDetails.RaumAusstattung = new List <RaumAusstattungsFilterModel>();

            foreach (var item in raumAusstattung)
            {
                RaumAusstattungsFilterModel model = new RaumAusstattungsFilterModel()
                {
                    Bezeichnung     = item.Ausstattung.Bezeichnung,
                    Ausstattungs_Id = item.Ausstattungs_Id
                };
                buchungsDetails.RaumAusstattung.Add(model);
            }

            //buchungsDetails.RaumAusstattung = AutoMapper.Mapper.Map<List<RaumAusstattungsFilterModel>>(RaumVerwaltung.RaumAusstattungEinesRaumes(Id));

            List <FirmenAusWahlModel> alleFirmen = AutoMapper.Mapper.Map <List <FirmenAusWahlModel> >(FirmenVerwaltung.LadeAlleFirmen());

            //buchungsDetails.RaumAusstattung = mapRaumAusstattung;
            buchungsDetails.Firma = alleFirmen;

            buchungsDetails.VonDatum = StartDatum;
            buchungsDetails.BisDatum = EndDatum;

            return(View(buchungsDetails));
        }
        public ActionResult Dashboard()
        {
            log.Info("BenutzerController - Dashboard");

            Benutzer aktBenutzer = BenutzerAdministrator.GetUser(User.Identity.Name);

            DashboardModel dashboard = new DashboardModel();
            //User.Identity.Name

            // holt alle Mitarbeiter einer Firma
            List <BenutzerModel> alleMitarbeitereinerFirma = new List <BenutzerModel>();

            if (aktBenutzer.Firma_id != null)
            {
                List <Benutzer> alleBenutzer = BenutzerVerwaltung.LadeMitarbeiterEinerFirma((int)aktBenutzer.Firma_id);
                if (alleBenutzer == null)
                {
                    log.Warn("No stuff was found");
                }
                foreach (var einBenutzer in alleBenutzer)
                {
                    BenutzerModel einMitarbeiter = new BenutzerModel()
                    {
                        Emailadresse = einBenutzer.Emailadresse,
                        Nachname     = einBenutzer.Nachname,
                        Vorname      = einBenutzer.Vorname
                    };
                    alleMitarbeitereinerFirma.Add(einMitarbeiter);
                }
            }
            dashboard.AlleMitarbeiter = alleMitarbeitereinerFirma;

            List <BuchungsAnzeigeModel> alleBuchungen = new List <BuchungsAnzeigeModel>();
            List <Rechnungsdetails>     rechnungsDetailsEinerBuchung = new List <Rechnungsdetails>();
            List <Buchungsdetails>      BuchungsDetailsVonFirma      = new List <Buchungsdetails>();

            List <Buchung> bookingsOfCompany = BuchungsVerwaltung.GebuchteRaeume((int)aktBenutzer.Firma_id);

            dashboard.AlleBuchungen = new List <BuchungsAnzeigeModel>();
            if (bookingsOfCompany != null)
            {
                foreach (var booking in bookingsOfCompany)
                {
                    BuchungsDetailsVonFirma = BuchungsVerwaltung.BuchungsDetailsVonBuchung(booking.Id);

                    Raum aktRaum = RaumVerwaltung.GesuchterRaum(booking.Raum_id);
                    BuchungsAnzeigeModel buchungsmodel = new BuchungsAnzeigeModel();
                    buchungsmodel.Id         = booking.Id;
                    buchungsmodel.Raumnummer = aktRaum.Bezeichnung;
                    buchungsmodel.RaumArt    = aktRaum.Art.Bezeichnung;

                    buchungsmodel.VonDatum = (from x in BuchungsDetailsVonFirma orderby x.Datum select x.Datum).FirstOrDefault();
                    buchungsmodel.BisDatum = (from x in BuchungsDetailsVonFirma orderby x.Datum descending select x.Datum).FirstOrDefault();

                    dashboard.AlleBuchungen.Add(buchungsmodel);
                }
            }

            else
            {
                log.Info("BenutzerController - Dashboard - keine Buchungen für die Firma vorhanden sind");
            }

            dashboard.AlleBuchungen = dashboard.AlleBuchungen.OrderBy(x => x.BisDatum).ToList();

            List <Rechnung> alleRechnungenEinerFirma = RechnungsVerwaltung.RechnungenEinerFirma((int)aktBenutzer.Firma_id);

            List <RechnungsModel> alleRechnungenAnzeigen = new List <RechnungsModel>();


            List <Buchungsdetails> buchungsDetailsDieInRechnungsDetailsvorkommen = new List <Buchungsdetails>();

            Buchungsdetails buchungsDetail = new Buchungsdetails();

            foreach (var rechnung in alleRechnungenEinerFirma)
            {
                List <Rechnungsdetails> RechnungsDetailsEinerRechnung = RechnungsVerwaltung.RechnungsDetailsEinerRechnung(rechnung.Id);
                foreach (var rechnungsDetail  in RechnungsDetailsEinerRechnung)
                {
                    buchungsDetail = RechnungsVerwaltung.BuchungsDetailEinerRechnung(rechnungsDetail.Buchungsdetail_Id);
                    buchungsDetailsDieInRechnungsDetailsvorkommen.Add(buchungsDetail);
                }
            }

            List <int> dates = new List <int>();

            foreach (var buchungsdetail in buchungsDetailsDieInRechnungsDetailsvorkommen)
            {
                if (!dates.Contains(buchungsDetail.Datum.Month))
                {
                    int date = buchungsDetail.Datum.Month;
                    dates.Add(date);
                }
            }

            List <RechnungsModel> alleRechnungen = new List <RechnungsModel>();

            foreach (var item in dates)
            {
                RechnungsModel RgModel = new RechnungsModel()
                {
                    Monat       = Monat(item),
                    Monatnummer = item
                };
                alleRechnungen.Add(RgModel);
            }
            ;


            dashboard.AlleRechnungen = alleRechnungen;

            return(View(dashboard));
        }
        public ActionResult KartenAnsicht(string datumVonBis, int Art_id, int[] ausstattung)
        {
            log.Info("RaumController - Suchen - Post");
            List<Raum> gesuchteRaeume = new List<Raum>();
            RaumBuchungsModel gefilterteRaeume = new RaumBuchungsModel();
            if (ModelState.IsValid)
            {

                try
                {
                    //datumVonBis = "04/12/2017 - 04/21/2017"

                    // VON
                    // "04/12/2017"
                    string von = datumVonBis.Substring(0, 10);

                    // aufteilen des strings in Datumsbestandteile
                    int vonTag = int.Parse(von.Substring(0, 2));
                    int vonMonat = int.Parse(von.Substring(3, 2));
                    int vonJahr = int.Parse(von.Substring(6, 4));

                    // erstelle datetime
                    DateTime anfangsDatum = new DateTime(vonJahr, vonMonat, vonTag);
                    if (anfangsDatum < System.DateTime.Today)
                    {
                        TempData[ConstStrings.WARNING_MESSAGE] = Validierungen.UngueltigesDatum;
                        //return RedirectToAction("KartenAnsicht");
                    }
                    else
                    {
                        // BIS
                        // "13/12/2017"
                        string bis = datumVonBis.Substring(13, 10);

                        // aufteilen des strings in Datumsbestandteile
                        int bisTag = int.Parse(bis.Substring(0, 2));
                        int bisMonat = int.Parse(bis.Substring(3, 2));
                        int bisJahr = int.Parse(bis.Substring(6, 4));

                        // erstelle datetime
                        DateTime endDatum = new DateTime(bisJahr, bisMonat, bisTag);

                        gefilterteRaeume.StartDatum = anfangsDatum;
                        gefilterteRaeume.EndDatum = endDatum;
                        gefilterteRaeume.gesuchteRaumListe = new List<RaumModel>();
                        gefilterteRaeume.gesuchteRaumListe = AutoMapper.Mapper.Map<List<RaumModel>>(RaumVerwaltung.GesuchteRaeume(anfangsDatum, endDatum, Art_id, ausstattung));
                    }
                }
                catch (Exception ex)
                {
                    TempData[ConstStrings.ERROR_MESSAGE] = Validierungen.SuchenFehlgeschlagen;
                    log.Error("RaumController - Suchen - Post - Suchen fehlgeschlagen");

                }
            }

            return PartialView("_KartenAnsicht", gefilterteRaeume);
        }