public async Task <ActionResult> CreateReservation(ApplicationUser user, ReservationDateRangeViewModel reservationDateRangeViewModel, NewReservationMaterialsViewModel reservationMaterialsViewModel) { var requestedMaterials = reservationMaterialsViewModel.Materials .ToDictionary(detail => _materialRepository.FindById(detail.Material.Id), detail => detail.RequestedAmount); user.CreateReservation(reservationDateRangeViewModel.StartDate, reservationDateRangeViewModel.EndDate, requestedMaterials); _reservationRepository.SaveChanges(); await MailService.SendMailAsync(user.Reservations.Last().ReservationBody, "Reservering IIM", user.Email); return(RedirectToAction("Index")); }
public ActionResult Create(ApplicationUser user, ReservationDateRangeViewModel reservationDateRangeViewModel) { reservationDateRangeViewModel.UserType = user.Type; CheckDateRangeModel(reservationDateRangeViewModel, reservationDateRangeViewModel.StartDate, reservationDateRangeViewModel.EndDate, false); var materials = user.WishList.Materials.Select(m => new ReservationDetailSelectionViewModel( m, m.GetAvailableIdentifiersCount(reservationDateRangeViewModel.StartDate, reservationDateRangeViewModel.EndDate, user.Type), 0)); var materialsPicker = new NewReservationMaterialsViewModel(materials, false); var wrapper = new NewReservationViewModel(reservationDateRangeViewModel, materialsPicker); return(View(wrapper)); }
public ActionResult ChangeReservationRange(ApplicationUser user, ReservationDateRangeViewModel reservationDateRangeViewModel, DateTime startDate, DateTime?endDate) { if (ModelState.IsValid) { reservationDateRangeViewModel.UserType = user.Type; reservationDateRangeViewModel.StartDate = startDate; if (endDate != null) { reservationDateRangeViewModel.EndDate = endDate.Value; } CheckDateRangeModel(reservationDateRangeViewModel, reservationDateRangeViewModel.StartDate, reservationDateRangeViewModel.EndDate); } return(RedirectToAction("Create", reservationDateRangeViewModel)); }
public void CheckDateRangeModel(ReservationDateRangeViewModel reservationDateRangeViewModel, DateTime?start, DateTime?end, bool displayError = true) { if (start == null || !(AppSettings.GetStartDateRangeRestriction(reservationDateRangeViewModel.UserType)?.IsDateValid(start.Value) ?? true)) { if (displayError) { reservationDateRangeViewModel.StartDateError = "Deze datum is niet geschikt als begindatum van uw reservatie."; } var defaultStartDateTime = GetDefaultStartDateTime(reservationDateRangeViewModel.UserType); if (defaultStartDateTime != null) { reservationDateRangeViewModel.StartDate = (DateTime)defaultStartDateTime; } } else { reservationDateRangeViewModel.StartDate = start.Value; reservationDateRangeViewModel.StartDateError = null; } if (end == null || !(AppSettings.GetEndDateRangeRestriction(reservationDateRangeViewModel.UserType)?.IsDateValid(end.Value) ?? true)) { if (displayError) { reservationDateRangeViewModel.EndDateError = "Deze datum is niet geschikt als einddatum van uw reservatie."; } var defaultEndDateTime = GetDefaultEndDateTime(reservationDateRangeViewModel.UserType); if (defaultEndDateTime != null) { reservationDateRangeViewModel.EndDate = (DateTime)defaultEndDateTime; } } else { reservationDateRangeViewModel.EndDate = end.Value; reservationDateRangeViewModel.EndDateError = null; } }