diff --git a/src/Services/Ordering/Ordering.API/Application/Commands/CancelOrderCommandHandler.cs b/src/Services/Ordering/Ordering.API/Application/Commands/CancelOrderCommandHandler.cs
index a4c4facb8..f8ca93162 100644
--- a/src/Services/Ordering/Ordering.API/Application/Commands/CancelOrderCommandHandler.cs
+++ b/src/Services/Ordering/Ordering.API/Application/Commands/CancelOrderCommandHandler.cs
@@ -22,6 +22,7 @@ namespace Ordering.API.Application.Commands
/// customer executes cancel order from app
///
///
+ ///
///
public async Task Handle(CancelOrderCommand command, CancellationToken cancellationToken)
{
@@ -32,7 +33,7 @@ namespace Ordering.API.Application.Commands
}
orderToUpdate.SetCancelledStatus();
- return await _orderRepository.UnitOfWork.SaveEntitiesAsync();
+ return await _orderRepository.UnitOfWork.SaveEntitiesAsync(cancellationToken);
}
}
@@ -46,7 +47,7 @@ namespace Ordering.API.Application.Commands
protected override bool CreateResultForDuplicateRequest()
{
- return true; // Ignore duplicate requests for processing order.
+ return true; // Ignore duplicate requests for processing order.
}
}
}
diff --git a/src/Services/Ordering/Ordering.API/Application/Commands/CreateOrderCommandHandler.cs b/src/Services/Ordering/Ordering.API/Application/Commands/CreateOrderCommandHandler.cs
index c63f262fa..e49ae068b 100644
--- a/src/Services/Ordering/Ordering.API/Application/Commands/CreateOrderCommandHandler.cs
+++ b/src/Services/Ordering/Ordering.API/Application/Commands/CreateOrderCommandHandler.cs
@@ -24,7 +24,7 @@
_mediator = mediator ?? throw new ArgumentNullException(nameof(mediator));
}
- public async Task Handle(CreateOrderCommand message, CancellationToken cancellationToken)
+ public Task Handle(CreateOrderCommand message, CancellationToken cancellationToken)
{
// Add/Update the Buyer AggregateRoot
// DDD patterns comment: Add child entities and value-objects through the Order Aggregate-Root
@@ -40,8 +40,8 @@
_orderRepository.Add(order);
- return await _orderRepository.UnitOfWork
- .SaveEntitiesAsync();
+ return _orderRepository.UnitOfWork
+ .SaveEntitiesAsync(cancellationToken);
}
}
@@ -55,7 +55,7 @@
protected override bool CreateResultForDuplicateRequest()
{
- return true; // Ignore duplicate requests for creating order.
+ return true; // Ignore duplicate requests for creating order.
}
}
}
diff --git a/src/Services/Ordering/Ordering.API/Application/Commands/IdentifiedCommandHandler.cs b/src/Services/Ordering/Ordering.API/Application/Commands/IdentifiedCommandHandler.cs
index f00ea44c8..312a775b4 100644
--- a/src/Services/Ordering/Ordering.API/Application/Commands/IdentifiedCommandHandler.cs
+++ b/src/Services/Ordering/Ordering.API/Application/Commands/IdentifiedCommandHandler.cs
@@ -37,6 +37,7 @@ namespace Microsoft.eShopOnContainers.Services.Ordering.API.Application.Commands
/// just enqueues the original inner command.
///
/// IdentifiedCommand which contains both original command & request ID
+ ///
/// Return value of inner command or default value if request same ID was found
public async Task Handle(IdentifiedCommand message, CancellationToken cancellationToken)
{
@@ -48,16 +49,16 @@ namespace Microsoft.eShopOnContainers.Services.Ordering.API.Application.Commands
else
{
await _requestManager.CreateRequestForCommandAsync(message.Id);
- try
- {
- // Send the embeded business command to mediator so it runs its related CommandHandler
- var result = await _mediator.Send(message.Command);
- return result;
- }
- catch
- {
- return default(R);
- }
+ try
+ {
+ // Send the embeded business command to mediator so it runs its related CommandHandler
+ var result = await _mediator.Send(message.Command, cancellationToken);
+ return result;
+ }
+ catch
+ {
+ return default(R);
+ }
}
}
}
diff --git a/src/Services/Ordering/Ordering.API/Application/Commands/ShipOrderCommandHandler.cs b/src/Services/Ordering/Ordering.API/Application/Commands/ShipOrderCommandHandler.cs
index b4a6ac26d..ae0086ce7 100644
--- a/src/Services/Ordering/Ordering.API/Application/Commands/ShipOrderCommandHandler.cs
+++ b/src/Services/Ordering/Ordering.API/Application/Commands/ShipOrderCommandHandler.cs
@@ -22,6 +22,7 @@ namespace Ordering.API.Application.Commands
/// administrator executes ship order from app
///
///
+ ///
///
public async Task Handle(ShipOrderCommand command, CancellationToken cancellationToken)
{
@@ -32,7 +33,7 @@ namespace Ordering.API.Application.Commands
}
orderToUpdate.SetShippedStatus();
- return await _orderRepository.UnitOfWork.SaveEntitiesAsync();
+ return await _orderRepository.UnitOfWork.SaveEntitiesAsync(cancellationToken);
}
}
@@ -46,7 +47,7 @@ namespace Ordering.API.Application.Commands
protected override bool CreateResultForDuplicateRequest()
{
- return true; // Ignore duplicate requests for processing order.
+ return true; // Ignore duplicate requests for processing order.
}
}
}
diff --git a/src/Services/Ordering/Ordering.API/Application/DomainEventHandlers/OrderGracePeriodConfirmed/OrderStatusChangedToAwaitingValidationDomainEventHandler.cs b/src/Services/Ordering/Ordering.API/Application/DomainEventHandlers/OrderGracePeriodConfirmed/OrderStatusChangedToAwaitingValidationDomainEventHandler.cs
index a02d07232..d000ceecb 100644
--- a/src/Services/Ordering/Ordering.API/Application/DomainEventHandlers/OrderGracePeriodConfirmed/OrderStatusChangedToAwaitingValidationDomainEventHandler.cs
+++ b/src/Services/Ordering/Ordering.API/Application/DomainEventHandlers/OrderGracePeriodConfirmed/OrderStatusChangedToAwaitingValidationDomainEventHandler.cs
@@ -27,7 +27,7 @@
_orderingIntegrationEventService = orderingIntegrationEventService;
}
- public async Task Handle(OrderStatusChangedToAwaitingValidationDomainEvent orderStatusChangedToAwaitingValidationDomainEvent, CancellationToken cancellationToken)
+ public Task Handle(OrderStatusChangedToAwaitingValidationDomainEvent orderStatusChangedToAwaitingValidationDomainEvent, CancellationToken cancellationToken)
{
_logger.CreateLogger(nameof(OrderStatusChangedToAwaitingValidationDomainEvent))
.LogTrace($"Order with Id: {orderStatusChangedToAwaitingValidationDomainEvent.OrderId} has been successfully updated with " +
@@ -38,7 +38,7 @@
var orderStatusChangedToAwaitingValidationIntegrationEvent = new OrderStatusChangedToAwaitingValidationIntegrationEvent(
orderStatusChangedToAwaitingValidationDomainEvent.OrderId, orderStockList);
- await _orderingIntegrationEventService.PublishThroughEventBusAsync(orderStatusChangedToAwaitingValidationIntegrationEvent);
+ return _orderingIntegrationEventService.PublishThroughEventBusAsync(orderStatusChangedToAwaitingValidationIntegrationEvent);
}
}
}
\ No newline at end of file
diff --git a/src/Services/Ordering/Ordering.API/Application/DomainEventHandlers/OrderPaid/OrderStatusChangedToPaidDomainEventHandler.cs b/src/Services/Ordering/Ordering.API/Application/DomainEventHandlers/OrderPaid/OrderStatusChangedToPaidDomainEventHandler.cs
index 071cd90fc..300afda72 100644
--- a/src/Services/Ordering/Ordering.API/Application/DomainEventHandlers/OrderPaid/OrderStatusChangedToPaidDomainEventHandler.cs
+++ b/src/Services/Ordering/Ordering.API/Application/DomainEventHandlers/OrderPaid/OrderStatusChangedToPaidDomainEventHandler.cs
@@ -27,7 +27,7 @@
_orderingIntegrationEventService = orderingIntegrationEventService;
}
- public async Task Handle(OrderStatusChangedToPaidDomainEvent orderStatusChangedToPaidDomainEvent, CancellationToken cancellationToken)
+ public Task Handle(OrderStatusChangedToPaidDomainEvent orderStatusChangedToPaidDomainEvent, CancellationToken cancellationToken)
{
_logger.CreateLogger(nameof(OrderStatusChangedToPaidDomainEventHandler))
.LogTrace($"Order with Id: {orderStatusChangedToPaidDomainEvent.OrderId} has been successfully updated with " +
@@ -38,7 +38,7 @@
var orderStatusChangedToPaidIntegrationEvent = new OrderStatusChangedToPaidIntegrationEvent(orderStatusChangedToPaidDomainEvent.OrderId,
orderStockList);
- await _orderingIntegrationEventService.PublishThroughEventBusAsync(orderStatusChangedToPaidIntegrationEvent);
+ return _orderingIntegrationEventService.PublishThroughEventBusAsync(orderStatusChangedToPaidIntegrationEvent);
}
}
}
\ No newline at end of file
diff --git a/src/Services/Ordering/Ordering.API/Application/DomainEventHandlers/OrderStartedEvent/ValidateOrAddBuyerAggregateWhenOrderStartedDomainEventHandler.cs b/src/Services/Ordering/Ordering.API/Application/DomainEventHandlers/OrderStartedEvent/ValidateOrAddBuyerAggregateWhenOrderStartedDomainEventHandler.cs
index d222c574c..058194df1 100644
--- a/src/Services/Ordering/Ordering.API/Application/DomainEventHandlers/OrderStartedEvent/ValidateOrAddBuyerAggregateWhenOrderStartedDomainEventHandler.cs
+++ b/src/Services/Ordering/Ordering.API/Application/DomainEventHandlers/OrderStartedEvent/ValidateOrAddBuyerAggregateWhenOrderStartedDomainEventHandler.cs
@@ -45,7 +45,7 @@ namespace Ordering.API.Application.DomainEventHandlers.OrderStartedEvent
var buyerUpdated = buyerOriginallyExisted ? _buyerRepository.Update(buyer) : _buyerRepository.Add(buyer);
await _buyerRepository.UnitOfWork
- .SaveEntitiesAsync();
+ .SaveEntitiesAsync(cancellationToken);
_logger.CreateLogger(nameof(ValidateOrAddBuyerAggregateWhenOrderStartedDomainEventHandler)).LogTrace($"Buyer {buyerUpdated.Id} and related payment method were validated or updated for orderId: {orderStartedEvent.Order.Id}.");
}
diff --git a/src/Services/Ordering/Ordering.API/Application/DomainEventHandlers/OrderStockConfirmed/OrderStatusChangedToStockConfirmedDomainEventHandler.cs b/src/Services/Ordering/Ordering.API/Application/DomainEventHandlers/OrderStockConfirmed/OrderStatusChangedToStockConfirmedDomainEventHandler.cs
index 3b24e43e6..e2cfaab06 100644
--- a/src/Services/Ordering/Ordering.API/Application/DomainEventHandlers/OrderStockConfirmed/OrderStatusChangedToStockConfirmedDomainEventHandler.cs
+++ b/src/Services/Ordering/Ordering.API/Application/DomainEventHandlers/OrderStockConfirmed/OrderStatusChangedToStockConfirmedDomainEventHandler.cs
@@ -26,14 +26,14 @@
_orderingIntegrationEventService = orderingIntegrationEventService;
}
- public async Task Handle(OrderStatusChangedToStockConfirmedDomainEvent orderStatusChangedToStockConfirmedDomainEvent, CancellationToken cancellationToken)
+ public Task Handle(OrderStatusChangedToStockConfirmedDomainEvent orderStatusChangedToStockConfirmedDomainEvent, CancellationToken cancellationToken)
{
_logger.CreateLogger(nameof(OrderStatusChangedToStockConfirmedDomainEventHandler))
.LogTrace($"Order with Id: {orderStatusChangedToStockConfirmedDomainEvent.OrderId} has been successfully updated with " +
$"a status order id: {OrderStatus.StockConfirmed.Id}");
var orderStatusChangedToStockConfirmedIntegrationEvent = new OrderStatusChangedToStockConfirmedIntegrationEvent(orderStatusChangedToStockConfirmedDomainEvent.OrderId);
- await _orderingIntegrationEventService.PublishThroughEventBusAsync(orderStatusChangedToStockConfirmedIntegrationEvent);
+ return _orderingIntegrationEventService.PublishThroughEventBusAsync(orderStatusChangedToStockConfirmedIntegrationEvent);
}
}
}
\ No newline at end of file
diff --git a/src/Services/Ordering/Ordering.API/Application/IntegrationEvents/OrderingIntegrationEventService.cs b/src/Services/Ordering/Ordering.API/Application/IntegrationEvents/OrderingIntegrationEventService.cs
index b3c0201b5..cdf1602a0 100644
--- a/src/Services/Ordering/Ordering.API/Application/IntegrationEvents/OrderingIntegrationEventService.cs
+++ b/src/Services/Ordering/Ordering.API/Application/IntegrationEvents/OrderingIntegrationEventService.cs
@@ -35,11 +35,11 @@ namespace Ordering.API.Application.IntegrationEvents
await _eventLogService.MarkEventAsPublishedAsync(evt);
}
- private async Task SaveEventAndOrderingContextChangesAsync(IntegrationEvent evt)
+ private Task SaveEventAndOrderingContextChangesAsync(IntegrationEvent evt)
{
//Use of an EF Core resiliency strategy when using multiple DbContexts within an explicit BeginTransaction():
//See: https://docs.microsoft.com/en-us/ef/core/miscellaneous/connection-resiliency
- await ResilientTransaction.New(_orderingContext)
+ return ResilientTransaction.New(_orderingContext)
.ExecuteAsync(async () => {
// Achieving atomicity between original ordering database operation and the IntegrationEventLog thanks to a local transaction
await _orderingContext.SaveChangesAsync();
diff --git a/src/Services/Ordering/Ordering.API/Application/Queries/OrderQueries.cs b/src/Services/Ordering/Ordering.API/Application/Queries/OrderQueries.cs
index 59cc8a823..ed78bf033 100644
--- a/src/Services/Ordering/Ordering.API/Application/Queries/OrderQueries.cs
+++ b/src/Services/Ordering/Ordering.API/Application/Queries/OrderQueries.cs
@@ -9,7 +9,7 @@
public class OrderQueries
:IOrderQueries
{
- private string _connectionString = string.Empty;
+ private readonly string _connectionString = string.Empty;
public OrderQueries(string constr)
{
@@ -21,7 +21,7 @@
{
using (var connection = new SqlConnection(_connectionString))
{
- connection.Open();
+ await connection.OpenAsync();
var result = await connection.QueryAsync(
@"select o.[Id] as ordernumber,o.OrderDate as date, o.Description as description,
@@ -46,7 +46,7 @@
{
using (var connection = new SqlConnection(_connectionString))
{
- connection.Open();
+ await connection.OpenAsync();
return await connection.QueryAsync(@"SELECT o.[Id] as ordernumber,o.[OrderDate] as [date],os.[Name] as [status],SUM(oi.units*oi.unitprice) as total
FROM [ordering].[Orders] o
@@ -61,7 +61,7 @@
{
using (var connection = new SqlConnection(_connectionString))
{
- connection.Open();
+ await connection.OpenAsync();
return await connection.QueryAsync("SELECT * FROM ordering.cardtypes");
}
diff --git a/src/Services/Ordering/Ordering.API/Infrastructure/OrderingContextSeed.cs b/src/Services/Ordering/Ordering.API/Infrastructure/OrderingContextSeed.cs
index 53c53f052..9fc4bbe7b 100644
--- a/src/Services/Ordering/Ordering.API/Infrastructure/OrderingContextSeed.cs
+++ b/src/Services/Ordering/Ordering.API/Infrastructure/OrderingContextSeed.cs
@@ -20,15 +20,15 @@
public class OrderingContextSeed
{
- public async Task SeedAsync(OrderingContext context, IHostingEnvironment env,IOptions settings, ILogger logger)
+ public Task SeedAsync(OrderingContext context, IHostingEnvironment env,IOptions settings, ILogger logger)
{
var policy = CreatePolicy(logger, nameof(OrderingContextSeed));
- await policy.ExecuteAsync(async () =>
+ return policy.ExecuteAsync(async () =>
{
var useCustomizationData = settings.Value
- .UseCustomizationData;
+ .UseCustomizationData;
var contentRootPath = env.ContentRootPath;
@@ -39,18 +39,18 @@
if (!context.CardTypes.Any())
{
- context.CardTypes.AddRange(useCustomizationData
- ? GetCardTypesFromFile(contentRootPath, logger)
- : GetPredefinedCardTypes());
+ await context.CardTypes.AddRangeAsync(useCustomizationData
+ ? GetCardTypesFromFile(contentRootPath, logger)
+ : GetPredefinedCardTypes());
await context.SaveChangesAsync();
}
if (!context.OrderStatus.Any())
{
- context.OrderStatus.AddRange(useCustomizationData
- ? GetOrderStatusFromFile(contentRootPath, logger)
- : GetPredefinedOrderStatus());
+ await context.OrderStatus.AddRangeAsync(useCustomizationData
+ ? GetOrderStatusFromFile(contentRootPath, logger)
+ : GetPredefinedOrderStatus());
}
await context.SaveChangesAsync();
diff --git a/src/Services/Ordering/Ordering.Infrastructure/MediatorExtension.cs b/src/Services/Ordering/Ordering.Infrastructure/MediatorExtension.cs
index 82a7235a2..2d1bd7d13 100644
--- a/src/Services/Ordering/Ordering.Infrastructure/MediatorExtension.cs
+++ b/src/Services/Ordering/Ordering.Infrastructure/MediatorExtension.cs
@@ -8,7 +8,7 @@ namespace Ordering.Infrastructure
{
static class MediatorExtension
{
- public static async Task DispatchDomainEventsAsync(this IMediator mediator, OrderingContext ctx)
+ public static Task DispatchDomainEventsAsync(this IMediator mediator, OrderingContext ctx)
{
var domainEntities = ctx.ChangeTracker
.Entries()
@@ -26,7 +26,7 @@ namespace Ordering.Infrastructure
await mediator.Publish(domainEvent);
});
- await Task.WhenAll(tasks);
+ return Task.WhenAll(tasks);
}
}
}
diff --git a/src/Services/Ordering/Ordering.Infrastructure/OrderingContext.cs b/src/Services/Ordering/Ordering.Infrastructure/OrderingContext.cs
index a2cfb96a5..dabf7d433 100644
--- a/src/Services/Ordering/Ordering.Infrastructure/OrderingContext.cs
+++ b/src/Services/Ordering/Ordering.Infrastructure/OrderingContext.cs
@@ -30,7 +30,6 @@ namespace Microsoft.eShopOnContainers.Services.Ordering.Infrastructure
{
_mediator = mediator ?? throw new ArgumentNullException(nameof(mediator));
-
System.Diagnostics.Debug.WriteLine("OrderingContext::ctor ->" + this.GetHashCode());
}
@@ -57,7 +56,7 @@ namespace Microsoft.eShopOnContainers.Services.Ordering.Infrastructure
// After executing this line all the changes (from the Command Handler and Domain Event Handlers)
// performed throught the DbContext will be commited
- var result = await base.SaveChangesAsync();
+ var result = await base.SaveChangesAsync(cancellationToken);
return true;
}
@@ -70,7 +69,7 @@ namespace Microsoft.eShopOnContainers.Services.Ordering.Infrastructure
var optionsBuilder = new DbContextOptionsBuilder()
.UseSqlServer("Server=.;Initial Catalog=Microsoft.eShopOnContainers.Services.OrderingDb;Integrated Security=true");
- return new OrderingContext(optionsBuilder.Options,new NoMediator());
+ return new OrderingContext(optionsBuilder.Options, new NoMediator());
}
class NoMediator : IMediator