public IActionResult PriceCheckAuthorize(DateCheckFormModel dateCheckModel) { DateTime today = DateTime.UtcNow; var hallExists = this.hallsServices.HallExists(dateCheckModel.HallId); var enumExists = Enum.IsDefined(typeof(RentTimeEnum), dateCheckModel.RentTime); if (dateCheckModel.Date == null || !hallExists || !enumExists) { TempData.AddErrorMessage("Please make sure all required fields are filled out correctly"); return(RedirectToAction(nameof(DateCheck), dateCheckModel)); } DateTime eventDate = dateCheckModel.Date ?? DateTime.UtcNow; if (eventsServices.EventExists(eventDate, dateCheckModel.RentTime, dateCheckModel.HallId)) { TempData.AddErrorMessage("The selected Hall and Date are already reserved"); return(RedirectToAction(nameof(DateCheck), dateCheckModel)); } if (eventDate.Date < today.Date) { TempData.AddErrorMessage("You cannot make a reservation for a past date"); return(RedirectToAction(nameof(DateCheck), dateCheckModel)); } var priceCheckViewModel = GetEventInfoAndPriceCheckViewModel(dateCheckModel, eventDate); return(View(priceCheckViewModel)); }
private EventInfoAndPriceCheckViewModel GetEventInfoAndPriceCheckViewModel(DateCheckFormModel dateCheckModel, DateTime eventDate) { Hall currentHall = this.hallsServices.GetHallById(dateCheckModel.HallId); DayOfWeek eventDateOfWeek = eventDate.DayOfWeek; decimal hallRentalPrice = dateCheckModel.TotalPrice; if (hallRentalPrice <= 0) { hallRentalPrice = eventsServices.CheckHallStartPrice(currentHall, eventDateOfWeek, dateCheckModel.RentTime); } string hallName = currentHall.Name; string rentTimeDisplay = eventsServices.GetRentTimeDisplay(dateCheckModel.RentTime); var startTime = eventsServices.GetStartTimeDefault(dateCheckModel.RentTime, eventDate); var endTime = eventsServices.GetEndTimeDefault(dateCheckModel.RentTime, eventDate); var eventPriceModel = new EventPriceModel() { HallPrice = hallRentalPrice, TotalPrice = hallRentalPrice }; var priceCheckViewModel = new EventInfoAndPriceCheckViewModel() { Date = eventDate, RentTime = dateCheckModel.RentTime, HallId = dateCheckModel.HallId, HallName = hallName, RentTimeDisplay = rentTimeDisplay, HallRentalPrice = hallRentalPrice, TotalPrice = hallRentalPrice, SecurityCostPerHour = currentHall.SecurityGuardCostPerHour, HallCapacity = currentHall.HallCapacity, TablesAndChairsCostPerPerson = currentHall.TablesAndChairsCostPerPerson, EventPriceModel = eventPriceModel, EventStart = startTime, EventEnd = endTime, SecurityStartTime = startTime, SecurityEndTime = endTime }; return(priceCheckViewModel); }