public async Task <Result <Order> > ChangeOrderStatus(CancelOrderContext context)
        {
            var order = await _dbContext.Orders.FindAsync(context.OrderId);

            if (order == null)
            {
                _logger.LogInformation($"Order {context.OrderId} could not be found.");

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

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

            _dbContext.Update(order);

            int changes = await _dbContext.SaveChangesAsync();

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

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

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

            return(new Result <Order> {
                ChangeCount = changes, Value = MapToOrder(order), IsSuccessful = true
            });
        }
Beispiel #2
0
        public async Task <IActionResult> CancelOrderRequest(CancelOrderContext context)
        {
            await _endpoint.Publish <OrderCancelRequest>(
                new()
            {
                CourierId    = context.CourierId,
                OrderId      = context.OrderId,
                CustomerId   = context.CustomerId,
                RestaurantId = context.RestaurantId
            });

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

            return(Ok());
        }