public IActionResult OrderCheckout(OrderDetailsViewModel model) { string userName = User.Identity.Name; if (userName == null) { return(RedirectToAction("Cart")); } if (ModelState.IsValid) { Order newOrder = _sqlOrderService.CreateOrder(model, _cartService.TransformCartToViewModel(), userName); _cartService.RemoveAllProductsFromCart(); return(RedirectToAction("OrderConfirmed", new { orderNumber = newOrder.Id })); } else { OrderViewModel order = new OrderViewModel() { Cart = _cartService.TransformCartToViewModel(), OrderData = model }; return(View("Cart", order)); } }
public IActionResult OrderCheckout(OrderDetailsViewModel model) { string userName = User.Identity.Name; if (userName == null) { return(RedirectToAction("Cart")); } if (ModelState.IsValid) { CreateOrderModel createOrderModel = new CreateOrderModel() { OrderDetails = model, OrderItems = _cartService.TransformCartToViewModel().CartItems.Select(i => new OrderItemDTO() { ProductId = i.Product.Id, Quantity = i.Quantity, Price = i.Price }).ToList() }; OrderDTO newOrder = _sqlOrderService.CreateOrder(createOrderModel, userName); _cartService.RemoveAllProductsFromCart(); return(RedirectToAction("OrderConfirmed", new { orderNumber = newOrder.Id })); } else { OrderViewModel order = new OrderViewModel() { Cart = _cartService.TransformCartToViewModel(), OrderData = model }; return(View("Cart", order)); } }
public OrderDTO CreateOrder([FromBody] CreateOrderModel createOrderModel, string UserName) { //обязательно в каждом методе контроллера нужна валидация, особенно в методах "Set.." if (string.IsNullOrEmpty(UserName)) { throw new ArgumentException("Не указано имя пользователя"); } if (string.IsNullOrEmpty(createOrderModel.OrderDetails.Address)) { throw new ArgumentException("Не указан адрес доставки"); } //пример логирования (должно быть как в контроллере, так и в клиенте) _Logger.LogInformation("Создаётся заказ для пользователя {0}", UserName); var order = _sqlOrderService.CreateOrder(createOrderModel, UserName); _Logger.LogInformation("Заказ для пользователя {0} создан успешно", UserName); return(order); //return _sqlOrderService.CreateOrder(createOrderModel, UserName); }