Пример #1
0
        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));
        }
Пример #2
0
        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);
        }