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 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"));
        }