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