public ActionResult PostDetails(int?id, LocationBookingViewModel model) { if (!DoesLocationExist(id)) { return(RedirectToAction("Index")); } if (model.From > model.To) { ModelState.AddModelError("From", "Van datum moet voor Tot datum liggen"); } if (!ModelState.IsValid) { return(Details((int)id, model)); } // Only allow booking if the location is not yet booked during this period var bookingsRepository = _unitOfWork.BookingsRepository; bool isAlreadyBooked = bookingsRepository.IsLocationBookedDuringPeriod((int)id, model.From, model.To); if (isAlreadyBooked) { ModelState.AddModelError(string.Empty, "Locatie is al geboekt in deze periode"); return(Details((int)id, model)); } try { DbBooking booking = new DbBooking(); booking.LocationId = (int)id; booking.Organisation = model.Organisation; booking.StartDateTime = model.From; booking.EndDateTime = model.To; booking.StatusId = (int)EBookingStatus.Pending; booking.UserId = ((AuthenticatedUser)User).Id; bookingsRepository.Insert(booking); TempData["AlertType"] = "success"; TempData["AlertMessage"] = "De aanvraag om deze locatie te boeken van " + model.From.Date + " tot " + model.To.Date + " is successvol ingediend."; } catch { TempData["AlertType"] = "danger"; TempData["AlertMessage"] = "Er is iets fout gelopen tijdens het verwerken van de boeking!"; return(Details((int)id, model)); } return(RedirectToAction("Details", new { id = id })); }
private ActionResult Details(int id, LocationBookingViewModel model = null) { var locationsRepository = _unitOfWork.LocationsRepository; DbLocation location = locationsRepository.Get(id); ViewBag.Location = location; var locationReviewsRepository = _unitOfWork.LocationReviewsRepository; IList <DbLocationReview> locationReviews = locationReviewsRepository.GetAllByLocationId(id); ViewBag.LocationReviews = locationReviews; string locationImagesDirectoryPath = HostingEnvironment.MapPath("~/Resources/Location/" + location.Id + "/Images/"); string[] locationImagesPaths = new string[0]; if (Directory.Exists(locationImagesDirectoryPath)) { locationImagesPaths = Directory.GetFiles(locationImagesDirectoryPath); for (int x = 0; x < locationImagesPaths.Length; x++) { locationImagesPaths[x] = locationImagesPaths[x].Replace(HostingEnvironment.ApplicationPhysicalPath, "/"); } } ViewBag.LocationImagesPaths = locationImagesPaths; string calenderEventArray = "["; foreach (DbBooking booking in location.Bookings) { if (booking.StatusId != (int)EBookingStatus.Cancelled && booking.StatusId != (int)EBookingStatus.Denied) { calenderEventArray += "{ startDate: '" + booking.StartDateTime.Date.ToString("yyyy-MM-dd") + "', endDate: '" + booking.EndDateTime.Date.ToString("yyyy-MM-dd") + "'},"; } } calenderEventArray += "]"; ViewBag.CalenderEventArray = calenderEventArray; return(View(model)); }