Exemple #1
0
        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))));
        }
Exemple #2
0
        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);
            }
        }
Exemple #3
0
        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)));
        }
Exemple #4
0
        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)));
        }