public void AddReservation()
 {
     repoReservs.AddNewReservation(reservation);
 }
        public async Task <IActionResult> ReservationReviewSetup(ReservationViewModel rvm)
        {
            var reservationViewModel = GetReservationViewModelFromSession("reservationwizard");

            reservationViewModel.ReviewAndContactSetup = rvm.ReviewAndContactSetup;
            string          userId      = null;
            ApplicationUser currentUser = null;

            if (User.Identity.IsAuthenticated)
            {
                userId      = _userManager.GetUserId(HttpContext.User);
                currentUser = await _userManager.FindByIdAsync(userId);
            }
            else
            {
                if (!ModelState.IsValid)
                {
                    return(View(rvm));
                }
                var user = await _userManager.FindByEmailAsync(rvm.ReviewAndContactSetup.Email);

                if (user != null)
                {
                    userId      = user.Id;
                    currentUser = user;
                }
                else
                {
                    var newUser = Mapper.Map <ApplicationUser>(rvm.ReviewAndContactSetup);
                    try
                    {
                        var userCreation = await _userManager.CreateAsync(newUser);

                        if (userCreation.Succeeded)
                        {
                            currentUser = newUser;
                            var roleAddition = await _userManager.AddToRoleAsync(newUser, "noncustomer");

                            userId = newUser.Id;
                        }
                    }
                    catch (Exception)
                    {
                        //Log the Error
                        ModelState.AddModelError(string.Empty, "Reservation Could not be Added");
                    }
                }
            }

            if (userId != null)
            {
                var newReservation = new Reservation()
                {
                    ConfirmationNumber = GetConfirmationNumber(),
                    VehicleId          = reservationViewModel.VehicleSetup.ReservationVehicle.Id,
                    PickupDate         = reservationViewModel.InitialSetup.PickupDate,
                    ReturnDate         = reservationViewModel.InitialSetup.ReturnDate,
                    StoreLocation      = reservationViewModel.InitialSetup.StoreLocation,
                    TotalCost          = CalculateReservationCost(reservationViewModel.VehicleSetup.ReservationVehicle.PricePerDay,
                                                                  reservationViewModel.InitialSetup.PickupDate, reservationViewModel.InitialSetup.ReturnDate, rvm.StatesTax),
                };
                if (!_reservationRepository.AddNewReservation(newReservation, userId))
                {
                    //Log The Error
                    ModelState.AddModelError(string.Empty, "Reservation Could not be Added");
                    return(View(rvm));
                }
                reservationViewModel.CurrentUserId      = currentUser.Id;
                reservationViewModel.ConfirmationNumber = newReservation.ConfirmationNumber;
                SaveObjectToSession(reservationViewModel, "reservationwizard");
                //Send Email to User
            }
            return(RedirectToAction("ReservationComplete"));
        }