public ActionResult CreateBooking(BookingViewModel model)
        {
            using (var repo = new BookingRepository())
            {
                //Double check no new booking was made while user captured data
                var available = new BookingChecker().CheckBookingAvailable(model.Date, repo);
                if (!available)
                {
                    string message = $"There are no more bookings available for the selected date {model.Date.ToShortDateString()}";
                    ModelState.AddModelError("Date", message);
                    return(RedirectToAction(nameof(MessageBooking), new { Message = message }));
                }
                if (ModelState.IsValid)
                {
                    var entity = new Booking {
                        Date  = model.Date,
                        Name  = model.Name,
                        Email = model.Email
                    };
                    var result = repo.CreateBooking(entity);

                    if (result.ID != 0)
                    {
                        return(RedirectToAction(nameof(MessageBooking), new { Message = $"You're booking was successfully created.{Environment.NewLine}Thank you." }));
                    }
                }

                return(View(model));
            }
        }
示例#2
0
        public void NotAvailableIfMaxExceeded()
        {
            using (var repo = new InMemoryBookingRepository())
            {
                var date      = new DateTime(2019, 3, 13);
                var checker   = new BookingChecker();
                var available = checker.CheckBookingAvailable(date, repo);

                Assert.IsFalse(available);
            }
        }
 public ActionResult Index(DateCheckViewModel model)
 {
     using (var repo = new BookingRepository())
     {
         var available = new BookingChecker().CheckBookingAvailable(model.Date, repo);
         if (!available)
         {
             string message = $"There are no more bookings available for the selected date {model.Date.ToShortDateString()}";
             ModelState.AddModelError("Date", message);
             return(RedirectToAction(nameof(MessageBooking), new { Message = message }));
         }
         if (ModelState.IsValid)
         {
             return(RedirectToAction(nameof(CreateBooking), new { Date = model.Date }));
         }
         return(View(model));
     }
 }