public async Task <ActionResult <List <OrderResponse> > > GetOrders() { var customerId = getUserMetaData().Id; var orders = await orderService.GetOrders(customerId).ConfigureAwait(false); return(Ok(orders.Select(o => OrderResponse.Of(o)))); }
public async Task <ActionResult <OrderResponse> > FinishOrder(Guid orderCode) { var customerId = getUserMetaData().Id; var order = await orderService.GetOrder(orderCode).ConfigureAwait(false); if (order == null) { throw new WWSException("Order not found", StatusCodes.Status404NotFound); } if (order.CustomerId != customerId) { throw new WWSException("Resource is not available", StatusCodes.Status403Forbidden); } try { var success = await orderService.ProcessOrder(orderCode).ConfigureAwait(false); if (success) { order.State = Domain.Orders.Order.OrderState.Processing; } return(Ok(OrderResponse.Of(order))); } catch (OrderNotFoundException) { throw new WWSException("Order not found", StatusCodes.Status404NotFound); } catch (OrderAlreadyProcessingException) { throw new WWSException("Order is already being processed", StatusCodes.Status400BadRequest); } }
public async Task <ActionResult <OrderResponse> > CheckoutMyCart() { var customerId = getUserMetaData().Id; var cart = await cache.TryGet(customerId); if (cart == null) { throw new WWSException("Cart not found", StatusCodes.Status404NotFound); } if (cart.Items.Count <= 0) { throw new WWSException("Cart is empty", StatusCodes.Status400BadRequest); } UserResponse userResponse; try { userResponse = await userApiClient.GetUserDetails(userId : customerId).ConfigureAwait(false); } catch (Exception) { userResponse = new UserResponse(); } var newOrder = await orderService.CreateOrder(cart, userResponse).ConfigureAwait(false); return(Ok(OrderResponse.Of(newOrder))); }
public async Task <ActionResult <OrderResponse> > GetOrder(Guid orderCode) { var customerId = getUserMetaData().Id; var order = await orderService.GetOrder(orderCode).ConfigureAwait(false); if (order == null) { throw new WWSException("Order not found", StatusCodes.Status404NotFound); } if (order.CustomerId != customerId) { throw new WWSException("Resource is not available", StatusCodes.Status403Forbidden); } return(Ok(OrderResponse.Of(order))); }