[ValidateAntiForgeryToken] // védelem XSRF támadás ellen public IActionResult Index(Int32?apartmentId, RentViewModel rent) { if (apartmentId == null || rent == null) { return(RedirectToAction("Index", "Home")); } rent.Apartment = _travelService.GetApartment(apartmentId); if (rent.Apartment == null) { return(RedirectToAction("Index", "Home")); } switch (_travelService.ValidateRent(rent.RentStartDate, rent.RentEndDate, apartmentId.Value)) { case RentDateError.StartInvalid: ModelState.AddModelError("RentStartDate", "A kezdés dátuma nem megfelelő (túl korai, vagy nem fordulónapra esik)!"); break; case RentDateError.EndInvalid: ModelState.AddModelError("RentEndDate", "A megadott foglalási idő érvénytelen (a foglalás vége korábban van, mint a kezdete)!"); break; case RentDateError.LengthInvalid: ModelState.AddModelError("RentEndDate", "A megadott foglalási idő érvénytelen (egész heteket lehet csak foglalni)!"); break; case RentDateError.Conflicting: ModelState.AddModelError("RentStartDate", "A megadott időpontban a szállás már foglalt!"); break; } if (!ModelState.IsValid) { return(View("Index", rent)); } String userName; // bejelentkezett felhasználó esetén nem kell felvennünk az új felhasználót if (HttpContext.Session.GetString("user") != null) { userName = HttpContext.Session.GetString("user"); } else { if (!_accountService.Create(rent, out userName)) { ModelState.AddModelError("", "A foglalás rögzítése sikertelen, kérem próbálja újra!"); return(View("Index", rent)); } } if (!_travelService.SaveRent(apartmentId, userName, rent)) { ModelState.AddModelError("", "A foglalás rögzítése sikertelen, kérem próbálja újra!"); return(View("Index", rent)); } // kiszámoljuk a teljes árat rent.TotalPrice = _travelService.GetPrice(apartmentId, rent); ViewBag.Message = "A foglalását sikeresen rögzítettük!"; return(View("Result", rent)); }