private ORDER BuildOrder(RequestOrderDto order) { var NewOrderStatus = _unitOfWork.Order.GetOrderStatus("New").Result; var result = new ORDER { OrderInfo = order.OrderInfo, OrderRecords = new List <ORDERRECORD>(), UserId = order.UserId, OrderStatus = NewOrderStatus, }; foreach (var item in order.Items) { var product = _unitOfWork.Product.GetAsync(item).Result; if (product == null) { throw new Exception($"Product {item} not found"); } result.OrderRecords.Add( new ORDERRECORD { ItemName = product.NAME, Price = product.EXTRA_PRICE_ACTIVE ? product.EXTRA_PRICE : product.PRICE, ProductId = product.ID }); } ; return(result); }
public OrderDto CreateOrder(RequestOrderDto requestOrder) { ValidateOrderInput(requestOrder); var order = BuildOrder(requestOrder); var response = _unitOfWork.Order.CreateOrderAsync(order); var result = ConvertOrder(response.Result); return(result); }
public async Task <IActionResult> CreateOrder([FromBody] RequestOrderDto requestOrder) { var user = await _userManager.FindByNameAsync(User.Identity.Name); requestOrder.UserId = user.Id; OrderDto order; try { order = _service.CreateOrder(requestOrder); } catch (Exception ex) { return(BadRequest(ex.Message)); } return(Ok(order)); }
private void ValidateOrderInput(RequestOrderDto order) { if (order == null) { throw new Exception("Bad input"); } if (order.Items == null) { throw new Exception("Empty order"); } if (order.Items.Count < 1) { throw new Exception("Empty order"); } if (String.IsNullOrEmpty(order.OrderInfo) || order.OrderInfo.Length < 4) { throw new Exception("Order info not set."); } }