public ActionResult Apartament(int Id, string dataOd, string dataDo)
        {
            var ap = db.Apartamenty.Include("Wizyty").Include("UdogodnieniaApartamenty.Udogodnienie").First(x => x.IdApartamentu == Id);

            var model = new ApartamentyReservationViewModel(ap)
            {
                DataOd = this.StringToDateTime(dataOd),
                DataDo = this.StringToDateTime(dataDo),
            };

            return(View(model));
        }
        public ActionResult Apartament(ApartamentyReservationViewModel model)
        {
            var userId = User.Identity.GetUserId();

            if (userId == null)
            {
                return(RedirectToAction("Login", "Account",
                                        new
                {
                    returnUrl = Request.Url.AbsolutePath + "?dataOd=" + this.DateTimeToString(model.DataOd) + "&dataDo=" + this.DateTimeToString(model.DataDo)
                }));
            }

            var ap = db.Apartamenty.Include("UdogodnieniaApartamenty.Udogodnienie").First(x => x.IdApartamentu == model.IdApartamentu);

            if (model.DataOd > model.DataDo)
            {
                ViewData["errorInfo"] = "Nie można zarezerwować apartamentu. Data od jest większa niż data do.";

                model = new ApartamentyReservationViewModel(ap)
                {
                    DataOd = model.DataOd,
                    DataDo = model.DataDo
                };

                return(View(model));
            }

            if (db.Wizyty == null || !db.Wizyty.Any(w => w.IdApartamentu == model.IdApartamentu && !(w.DataOd > model.DataDo || w.DataDo < model.DataOd)))
            {
                if (ap.Wizyty == null)
                {
                    ap.Wizyty = new List <Wizyty>();
                }

                db.Wizyty.Add(new Wizyty()
                {
                    IdApartamentu  = model.IdApartamentu,
                    DataOd         = model.DataOd,
                    DataDo         = model.DataDo,
                    DataRezerwacji = DateTime.Today,
                    IdKlient       = userId
                });

                db.SaveChanges();

                return(RedirectToAction("MojeWizyty"));
            }
            else
            {
                ViewData["errorInfo"] = "Nie można zarezerwować apartamentu. W dniach " + DateTimeToString(model.DataOd) + " - " + DateTimeToString(model.DataDo) + " jest on niedostępny.";

                model = new ApartamentyReservationViewModel(ap)
                {
                    DataOd = model.DataOd,
                    DataDo = model.DataDo
                };

                return(View(model));
            }
        }