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 }); }
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()); }