public IActionResult FinishOrder(int orderId)
        {
            var cart = _cartService.GetCart(_currentUser.Id);

            if (cart == null || cart.OrderItems.Count() == 0)
            {
                return(ForbiddenView());
            }

            List <ProductVm>    products   = _mapper.Map <List <Product>, List <ProductVm> >(_cartService.GetCartItems(cart.Id).ToList());
            List <OrderItemsVm> orderItems = _mapper.Map <List <OrderItem>, List <OrderItemsVm> >(cart.OrderItems.ToList());
            float total = 0;

            for (int i = 0; i < products.Count(); i++)
            {
                total += (float)products[i].Price * orderItems[i].Quantity;
            }
            CartVm model = new CartVm {
                Id = cart.Id, Products = products, OrderItems = orderItems, Total = total
            };


            FinishOrderVm finish = new FinishOrderVm {
                Cart = model, User = _mapper.Map <User, UserVm>(_userService.GetUserById(_currentUser.Id))
            };

            if (finish == null)
            {
                return(View());
            }

            return(View("../Order/FinishOrder", finish));
        }
        public IActionResult FinishOrder(FinishOrderVm model)
        {
            if (!ModelState.IsValid || !_currentUser.IsAuthenticated)
            {
                return(ForbiddenView());
            }

            if (model.Cart.OrderItems.Count() == null)
            {
                return(ForbiddenView());
            }

            if (!model.User.Equals(_userService.GetUserById(_currentUser.Id)))
            {
                var existingUser = _userService.GetUserById(_currentUser.Id);
                existingUser.LastName  = model.User.LastName;
                existingUser.FirstName = model.User.FirstName;
                existingUser.Address   = model.User.Address;

                _userService.UpdateUserData(existingUser);
            }

            var order = _orderService.GetOrderById(model.Cart.Id, false);

            order.IsFinished  = true;
            order.CreatedDate = DateTime.Now;

            try
            {
                _orderService.FinishOrder(order);
                _mailSender.SendOrderConfirmation(model.User.Email, order);
                _mailSender.SendOrderConfirmation(model.User.Email, order);

                return(RedirectToAction("Index", "Home"));
            }
            catch (System.Net.Mail.SmtpException)
            {
                return(ForbiddenView());
            }
        }