public ActionResult Reserveer(VerlanglijstViewModel viewModel, DateTime van, DateTime tot, ApplicationUser user, bool[] dagenLector = null)
 {
     try {
         Product[] producten = user.Verlanglijst.Producten.ToArray();
         if (ModelState.IsValid)
         {
             Dictionary <Product, int> productAantalMap = new Dictionary <Product, int>();
             for (int i = 0; i < viewModel.Aantallen.Length; i++)
             {
                 productAantalMap.Add(producten[i], viewModel.Aantallen[i]);
             }
             if (user is Student)
             {
                 Email[] emails = new Email[1];
                 emails[0] = emailRepository.FindByReservatieStatus(ReservatieStatus.Gereserveerd);
                 user.VoegReservatieToe(productAantalMap, van, tot, emails);
             }
             if (user is Personeel)
             {
                 Email[] emails = new Email[3];
                 Email   email  = emailRepository.FindByReservatieStatus(ReservatieStatus.Geblokkeerd);
                 Email   email2 = emailRepository.FindByReservatieStatus(ReservatieStatus.Geannuleerd);
                 Email   email3 = emailRepository.FindByReservatieStatus(ReservatieStatus.Gewijzigd);
                 emails[0] = email; emails[1] = email2; emails[2] = email3;
                 user.VoegReservatieToe(productAantalMap, van, tot, emails, dagenLector);
             }
             gebruikerRepository.SaveChanges();
             TempData["Info"] = "Uw reservatie is succesvol toegevoegd.";
             return(RedirectToAction("Index", "Product"));
         }
     }catch (ArgumentNullException ex) {
         ModelState.AddModelError("key", ex.Message);
     }catch (ArgumentOutOfRangeException ex)
     {
         ModelState.AddModelError("key", ex.Message);
     }
     viewModel.Producten = user.Verlanglijst.Producten;
     return(View("Index", viewModel));
 }