public async Task <Result <OrderItem> > ChangeOrderItemStatus(CancelOrderItemContext context)
        {
            var orderItem = await _dbContext.OrderItems.FindAsync(context.OrderItemId);

            if (orderItem == null)
            {
                _logger.LogInformation($"Order item {context.OrderItemId} could not be found.");

                return(new Result <OrderItem> {
                    Reason = ReasonType.CourierNotFound, IsSuccessful = false
                });
            }

            orderItem.Status          = (int)context.Status;
            orderItem.StatusTimestamp = DateTime.Now;

            _dbContext.Update(orderItem);

            int changes = await _dbContext.SaveChangesAsync();

            if (changes <= 0)
            {
                _logger.LogInformation($"Order item {context.OrderItemId} status was not updated.");

                return(new Result <OrderItem> {
                    Reason = ReasonType.DatabaseError, ChangeCount = changes, IsSuccessful = false
                });
            }

            _logger.LogInformation($"Order item {context.OrderItemId} status was updated.");

            return(new Result <OrderItem> {
                ChangeCount = changes, Value = MapToOrderItem(orderItem), IsSuccessful = true
            });
        }
Пример #2
0
        public async Task <IActionResult> CancelOrderItemRequest(CancelOrderItemContext context)
        {
            await _endpoint.Publish <OrderItemCancelRequest>(
                new()
            {
                OrderId     = context.OrderId,
                OrderItemId = context.OrderItemId
            });

            _logger.LogInformation($"Published - {nameof(OrderItemCancelRequest)}");

            return(Ok());
        }