Moved all usings to globalusing file
This commit is contained in:
		
							parent
							
								
									818995d8b8
								
							
						
					
					
						commit
						666fba815f
					
				| @ -1,13 +1,6 @@ | |||||||
| using MediatR; | namespace Microsoft.eShopOnContainers.Services.Ordering.API.Application.Behaviors; | ||||||
| using Microsoft.eShopOnContainers.BuildingBlocks.EventBus.Extensions; | public class LoggingBehavior<TRequest, TResponse> : IPipelineBehavior<TRequest, TResponse> | ||||||
| using Microsoft.Extensions.Logging; |  | ||||||
| using System.Threading; |  | ||||||
| using System.Threading.Tasks; |  | ||||||
| 
 |  | ||||||
| namespace Ordering.API.Application.Behaviors |  | ||||||
| { | { | ||||||
|     public class LoggingBehavior<TRequest, TResponse> : IPipelineBehavior<TRequest, TResponse> |  | ||||||
|     { |  | ||||||
|     private readonly ILogger<LoggingBehavior<TRequest, TResponse>> _logger; |     private readonly ILogger<LoggingBehavior<TRequest, TResponse>> _logger; | ||||||
|     public LoggingBehavior(ILogger<LoggingBehavior<TRequest, TResponse>> logger) => _logger = logger; |     public LoggingBehavior(ILogger<LoggingBehavior<TRequest, TResponse>> logger) => _logger = logger; | ||||||
| 
 | 
 | ||||||
| @ -19,5 +12,5 @@ namespace Ordering.API.Application.Behaviors | |||||||
| 
 | 
 | ||||||
|         return response; |         return response; | ||||||
|     } |     } | ||||||
|     } |  | ||||||
| } | } | ||||||
|  | 
 | ||||||
|  | |||||||
| @ -1,18 +1,9 @@ | |||||||
| using MediatR; | namespace Microsoft.eShopOnContainers.Services.Ordering.API.Application.Behaviors; | ||||||
| using Microsoft.EntityFrameworkCore; |  | ||||||
| using Microsoft.eShopOnContainers.BuildingBlocks.EventBus.Extensions; |  | ||||||
| using Microsoft.eShopOnContainers.Services.Ordering.Infrastructure; |  | ||||||
| using Microsoft.Extensions.Logging; |  | ||||||
| using Ordering.API.Application.IntegrationEvents; |  | ||||||
| using Serilog.Context; |  | ||||||
| using System; |  | ||||||
| using System.Threading; |  | ||||||
| using System.Threading.Tasks; |  | ||||||
| 
 | 
 | ||||||
| namespace Ordering.API.Application.Behaviors | using Microsoft.Extensions.Logging; | ||||||
|  | 
 | ||||||
|  | public class TransactionBehaviour<TRequest, TResponse> : IPipelineBehavior<TRequest, TResponse> | ||||||
| { | { | ||||||
|     public class TransactionBehaviour<TRequest, TResponse> : IPipelineBehavior<TRequest, TResponse> |  | ||||||
|     { |  | ||||||
|     private readonly ILogger<TransactionBehaviour<TRequest, TResponse>> _logger; |     private readonly ILogger<TransactionBehaviour<TRequest, TResponse>> _logger; | ||||||
|     private readonly OrderingContext _dbContext; |     private readonly OrderingContext _dbContext; | ||||||
|     private readonly IOrderingIntegrationEventService _orderingIntegrationEventService; |     private readonly IOrderingIntegrationEventService _orderingIntegrationEventService; | ||||||
| @ -70,5 +61,4 @@ namespace Ordering.API.Application.Behaviors | |||||||
|             throw; |             throw; | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|     } |  | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,16 +1,7 @@ | |||||||
| using FluentValidation; | namespace Microsoft.eShopOnContainers.Services.Ordering.API.Application.Behaviors; | ||||||
| using MediatR; |  | ||||||
| using Microsoft.eShopOnContainers.BuildingBlocks.EventBus.Extensions; |  | ||||||
| using Microsoft.Extensions.Logging; |  | ||||||
| using Ordering.Domain.Exceptions; |  | ||||||
| using System.Linq; |  | ||||||
| using System.Threading; |  | ||||||
| using System.Threading.Tasks; |  | ||||||
| 
 | 
 | ||||||
| namespace Ordering.API.Application.Behaviors | public class ValidatorBehavior<TRequest, TResponse> : IPipelineBehavior<TRequest, TResponse> | ||||||
| { | { | ||||||
|     public class ValidatorBehavior<TRequest, TResponse> : IPipelineBehavior<TRequest, TResponse> |  | ||||||
|     { |  | ||||||
|     private readonly ILogger<ValidatorBehavior<TRequest, TResponse>> _logger; |     private readonly ILogger<ValidatorBehavior<TRequest, TResponse>> _logger; | ||||||
|     private readonly IValidator<TRequest>[] _validators; |     private readonly IValidator<TRequest>[] _validators; | ||||||
| 
 | 
 | ||||||
| @ -42,5 +33,4 @@ namespace Ordering.API.Application.Behaviors | |||||||
| 
 | 
 | ||||||
|         return await next(); |         return await next(); | ||||||
|     } |     } | ||||||
|     } |  | ||||||
| } | } | ||||||
| @ -1,10 +1,7 @@ | |||||||
| using MediatR; | namespace Microsoft.eShopOnContainers.Services.Ordering.API.Application.Commands; | ||||||
| using System.Runtime.Serialization; |  | ||||||
| 
 | 
 | ||||||
| namespace Ordering.API.Application.Commands | public class CancelOrderCommand : IRequest<bool> | ||||||
| { | { | ||||||
|     public class CancelOrderCommand : IRequest<bool> |  | ||||||
|     { |  | ||||||
| 
 | 
 | ||||||
|     [DataMember] |     [DataMember] | ||||||
|     public int OrderNumber { get; set; } |     public int OrderNumber { get; set; } | ||||||
| @ -16,5 +13,4 @@ namespace Ordering.API.Application.Commands | |||||||
|     { |     { | ||||||
|         OrderNumber = orderNumber; |         OrderNumber = orderNumber; | ||||||
|     } |     } | ||||||
|     } |  | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,16 +1,8 @@ | |||||||
| using MediatR; | namespace Microsoft.eShopOnContainers.Services.Ordering.API.Application.Commands; | ||||||
| using Microsoft.eShopOnContainers.Services.Ordering.API.Application.Commands; |  | ||||||
| using Microsoft.eShopOnContainers.Services.Ordering.Domain.AggregatesModel.OrderAggregate; |  | ||||||
| using Microsoft.eShopOnContainers.Services.Ordering.Infrastructure.Idempotency; |  | ||||||
| using Microsoft.Extensions.Logging; |  | ||||||
| using System.Threading; |  | ||||||
| using System.Threading.Tasks; |  | ||||||
| 
 | 
 | ||||||
| namespace Ordering.API.Application.Commands | // Regular CommandHandler | ||||||
|  | public class CancelOrderCommandHandler : IRequestHandler<CancelOrderCommand, bool> | ||||||
| { | { | ||||||
|     // Regular CommandHandler |  | ||||||
|     public class CancelOrderCommandHandler : IRequestHandler<CancelOrderCommand, bool> |  | ||||||
|     { |  | ||||||
|     private readonly IOrderRepository _orderRepository; |     private readonly IOrderRepository _orderRepository; | ||||||
| 
 | 
 | ||||||
|     public CancelOrderCommandHandler(IOrderRepository orderRepository) |     public CancelOrderCommandHandler(IOrderRepository orderRepository) | ||||||
| @ -35,12 +27,12 @@ namespace Ordering.API.Application.Commands | |||||||
|         orderToUpdate.SetCancelledStatus(); |         orderToUpdate.SetCancelledStatus(); | ||||||
|         return await _orderRepository.UnitOfWork.SaveEntitiesAsync(cancellationToken); |         return await _orderRepository.UnitOfWork.SaveEntitiesAsync(cancellationToken); | ||||||
|     } |     } | ||||||
|     } | } | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|     // Use for Idempotency in Command process | // Use for Idempotency in Command process | ||||||
|     public class CancelOrderIdentifiedCommandHandler : IdentifiedCommandHandler<CancelOrderCommand, bool> | public class CancelOrderIdentifiedCommandHandler : IdentifiedCommandHandler<CancelOrderCommand, bool> | ||||||
|     { | { | ||||||
|     public CancelOrderIdentifiedCommandHandler( |     public CancelOrderIdentifiedCommandHandler( | ||||||
|         IMediator mediator, |         IMediator mediator, | ||||||
|         IRequestManager requestManager, |         IRequestManager requestManager, | ||||||
| @ -53,5 +45,4 @@ namespace Ordering.API.Application.Commands | |||||||
|     { |     { | ||||||
|         return true;                // Ignore duplicate requests for processing order. |         return true;                // Ignore duplicate requests for processing order. | ||||||
|     } |     } | ||||||
|     } |  | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,25 +1,20 @@ | |||||||
| using MediatR; | namespace Microsoft.eShopOnContainers.Services.Ordering.API.Application.Commands; | ||||||
| using Ordering.API.Application.Models; |  | ||||||
| using System; |  | ||||||
| using System.Collections.Generic; |  | ||||||
| using System.Linq; |  | ||||||
| using System.Runtime.Serialization; |  | ||||||
| 
 | 
 | ||||||
| namespace Microsoft.eShopOnContainers.Services.Ordering.API.Application.Commands | // DDD and CQRS patterns comment: Note that it is recommended to implement immutable Commands | ||||||
| { | // In this case, its immutability is achieved by having all the setters as private | ||||||
|     // DDD and CQRS patterns comment: Note that it is recommended to implement immutable Commands | // plus only being able to update the data just once, when creating the object through its constructor. | ||||||
|     // In this case, its immutability is achieved by having all the setters as private | // References on Immutable Commands:   | ||||||
|     // plus only being able to update the data just once, when creating the object through its constructor. | // http://cqrs.nu/Faq | ||||||
|     // References on Immutable Commands:   | // https://docs.spine3.org/motivation/immutability.html  | ||||||
|     // http://cqrs.nu/Faq | // http://blog.gauffin.org/2012/06/griffin-container-introducing-command-support/ | ||||||
|     // https://docs.spine3.org/motivation/immutability.html  | // https://docs.microsoft.com/dotnet/csharp/programming-guide/classes-and-structs/how-to-implement-a-lightweight-class-with-auto-implemented-properties | ||||||
|     // http://blog.gauffin.org/2012/06/griffin-container-introducing-command-support/ |  | ||||||
|     // https://docs.microsoft.com/dotnet/csharp/programming-guide/classes-and-structs/how-to-implement-a-lightweight-class-with-auto-implemented-properties |  | ||||||
| 
 | 
 | ||||||
|     [DataContract] | using Microsoft.eShopOnContainers.Services.Ordering.API.Application.Models; | ||||||
|     public class CreateOrderCommand | 
 | ||||||
|  | [DataContract] | ||||||
|  | public class CreateOrderCommand | ||||||
|     : IRequest<bool> |     : IRequest<bool> | ||||||
|     { | { | ||||||
|     [DataMember] |     [DataMember] | ||||||
|     private readonly List<OrderItemDTO> _orderItems; |     private readonly List<OrderItemDTO> _orderItems; | ||||||
| 
 | 
 | ||||||
| @ -102,5 +97,5 @@ namespace Microsoft.eShopOnContainers.Services.Ordering.API.Application.Commands | |||||||
| 
 | 
 | ||||||
|         public string PictureUrl { get; init; } |         public string PictureUrl { get; init; } | ||||||
|     } |     } | ||||||
|     } |  | ||||||
| } | } | ||||||
|  | 
 | ||||||
|  | |||||||
| @ -1,20 +1,11 @@ | |||||||
| namespace Microsoft.eShopOnContainers.Services.Ordering.API.Application.Commands | namespace Microsoft.eShopOnContainers.Services.Ordering.API.Application.Commands; | ||||||
| { |  | ||||||
|     using Domain.AggregatesModel.OrderAggregate; |  | ||||||
|     using global::Ordering.API.Application.IntegrationEvents; |  | ||||||
|     using global::Ordering.API.Application.IntegrationEvents.Events; |  | ||||||
|     using MediatR; |  | ||||||
|     using Microsoft.eShopOnContainers.Services.Ordering.API.Infrastructure.Services; |  | ||||||
|     using Microsoft.eShopOnContainers.Services.Ordering.Infrastructure.Idempotency; |  | ||||||
|     using Microsoft.Extensions.Logging; |  | ||||||
|     using System; |  | ||||||
|     using System.Threading; |  | ||||||
|     using System.Threading.Tasks; |  | ||||||
| 
 | 
 | ||||||
|     // Regular CommandHandler | using Microsoft.eShopOnContainers.Services.Ordering.Domain.AggregatesModel.OrderAggregate; | ||||||
|     public class CreateOrderCommandHandler | 
 | ||||||
|  | // Regular CommandHandler | ||||||
|  | public class CreateOrderCommandHandler | ||||||
|     : IRequestHandler<CreateOrderCommand, bool> |     : IRequestHandler<CreateOrderCommand, bool> | ||||||
|     { | { | ||||||
|     private readonly IOrderRepository _orderRepository; |     private readonly IOrderRepository _orderRepository; | ||||||
|     private readonly IIdentityService _identityService; |     private readonly IIdentityService _identityService; | ||||||
|     private readonly IMediator _mediator; |     private readonly IMediator _mediator; | ||||||
| @ -60,12 +51,12 @@ | |||||||
|         return await _orderRepository.UnitOfWork |         return await _orderRepository.UnitOfWork | ||||||
|             .SaveEntitiesAsync(cancellationToken); |             .SaveEntitiesAsync(cancellationToken); | ||||||
|     } |     } | ||||||
|     } | } | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|     // Use for Idempotency in Command process | // Use for Idempotency in Command process | ||||||
|     public class CreateOrderIdentifiedCommandHandler : IdentifiedCommandHandler<CreateOrderCommand, bool> | public class CreateOrderIdentifiedCommandHandler : IdentifiedCommandHandler<CreateOrderCommand, bool> | ||||||
|     { | { | ||||||
|     public CreateOrderIdentifiedCommandHandler( |     public CreateOrderIdentifiedCommandHandler( | ||||||
|         IMediator mediator, |         IMediator mediator, | ||||||
|         IRequestManager requestManager, |         IRequestManager requestManager, | ||||||
| @ -78,5 +69,4 @@ | |||||||
|     { |     { | ||||||
|         return true;                // Ignore duplicate requests for creating order. |         return true;                // Ignore duplicate requests for creating order. | ||||||
|     } |     } | ||||||
|     } |  | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,11 +1,8 @@ | |||||||
| using MediatR; | namespace Microsoft.eShopOnContainers.Services.Ordering.API.Application.Commands; | ||||||
| using Ordering.API.Application.Models; | using Microsoft.eShopOnContainers.Services.Ordering.API.Application.Models; | ||||||
| using System.Collections.Generic; |  | ||||||
| 
 | 
 | ||||||
| namespace Microsoft.eShopOnContainers.Services.Ordering.API.Application.Commands | public class CreateOrderDraftCommand : IRequest<OrderDraftDTO> | ||||||
| { | { | ||||||
|     public class CreateOrderDraftCommand : IRequest<OrderDraftDTO> |  | ||||||
|     { |  | ||||||
| 
 | 
 | ||||||
|     public string BuyerId { get; private set; } |     public string BuyerId { get; private set; } | ||||||
| 
 | 
 | ||||||
| @ -16,6 +13,4 @@ namespace Microsoft.eShopOnContainers.Services.Ordering.API.Application.Commands | |||||||
|         BuyerId = buyerId; |         BuyerId = buyerId; | ||||||
|         Items = items; |         Items = items; | ||||||
|     } |     } | ||||||
|     } |  | ||||||
| 
 |  | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,20 +1,12 @@ | |||||||
| namespace Microsoft.eShopOnContainers.Services.Ordering.API.Application.Commands | namespace Microsoft.eShopOnContainers.Services.Ordering.API.Application.Commands; | ||||||
| { |  | ||||||
|     using Domain.AggregatesModel.OrderAggregate; |  | ||||||
|     using global::Ordering.API.Application.Models; |  | ||||||
|     using MediatR; |  | ||||||
|     using Microsoft.eShopOnContainers.Services.Ordering.API.Infrastructure.Services; |  | ||||||
|     using System; |  | ||||||
|     using System.Collections.Generic; |  | ||||||
|     using System.Linq; |  | ||||||
|     using System.Threading; |  | ||||||
|     using System.Threading.Tasks; |  | ||||||
|     using static Microsoft.eShopOnContainers.Services.Ordering.API.Application.Commands.CreateOrderCommand; |  | ||||||
| 
 | 
 | ||||||
|     // Regular CommandHandler | using static Microsoft.eShopOnContainers.Services.Ordering.API.Application.Commands.CreateOrderCommand; | ||||||
|     public class CreateOrderDraftCommandHandler | using Microsoft.eShopOnContainers.Services.Ordering.Domain.AggregatesModel.OrderAggregate; | ||||||
|  | 
 | ||||||
|  | // Regular CommandHandler | ||||||
|  | public class CreateOrderDraftCommandHandler | ||||||
|     : IRequestHandler<CreateOrderDraftCommand, OrderDraftDTO> |     : IRequestHandler<CreateOrderDraftCommand, OrderDraftDTO> | ||||||
|     { | { | ||||||
|     private readonly IOrderRepository _orderRepository; |     private readonly IOrderRepository _orderRepository; | ||||||
|     private readonly IIdentityService _identityService; |     private readonly IIdentityService _identityService; | ||||||
|     private readonly IMediator _mediator; |     private readonly IMediator _mediator; | ||||||
| @ -38,11 +30,11 @@ | |||||||
| 
 | 
 | ||||||
|         return Task.FromResult(OrderDraftDTO.FromOrder(order)); |         return Task.FromResult(OrderDraftDTO.FromOrder(order)); | ||||||
|     } |     } | ||||||
|     } | } | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|     public record OrderDraftDTO | public record OrderDraftDTO | ||||||
|     { | { | ||||||
|     public IEnumerable<OrderItemDTO> OrderItems { get; init; } |     public IEnumerable<OrderItemDTO> OrderItems { get; init; } | ||||||
|     public decimal Total { get; init; } |     public decimal Total { get; init; } | ||||||
| 
 | 
 | ||||||
| @ -63,9 +55,4 @@ | |||||||
|         }; |         }; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     } |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| } | } | ||||||
| @ -1,11 +1,8 @@ | |||||||
| using MediatR; | namespace Microsoft.eShopOnContainers.Services.Ordering.API.Application.Commands; | ||||||
| using System; |  | ||||||
| 
 | 
 | ||||||
| namespace Microsoft.eShopOnContainers.Services.Ordering.API.Application.Commands | public class IdentifiedCommand<T, R> : IRequest<R> | ||||||
| { |  | ||||||
|     public class IdentifiedCommand<T, R> : IRequest<R> |  | ||||||
|     where T : IRequest<R> |     where T : IRequest<R> | ||||||
|     { | { | ||||||
|     public T Command { get; } |     public T Command { get; } | ||||||
|     public Guid Id { get; } |     public Guid Id { get; } | ||||||
|     public IdentifiedCommand(T command, Guid id) |     public IdentifiedCommand(T command, Guid id) | ||||||
| @ -13,5 +10,4 @@ namespace Microsoft.eShopOnContainers.Services.Ordering.API.Application.Commands | |||||||
|         Command = command; |         Command = command; | ||||||
|         Id = id; |         Id = id; | ||||||
|     } |     } | ||||||
|     } |  | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,22 +1,14 @@ | |||||||
| using MediatR; | namespace Microsoft.eShopOnContainers.Services.Ordering.API.Application.Commands; | ||||||
| using Microsoft.eShopOnContainers.BuildingBlocks.EventBus.Extensions; |  | ||||||
| using Microsoft.eShopOnContainers.Services.Ordering.Infrastructure.Idempotency; |  | ||||||
| using Microsoft.Extensions.Logging; |  | ||||||
| using Ordering.API.Application.Commands; |  | ||||||
| using System.Threading; |  | ||||||
| using System.Threading.Tasks; |  | ||||||
| 
 | 
 | ||||||
| namespace Microsoft.eShopOnContainers.Services.Ordering.API.Application.Commands | /// <summary> | ||||||
| { | /// Provides a base implementation for handling duplicate request and ensuring idempotent updates, in the cases where | ||||||
|     /// <summary> | /// a requestid sent by client is used to detect duplicate requests. | ||||||
|     /// Provides a base implementation for handling duplicate request and ensuring idempotent updates, in the cases where | /// </summary> | ||||||
|     /// a requestid sent by client is used to detect duplicate requests. | /// <typeparam name="T">Type of the command handler that performs the operation if request is not duplicated</typeparam> | ||||||
|     /// </summary> | /// <typeparam name="R">Return value of the inner command handler</typeparam> | ||||||
|     /// <typeparam name="T">Type of the command handler that performs the operation if request is not duplicated</typeparam> | public class IdentifiedCommandHandler<T, R> : IRequestHandler<IdentifiedCommand<T, R>, R> | ||||||
|     /// <typeparam name="R">Return value of the inner command handler</typeparam> |  | ||||||
|     public class IdentifiedCommandHandler<T, R> : IRequestHandler<IdentifiedCommand<T, R>, R> |  | ||||||
|     where T : IRequest<R> |     where T : IRequest<R> | ||||||
|     { | { | ||||||
|     private readonly IMediator _mediator; |     private readonly IMediator _mediator; | ||||||
|     private readonly IRequestManager _requestManager; |     private readonly IRequestManager _requestManager; | ||||||
|     private readonly ILogger<IdentifiedCommandHandler<T, R>> _logger; |     private readonly ILogger<IdentifiedCommandHandler<T, R>> _logger; | ||||||
| @ -112,5 +104,4 @@ namespace Microsoft.eShopOnContainers.Services.Ordering.API.Application.Commands | |||||||
|             } |             } | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|     } |  | ||||||
| } | } | ||||||
| @ -1,10 +1,7 @@ | |||||||
| using MediatR; | namespace Microsoft.eShopOnContainers.Services.Ordering.API.Application.Commands; | ||||||
| using System.Runtime.Serialization; |  | ||||||
| 
 | 
 | ||||||
| namespace Ordering.API.Application.Commands | public class SetAwaitingValidationOrderStatusCommand : IRequest<bool> | ||||||
| { | { | ||||||
|     public class SetAwaitingValidationOrderStatusCommand : IRequest<bool> |  | ||||||
|     { |  | ||||||
| 
 | 
 | ||||||
|     [DataMember] |     [DataMember] | ||||||
|     public int OrderNumber { get; private set; } |     public int OrderNumber { get; private set; } | ||||||
| @ -13,5 +10,4 @@ namespace Ordering.API.Application.Commands | |||||||
|     { |     { | ||||||
|         OrderNumber = orderNumber; |         OrderNumber = orderNumber; | ||||||
|     } |     } | ||||||
|     } |  | ||||||
| } | } | ||||||
| @ -1,16 +1,8 @@ | |||||||
| using MediatR; | namespace Microsoft.eShopOnContainers.Services.Ordering.API.Application.Commands; | ||||||
| using Microsoft.eShopOnContainers.Services.Ordering.API.Application.Commands; |  | ||||||
| using Microsoft.eShopOnContainers.Services.Ordering.Domain.AggregatesModel.OrderAggregate; |  | ||||||
| using Microsoft.eShopOnContainers.Services.Ordering.Infrastructure.Idempotency; |  | ||||||
| using Microsoft.Extensions.Logging; |  | ||||||
| using System.Threading; |  | ||||||
| using System.Threading.Tasks; |  | ||||||
| 
 | 
 | ||||||
| namespace Ordering.API.Application.Commands | // Regular CommandHandler | ||||||
|  | public class SetAwaitingValidationOrderStatusCommandHandler : IRequestHandler<SetAwaitingValidationOrderStatusCommand, bool> | ||||||
| { | { | ||||||
|     // Regular CommandHandler |  | ||||||
|     public class SetAwaitingValidationOrderStatusCommandHandler : IRequestHandler<SetAwaitingValidationOrderStatusCommand, bool> |  | ||||||
|     { |  | ||||||
|     private readonly IOrderRepository _orderRepository; |     private readonly IOrderRepository _orderRepository; | ||||||
| 
 | 
 | ||||||
|     public SetAwaitingValidationOrderStatusCommandHandler(IOrderRepository orderRepository) |     public SetAwaitingValidationOrderStatusCommandHandler(IOrderRepository orderRepository) | ||||||
| @ -35,12 +27,12 @@ namespace Ordering.API.Application.Commands | |||||||
|         orderToUpdate.SetAwaitingValidationStatus(); |         orderToUpdate.SetAwaitingValidationStatus(); | ||||||
|         return await _orderRepository.UnitOfWork.SaveEntitiesAsync(cancellationToken); |         return await _orderRepository.UnitOfWork.SaveEntitiesAsync(cancellationToken); | ||||||
|     } |     } | ||||||
|     } | } | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|     // Use for Idempotency in Command process | // Use for Idempotency in Command process | ||||||
|     public class SetAwaitingValidationIdentifiedOrderStatusCommandHandler : IdentifiedCommandHandler<SetAwaitingValidationOrderStatusCommand, bool> | public class SetAwaitingValidationIdentifiedOrderStatusCommandHandler : IdentifiedCommandHandler<SetAwaitingValidationOrderStatusCommand, bool> | ||||||
|     { | { | ||||||
|     public SetAwaitingValidationIdentifiedOrderStatusCommandHandler( |     public SetAwaitingValidationIdentifiedOrderStatusCommandHandler( | ||||||
|         IMediator mediator, |         IMediator mediator, | ||||||
|         IRequestManager requestManager, |         IRequestManager requestManager, | ||||||
| @ -53,5 +45,4 @@ namespace Ordering.API.Application.Commands | |||||||
|     { |     { | ||||||
|         return true;                // Ignore duplicate requests for processing order. |         return true;                // Ignore duplicate requests for processing order. | ||||||
|     } |     } | ||||||
|     } |  | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,10 +1,7 @@ | |||||||
| using MediatR; | namespace Microsoft.eShopOnContainers.Services.Ordering.API.Application.Commands; | ||||||
| using System.Runtime.Serialization; |  | ||||||
| 
 | 
 | ||||||
| namespace Ordering.API.Application.Commands | public class SetPaidOrderStatusCommand : IRequest<bool> | ||||||
| { | { | ||||||
|     public class SetPaidOrderStatusCommand : IRequest<bool> |  | ||||||
|     { |  | ||||||
| 
 | 
 | ||||||
|     [DataMember] |     [DataMember] | ||||||
|     public int OrderNumber { get; private set; } |     public int OrderNumber { get; private set; } | ||||||
| @ -13,5 +10,4 @@ namespace Ordering.API.Application.Commands | |||||||
|     { |     { | ||||||
|         OrderNumber = orderNumber; |         OrderNumber = orderNumber; | ||||||
|     } |     } | ||||||
|     } |  | ||||||
| } | } | ||||||
| @ -1,16 +1,8 @@ | |||||||
| using MediatR; | namespace Microsoft.eShopOnContainers.Services.Ordering.API.Application.Commands; | ||||||
| using Microsoft.eShopOnContainers.Services.Ordering.API.Application.Commands; |  | ||||||
| using Microsoft.eShopOnContainers.Services.Ordering.Domain.AggregatesModel.OrderAggregate; |  | ||||||
| using Microsoft.eShopOnContainers.Services.Ordering.Infrastructure.Idempotency; |  | ||||||
| using Microsoft.Extensions.Logging; |  | ||||||
| using System.Threading; |  | ||||||
| using System.Threading.Tasks; |  | ||||||
| 
 | 
 | ||||||
| namespace Ordering.API.Application.Commands | // Regular CommandHandler | ||||||
|  | public class SetPaidOrderStatusCommandHandler : IRequestHandler<SetPaidOrderStatusCommand, bool> | ||||||
| { | { | ||||||
|     // Regular CommandHandler |  | ||||||
|     public class SetPaidOrderStatusCommandHandler : IRequestHandler<SetPaidOrderStatusCommand, bool> |  | ||||||
|     { |  | ||||||
|     private readonly IOrderRepository _orderRepository; |     private readonly IOrderRepository _orderRepository; | ||||||
| 
 | 
 | ||||||
|     public SetPaidOrderStatusCommandHandler(IOrderRepository orderRepository) |     public SetPaidOrderStatusCommandHandler(IOrderRepository orderRepository) | ||||||
| @ -38,12 +30,12 @@ namespace Ordering.API.Application.Commands | |||||||
|         orderToUpdate.SetPaidStatus(); |         orderToUpdate.SetPaidStatus(); | ||||||
|         return await _orderRepository.UnitOfWork.SaveEntitiesAsync(cancellationToken); |         return await _orderRepository.UnitOfWork.SaveEntitiesAsync(cancellationToken); | ||||||
|     } |     } | ||||||
|     } | } | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|     // Use for Idempotency in Command process | // Use for Idempotency in Command process | ||||||
|     public class SetPaidIdentifiedOrderStatusCommandHandler : IdentifiedCommandHandler<SetPaidOrderStatusCommand, bool> | public class SetPaidIdentifiedOrderStatusCommandHandler : IdentifiedCommandHandler<SetPaidOrderStatusCommand, bool> | ||||||
|     { | { | ||||||
|     public SetPaidIdentifiedOrderStatusCommandHandler( |     public SetPaidIdentifiedOrderStatusCommandHandler( | ||||||
|         IMediator mediator, |         IMediator mediator, | ||||||
|         IRequestManager requestManager, |         IRequestManager requestManager, | ||||||
| @ -56,5 +48,4 @@ namespace Ordering.API.Application.Commands | |||||||
|     { |     { | ||||||
|         return true;                // Ignore duplicate requests for processing order. |         return true;                // Ignore duplicate requests for processing order. | ||||||
|     } |     } | ||||||
|     } |  | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,10 +1,7 @@ | |||||||
| using MediatR; | namespace Microsoft.eShopOnContainers.Services.Ordering.API.Application.Commands; | ||||||
| using System.Runtime.Serialization; |  | ||||||
| 
 | 
 | ||||||
| namespace Ordering.API.Application.Commands | public class SetStockConfirmedOrderStatusCommand : IRequest<bool> | ||||||
| { | { | ||||||
|     public class SetStockConfirmedOrderStatusCommand : IRequest<bool> |  | ||||||
|     { |  | ||||||
| 
 | 
 | ||||||
|     [DataMember] |     [DataMember] | ||||||
|     public int OrderNumber { get; private set; } |     public int OrderNumber { get; private set; } | ||||||
| @ -13,5 +10,4 @@ namespace Ordering.API.Application.Commands | |||||||
|     { |     { | ||||||
|         OrderNumber = orderNumber; |         OrderNumber = orderNumber; | ||||||
|     } |     } | ||||||
|     } |  | ||||||
| } | } | ||||||
| @ -1,16 +1,8 @@ | |||||||
| using MediatR; | namespace Microsoft.eShopOnContainers.Services.Ordering.API.Application.Commands; | ||||||
| using Microsoft.eShopOnContainers.Services.Ordering.API.Application.Commands; |  | ||||||
| using Microsoft.eShopOnContainers.Services.Ordering.Domain.AggregatesModel.OrderAggregate; |  | ||||||
| using Microsoft.eShopOnContainers.Services.Ordering.Infrastructure.Idempotency; |  | ||||||
| using Microsoft.Extensions.Logging; |  | ||||||
| using System.Threading; |  | ||||||
| using System.Threading.Tasks; |  | ||||||
| 
 | 
 | ||||||
| namespace Ordering.API.Application.Commands | // Regular CommandHandler | ||||||
|  | public class SetStockConfirmedOrderStatusCommandHandler : IRequestHandler<SetStockConfirmedOrderStatusCommand, bool> | ||||||
| { | { | ||||||
|     // Regular CommandHandler |  | ||||||
|     public class SetStockConfirmedOrderStatusCommandHandler : IRequestHandler<SetStockConfirmedOrderStatusCommand, bool> |  | ||||||
|     { |  | ||||||
|     private readonly IOrderRepository _orderRepository; |     private readonly IOrderRepository _orderRepository; | ||||||
| 
 | 
 | ||||||
|     public SetStockConfirmedOrderStatusCommandHandler(IOrderRepository orderRepository) |     public SetStockConfirmedOrderStatusCommandHandler(IOrderRepository orderRepository) | ||||||
| @ -38,12 +30,12 @@ namespace Ordering.API.Application.Commands | |||||||
|         orderToUpdate.SetStockConfirmedStatus(); |         orderToUpdate.SetStockConfirmedStatus(); | ||||||
|         return await _orderRepository.UnitOfWork.SaveEntitiesAsync(cancellationToken); |         return await _orderRepository.UnitOfWork.SaveEntitiesAsync(cancellationToken); | ||||||
|     } |     } | ||||||
|     } | } | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|     // Use for Idempotency in Command process | // Use for Idempotency in Command process | ||||||
|     public class SetStockConfirmedOrderStatusIdenfifiedCommandHandler : IdentifiedCommandHandler<SetStockConfirmedOrderStatusCommand, bool> | public class SetStockConfirmedOrderStatusIdenfifiedCommandHandler : IdentifiedCommandHandler<SetStockConfirmedOrderStatusCommand, bool> | ||||||
|     { | { | ||||||
|     public SetStockConfirmedOrderStatusIdenfifiedCommandHandler( |     public SetStockConfirmedOrderStatusIdenfifiedCommandHandler( | ||||||
|         IMediator mediator, |         IMediator mediator, | ||||||
|         IRequestManager requestManager, |         IRequestManager requestManager, | ||||||
| @ -56,5 +48,4 @@ namespace Ordering.API.Application.Commands | |||||||
|     { |     { | ||||||
|         return true;                // Ignore duplicate requests for processing order. |         return true;                // Ignore duplicate requests for processing order. | ||||||
|     } |     } | ||||||
|     } |  | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,11 +1,7 @@ | |||||||
| using MediatR; | namespace Microsoft.eShopOnContainers.Services.Ordering.API.Application.Commands; | ||||||
| using System.Collections.Generic; |  | ||||||
| using System.Runtime.Serialization; |  | ||||||
| 
 | 
 | ||||||
| namespace Ordering.API.Application.Commands | public class SetStockRejectedOrderStatusCommand : IRequest<bool> | ||||||
| { | { | ||||||
|     public class SetStockRejectedOrderStatusCommand : IRequest<bool> |  | ||||||
|     { |  | ||||||
| 
 | 
 | ||||||
|     [DataMember] |     [DataMember] | ||||||
|     public int OrderNumber { get; private set; } |     public int OrderNumber { get; private set; } | ||||||
| @ -18,5 +14,4 @@ namespace Ordering.API.Application.Commands | |||||||
|         OrderNumber = orderNumber; |         OrderNumber = orderNumber; | ||||||
|         OrderStockItems = orderStockItems; |         OrderStockItems = orderStockItems; | ||||||
|     } |     } | ||||||
|     } |  | ||||||
| } | } | ||||||
| @ -1,16 +1,8 @@ | |||||||
| using MediatR; | namespace Microsoft.eShopOnContainers.Services.Ordering.API.Application.Commands; | ||||||
| using Microsoft.eShopOnContainers.Services.Ordering.API.Application.Commands; |  | ||||||
| using Microsoft.eShopOnContainers.Services.Ordering.Domain.AggregatesModel.OrderAggregate; |  | ||||||
| using Microsoft.eShopOnContainers.Services.Ordering.Infrastructure.Idempotency; |  | ||||||
| using Microsoft.Extensions.Logging; |  | ||||||
| using System.Threading; |  | ||||||
| using System.Threading.Tasks; |  | ||||||
| 
 | 
 | ||||||
| namespace Ordering.API.Application.Commands | // Regular CommandHandler | ||||||
|  | public class SetStockRejectedOrderStatusCommandHandler : IRequestHandler<SetStockRejectedOrderStatusCommand, bool> | ||||||
| { | { | ||||||
|     // Regular CommandHandler |  | ||||||
|     public class SetStockRejectedOrderStatusCommandHandler : IRequestHandler<SetStockRejectedOrderStatusCommand, bool> |  | ||||||
|     { |  | ||||||
|     private readonly IOrderRepository _orderRepository; |     private readonly IOrderRepository _orderRepository; | ||||||
| 
 | 
 | ||||||
|     public SetStockRejectedOrderStatusCommandHandler(IOrderRepository orderRepository) |     public SetStockRejectedOrderStatusCommandHandler(IOrderRepository orderRepository) | ||||||
| @ -39,12 +31,12 @@ namespace Ordering.API.Application.Commands | |||||||
| 
 | 
 | ||||||
|         return await _orderRepository.UnitOfWork.SaveEntitiesAsync(cancellationToken); |         return await _orderRepository.UnitOfWork.SaveEntitiesAsync(cancellationToken); | ||||||
|     } |     } | ||||||
|     } | } | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|     // Use for Idempotency in Command process | // Use for Idempotency in Command process | ||||||
|     public class SetStockRejectedOrderStatusIdenfifiedCommandHandler : IdentifiedCommandHandler<SetStockRejectedOrderStatusCommand, bool> | public class SetStockRejectedOrderStatusIdenfifiedCommandHandler : IdentifiedCommandHandler<SetStockRejectedOrderStatusCommand, bool> | ||||||
|     { | { | ||||||
|     public SetStockRejectedOrderStatusIdenfifiedCommandHandler( |     public SetStockRejectedOrderStatusIdenfifiedCommandHandler( | ||||||
|         IMediator mediator, |         IMediator mediator, | ||||||
|         IRequestManager requestManager, |         IRequestManager requestManager, | ||||||
| @ -57,5 +49,4 @@ namespace Ordering.API.Application.Commands | |||||||
|     { |     { | ||||||
|         return true;                // Ignore duplicate requests for processing order. |         return true;                // Ignore duplicate requests for processing order. | ||||||
|     } |     } | ||||||
|     } |  | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,10 +1,7 @@ | |||||||
| using MediatR; | namespace Microsoft.eShopOnContainers.Services.Ordering.API.Application.Commands; | ||||||
| using System.Runtime.Serialization; |  | ||||||
| 
 | 
 | ||||||
| namespace Ordering.API.Application.Commands | public class ShipOrderCommand : IRequest<bool> | ||||||
| { | { | ||||||
|     public class ShipOrderCommand : IRequest<bool> |  | ||||||
|     { |  | ||||||
| 
 | 
 | ||||||
|     [DataMember] |     [DataMember] | ||||||
|     public int OrderNumber { get; private set; } |     public int OrderNumber { get; private set; } | ||||||
| @ -13,5 +10,4 @@ namespace Ordering.API.Application.Commands | |||||||
|     { |     { | ||||||
|         OrderNumber = orderNumber; |         OrderNumber = orderNumber; | ||||||
|     } |     } | ||||||
|     } |  | ||||||
| } | } | ||||||
| @ -1,16 +1,8 @@ | |||||||
| using MediatR; | namespace Microsoft.eShopOnContainers.Services.Ordering.API.Application.Commands; | ||||||
| using Microsoft.eShopOnContainers.Services.Ordering.API.Application.Commands; |  | ||||||
| using Microsoft.eShopOnContainers.Services.Ordering.Domain.AggregatesModel.OrderAggregate; |  | ||||||
| using Microsoft.eShopOnContainers.Services.Ordering.Infrastructure.Idempotency; |  | ||||||
| using Microsoft.Extensions.Logging; |  | ||||||
| using System.Threading; |  | ||||||
| using System.Threading.Tasks; |  | ||||||
| 
 | 
 | ||||||
| namespace Ordering.API.Application.Commands | // Regular CommandHandler | ||||||
|  | public class ShipOrderCommandHandler : IRequestHandler<ShipOrderCommand, bool> | ||||||
| { | { | ||||||
|     // Regular CommandHandler |  | ||||||
|     public class ShipOrderCommandHandler : IRequestHandler<ShipOrderCommand, bool> |  | ||||||
|     { |  | ||||||
|     private readonly IOrderRepository _orderRepository; |     private readonly IOrderRepository _orderRepository; | ||||||
| 
 | 
 | ||||||
|     public ShipOrderCommandHandler(IOrderRepository orderRepository) |     public ShipOrderCommandHandler(IOrderRepository orderRepository) | ||||||
| @ -35,12 +27,12 @@ namespace Ordering.API.Application.Commands | |||||||
|         orderToUpdate.SetShippedStatus(); |         orderToUpdate.SetShippedStatus(); | ||||||
|         return await _orderRepository.UnitOfWork.SaveEntitiesAsync(cancellationToken); |         return await _orderRepository.UnitOfWork.SaveEntitiesAsync(cancellationToken); | ||||||
|     } |     } | ||||||
|     } | } | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|     // Use for Idempotency in Command process | // Use for Idempotency in Command process | ||||||
|     public class ShipOrderIdentifiedCommandHandler : IdentifiedCommandHandler<ShipOrderCommand, bool> | public class ShipOrderIdentifiedCommandHandler : IdentifiedCommandHandler<ShipOrderCommand, bool> | ||||||
|     { | { | ||||||
|     public ShipOrderIdentifiedCommandHandler( |     public ShipOrderIdentifiedCommandHandler( | ||||||
|         IMediator mediator, |         IMediator mediator, | ||||||
|         IRequestManager requestManager, |         IRequestManager requestManager, | ||||||
| @ -53,5 +45,4 @@ namespace Ordering.API.Application.Commands | |||||||
|     { |     { | ||||||
|         return true;                // Ignore duplicate requests for processing order. |         return true;                // Ignore duplicate requests for processing order. | ||||||
|     } |     } | ||||||
|     } |  | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,16 +1,8 @@ | |||||||
| using MediatR; | namespace Microsoft.eShopOnContainers.Services.Ordering.API.Application.DomainEventHandlers.BuyerAndPaymentMethodVerified; | ||||||
| using Microsoft.eShopOnContainers.Services.Ordering.Domain.AggregatesModel.OrderAggregate; |  | ||||||
| using Microsoft.Extensions.Logging; |  | ||||||
| using Ordering.Domain.Events; |  | ||||||
| using System; |  | ||||||
| using System.Threading; |  | ||||||
| using System.Threading.Tasks; |  | ||||||
| 
 | 
 | ||||||
| namespace Ordering.API.Application.DomainEventHandlers.BuyerAndPaymentMethodVerified | public class UpdateOrderWhenBuyerAndPaymentMethodVerifiedDomainEventHandler | ||||||
| { |  | ||||||
|     public class UpdateOrderWhenBuyerAndPaymentMethodVerifiedDomainEventHandler |  | ||||||
|                 : INotificationHandler<BuyerAndPaymentMethodVerifiedDomainEvent> |                 : INotificationHandler<BuyerAndPaymentMethodVerifiedDomainEvent> | ||||||
|     { | { | ||||||
|     private readonly IOrderRepository _orderRepository; |     private readonly IOrderRepository _orderRepository; | ||||||
|     private readonly ILoggerFactory _logger; |     private readonly ILoggerFactory _logger; | ||||||
| 
 | 
 | ||||||
| @ -34,5 +26,4 @@ namespace Ordering.API.Application.DomainEventHandlers.BuyerAndPaymentMethodVeri | |||||||
|             .LogTrace("Order with Id: {OrderId} has been successfully updated with a payment method {PaymentMethod} ({Id})", |             .LogTrace("Order with Id: {OrderId} has been successfully updated with a payment method {PaymentMethod} ({Id})", | ||||||
|                 buyerPaymentMethodVerifiedEvent.OrderId, nameof(buyerPaymentMethodVerifiedEvent.Payment), buyerPaymentMethodVerifiedEvent.Payment.Id); |                 buyerPaymentMethodVerifiedEvent.OrderId, nameof(buyerPaymentMethodVerifiedEvent.Payment), buyerPaymentMethodVerifiedEvent.Payment.Id); | ||||||
|     } |     } | ||||||
|     } |  | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,19 +1,10 @@ | |||||||
| using MediatR; | using Microsoft.eShopOnContainers.Services.Ordering.Domain.Events; | ||||||
| using Microsoft.eShopOnContainers.Services.Ordering.Domain.AggregatesModel.BuyerAggregate; |  | ||||||
| using Microsoft.eShopOnContainers.Services.Ordering.Domain.AggregatesModel.OrderAggregate; |  | ||||||
| using Microsoft.Extensions.Logging; |  | ||||||
| using Ordering.API.Application.IntegrationEvents; |  | ||||||
| using Ordering.API.Application.IntegrationEvents.Events; |  | ||||||
| using Ordering.Domain.Events; |  | ||||||
| using System; |  | ||||||
| using System.Threading; |  | ||||||
| using System.Threading.Tasks; |  | ||||||
| 
 | 
 | ||||||
| namespace Ordering.API.Application.DomainEventHandlers.OrderCancelled | namespace Microsoft.eShopOnContainers.Services.Ordering.API.Application.DomainEventHandlers.OrderCancelled; | ||||||
| { | 
 | ||||||
|     public class OrderCancelledDomainEventHandler | public class OrderCancelledDomainEventHandler | ||||||
|                 : INotificationHandler<OrderCancelledDomainEvent> |                 : INotificationHandler<OrderCancelledDomainEvent> | ||||||
|     { | { | ||||||
|     private readonly IOrderRepository _orderRepository; |     private readonly IOrderRepository _orderRepository; | ||||||
|     private readonly IBuyerRepository _buyerRepository; |     private readonly IBuyerRepository _buyerRepository; | ||||||
|     private readonly ILoggerFactory _logger; |     private readonly ILoggerFactory _logger; | ||||||
| @ -43,5 +34,4 @@ namespace Ordering.API.Application.DomainEventHandlers.OrderCancelled | |||||||
|         var orderStatusChangedToCancelledIntegrationEvent = new OrderStatusChangedToCancelledIntegrationEvent(order.Id, order.OrderStatus.Name, buyer.Name); |         var orderStatusChangedToCancelledIntegrationEvent = new OrderStatusChangedToCancelledIntegrationEvent(order.Id, order.OrderStatus.Name, buyer.Name); | ||||||
|         await _orderingIntegrationEventService.AddAndSaveEventAsync(orderStatusChangedToCancelledIntegrationEvent); |         await _orderingIntegrationEventService.AddAndSaveEventAsync(orderStatusChangedToCancelledIntegrationEvent); | ||||||
|     } |     } | ||||||
|     } |  | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,20 +1,8 @@ | |||||||
| namespace Ordering.API.Application.DomainEventHandlers.OrderGracePeriodConfirmed | namespace Microsoft.eShopOnContainers.Services.Ordering.API.Application.DomainEventHandlers.OrderGracePeriodConfirmed; | ||||||
| { |  | ||||||
|     using Domain.Events; |  | ||||||
|     using MediatR; |  | ||||||
|     using Microsoft.eShopOnContainers.Services.Ordering.Domain.AggregatesModel.BuyerAggregate; |  | ||||||
|     using Microsoft.eShopOnContainers.Services.Ordering.Domain.AggregatesModel.OrderAggregate; |  | ||||||
|     using Microsoft.Extensions.Logging; |  | ||||||
|     using Ordering.API.Application.IntegrationEvents; |  | ||||||
|     using Ordering.API.Application.IntegrationEvents.Events; |  | ||||||
|     using System; |  | ||||||
|     using System.Linq; |  | ||||||
|     using System.Threading; |  | ||||||
|     using System.Threading.Tasks; |  | ||||||
|      |      | ||||||
|     public class OrderStatusChangedToAwaitingValidationDomainEventHandler | public class OrderStatusChangedToAwaitingValidationDomainEventHandler | ||||||
|                 : INotificationHandler<OrderStatusChangedToAwaitingValidationDomainEvent> |                 : INotificationHandler<OrderStatusChangedToAwaitingValidationDomainEvent> | ||||||
|     { | { | ||||||
|     private readonly IOrderRepository _orderRepository; |     private readonly IOrderRepository _orderRepository; | ||||||
|     private readonly ILoggerFactory _logger; |     private readonly ILoggerFactory _logger; | ||||||
|     private readonly IBuyerRepository _buyerRepository; |     private readonly IBuyerRepository _buyerRepository; | ||||||
| @ -48,5 +36,4 @@ | |||||||
|             order.Id, order.OrderStatus.Name, buyer.Name, orderStockList); |             order.Id, order.OrderStatus.Name, buyer.Name, orderStockList); | ||||||
|         await _orderingIntegrationEventService.AddAndSaveEventAsync(orderStatusChangedToAwaitingValidationIntegrationEvent); |         await _orderingIntegrationEventService.AddAndSaveEventAsync(orderStatusChangedToAwaitingValidationIntegrationEvent); | ||||||
|     } |     } | ||||||
|     } |  | ||||||
| } | } | ||||||
| @ -1,20 +1,8 @@ | |||||||
| namespace Ordering.API.Application.DomainEventHandlers.OrderPaid | namespace Microsoft.eShopOnContainers.Services.Ordering.API.Application.DomainEventHandlers.OrderPaid; | ||||||
| { |  | ||||||
|     using Domain.Events; |  | ||||||
|     using MediatR; |  | ||||||
|     using Microsoft.eShopOnContainers.Services.Ordering.Domain.AggregatesModel.BuyerAggregate; |  | ||||||
|     using Microsoft.eShopOnContainers.Services.Ordering.Domain.AggregatesModel.OrderAggregate; |  | ||||||
|     using Microsoft.Extensions.Logging; |  | ||||||
|     using Ordering.API.Application.IntegrationEvents; |  | ||||||
|     using Ordering.API.Application.IntegrationEvents.Events; |  | ||||||
|     using System; |  | ||||||
|     using System.Linq; |  | ||||||
|     using System.Threading; |  | ||||||
|     using System.Threading.Tasks; |  | ||||||
|      |      | ||||||
|     public class OrderStatusChangedToPaidDomainEventHandler | public class OrderStatusChangedToPaidDomainEventHandler | ||||||
|                 : INotificationHandler<OrderStatusChangedToPaidDomainEvent> |                 : INotificationHandler<OrderStatusChangedToPaidDomainEvent> | ||||||
|     { | { | ||||||
|     private readonly IOrderRepository _orderRepository; |     private readonly IOrderRepository _orderRepository; | ||||||
|     private readonly ILoggerFactory _logger; |     private readonly ILoggerFactory _logger; | ||||||
|     private readonly IBuyerRepository _buyerRepository; |     private readonly IBuyerRepository _buyerRepository; | ||||||
| @ -53,5 +41,4 @@ | |||||||
| 
 | 
 | ||||||
|         await _orderingIntegrationEventService.AddAndSaveEventAsync(orderStatusChangedToPaidIntegrationEvent); |         await _orderingIntegrationEventService.AddAndSaveEventAsync(orderStatusChangedToPaidIntegrationEvent); | ||||||
|     } |     } | ||||||
|     } |  | ||||||
| } | } | ||||||
| @ -1,19 +1,8 @@ | |||||||
| using MediatR; | namespace Microsoft.eShopOnContainers.Services.Ordering.API.Application.DomainEventHandlers.OrderShipped; | ||||||
| using Microsoft.eShopOnContainers.Services.Ordering.Domain.AggregatesModel.BuyerAggregate; |  | ||||||
| using Microsoft.eShopOnContainers.Services.Ordering.Domain.AggregatesModel.OrderAggregate; |  | ||||||
| using Microsoft.Extensions.Logging; |  | ||||||
| using Ordering.API.Application.IntegrationEvents; |  | ||||||
| using Ordering.API.Application.IntegrationEvents.Events; |  | ||||||
| using Ordering.Domain.Events; |  | ||||||
| using System; |  | ||||||
| using System.Threading; |  | ||||||
| using System.Threading.Tasks; |  | ||||||
| 
 | 
 | ||||||
| namespace Ordering.API.Application.DomainEventHandlers.OrderShipped | public class OrderShippedDomainEventHandler | ||||||
| { |  | ||||||
|     public class OrderShippedDomainEventHandler |  | ||||||
|                 : INotificationHandler<OrderShippedDomainEvent> |                 : INotificationHandler<OrderShippedDomainEvent> | ||||||
|     { | { | ||||||
|     private readonly IOrderRepository _orderRepository; |     private readonly IOrderRepository _orderRepository; | ||||||
|     private readonly IBuyerRepository _buyerRepository; |     private readonly IBuyerRepository _buyerRepository; | ||||||
|     private readonly IOrderingIntegrationEventService _orderingIntegrationEventService; |     private readonly IOrderingIntegrationEventService _orderingIntegrationEventService; | ||||||
| @ -43,5 +32,4 @@ namespace Ordering.API.Application.DomainEventHandlers.OrderShipped | |||||||
|         var orderStatusChangedToShippedIntegrationEvent = new OrderStatusChangedToShippedIntegrationEvent(order.Id, order.OrderStatus.Name, buyer.Name); |         var orderStatusChangedToShippedIntegrationEvent = new OrderStatusChangedToShippedIntegrationEvent(order.Id, order.OrderStatus.Name, buyer.Name); | ||||||
|         await _orderingIntegrationEventService.AddAndSaveEventAsync(orderStatusChangedToShippedIntegrationEvent); |         await _orderingIntegrationEventService.AddAndSaveEventAsync(orderStatusChangedToShippedIntegrationEvent); | ||||||
|     } |     } | ||||||
|     } |  | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,8 +1,8 @@ | |||||||
| namespace Ordering.API.Application.DomainEventHandlers.OrderStartedEvent | namespace Microsoft.eShopOnContainers.Services.Ordering.API.Application.DomainEventHandlers.OrderStartedEvent; | ||||||
|  | 
 | ||||||
|  | public class SendEmailToCustomerWhenOrderStartedDomainEventHandler | ||||||
|  | //: IAsyncNotificationHandler<OrderStartedDomainEvent> | ||||||
| { | { | ||||||
|     public class SendEmailToCustomerWhenOrderStartedDomainEventHandler |  | ||||||
|     //: IAsyncNotificationHandler<OrderStartedDomainEvent> |  | ||||||
|     { |  | ||||||
|     public SendEmailToCustomerWhenOrderStartedDomainEventHandler() |     public SendEmailToCustomerWhenOrderStartedDomainEventHandler() | ||||||
|     { |     { | ||||||
| 
 | 
 | ||||||
| @ -12,5 +12,4 @@ | |||||||
|     //{ |     //{ | ||||||
|     //    //TBD - Send email logic |     //    //TBD - Send email logic | ||||||
|     //} |     //} | ||||||
|     } |  | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,19 +1,8 @@ | |||||||
| using MediatR; | namespace Microsoft.eShopOnContainers.Services.Ordering.API.Application.DomainEventHandlers.OrderStartedEvent; | ||||||
| using Microsoft.eShopOnContainers.Services.Ordering.API.Infrastructure.Services; |  | ||||||
| using Microsoft.eShopOnContainers.Services.Ordering.Domain.AggregatesModel.BuyerAggregate; |  | ||||||
| using Microsoft.Extensions.Logging; |  | ||||||
| using Ordering.API.Application.IntegrationEvents; |  | ||||||
| using Ordering.API.Application.IntegrationEvents.Events; |  | ||||||
| using Ordering.Domain.Events; |  | ||||||
| using System; |  | ||||||
| using System.Threading; |  | ||||||
| using System.Threading.Tasks; |  | ||||||
| 
 | 
 | ||||||
| namespace Ordering.API.Application.DomainEventHandlers.OrderStartedEvent | public class ValidateOrAddBuyerAggregateWhenOrderStartedDomainEventHandler | ||||||
| { |  | ||||||
|     public class ValidateOrAddBuyerAggregateWhenOrderStartedDomainEventHandler |  | ||||||
|                     : INotificationHandler<OrderStartedDomainEvent> |                     : INotificationHandler<OrderStartedDomainEvent> | ||||||
|     { | { | ||||||
|     private readonly ILoggerFactory _logger; |     private readonly ILoggerFactory _logger; | ||||||
|     private readonly IBuyerRepository _buyerRepository; |     private readonly IBuyerRepository _buyerRepository; | ||||||
|     private readonly IIdentityService _identityService; |     private readonly IIdentityService _identityService; | ||||||
| @ -63,5 +52,4 @@ namespace Ordering.API.Application.DomainEventHandlers.OrderStartedEvent | |||||||
|             .LogTrace("Buyer {BuyerId} and related payment method were validated or updated for orderId: {OrderId}.", |             .LogTrace("Buyer {BuyerId} and related payment method were validated or updated for orderId: {OrderId}.", | ||||||
|                 buyerUpdated.Id, orderStartedEvent.Order.Id); |                 buyerUpdated.Id, orderStartedEvent.Order.Id); | ||||||
|     } |     } | ||||||
|     } |  | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,19 +1,8 @@ | |||||||
| namespace Ordering.API.Application.DomainEventHandlers.OrderStockConfirmed | namespace Microsoft.eShopOnContainers.Services.Ordering.API.Application.DomainEventHandlers.OrderStockConfirmed; | ||||||
| { |  | ||||||
|     using Domain.Events; |  | ||||||
|     using MediatR; |  | ||||||
|     using Microsoft.eShopOnContainers.Services.Ordering.Domain.AggregatesModel.BuyerAggregate; |  | ||||||
|     using Microsoft.eShopOnContainers.Services.Ordering.Domain.AggregatesModel.OrderAggregate; |  | ||||||
|     using Microsoft.Extensions.Logging; |  | ||||||
|     using Ordering.API.Application.IntegrationEvents; |  | ||||||
|     using Ordering.API.Application.IntegrationEvents.Events; |  | ||||||
|     using System; |  | ||||||
|     using System.Threading; |  | ||||||
|     using System.Threading.Tasks; |  | ||||||
| 
 | 
 | ||||||
|     public class OrderStatusChangedToStockConfirmedDomainEventHandler | public class OrderStatusChangedToStockConfirmedDomainEventHandler | ||||||
|                 : INotificationHandler<OrderStatusChangedToStockConfirmedDomainEvent> |                 : INotificationHandler<OrderStatusChangedToStockConfirmedDomainEvent> | ||||||
|     { | { | ||||||
|     private readonly IOrderRepository _orderRepository; |     private readonly IOrderRepository _orderRepository; | ||||||
|     private readonly IBuyerRepository _buyerRepository; |     private readonly IBuyerRepository _buyerRepository; | ||||||
|     private readonly ILoggerFactory _logger; |     private readonly ILoggerFactory _logger; | ||||||
| @ -43,5 +32,4 @@ | |||||||
|         var orderStatusChangedToStockConfirmedIntegrationEvent = new OrderStatusChangedToStockConfirmedIntegrationEvent(order.Id, order.OrderStatus.Name, buyer.Name); |         var orderStatusChangedToStockConfirmedIntegrationEvent = new OrderStatusChangedToStockConfirmedIntegrationEvent(order.Id, order.OrderStatus.Name, buyer.Name); | ||||||
|         await _orderingIntegrationEventService.AddAndSaveEventAsync(orderStatusChangedToStockConfirmedIntegrationEvent); |         await _orderingIntegrationEventService.AddAndSaveEventAsync(orderStatusChangedToStockConfirmedIntegrationEvent); | ||||||
|     } |     } | ||||||
|     } |  | ||||||
| } | } | ||||||
| @ -1,16 +1,7 @@ | |||||||
| using MediatR; | namespace Microsoft.eShopOnContainers.Services.Ordering.API.Application.IntegrationEvents.EventHandling; | ||||||
| using Microsoft.eShopOnContainers.BuildingBlocks.EventBus.Abstractions; |  | ||||||
| using Microsoft.eShopOnContainers.BuildingBlocks.EventBus.Extensions; |  | ||||||
| using Microsoft.Extensions.Logging; |  | ||||||
| using Ordering.API.Application.Commands; |  | ||||||
| using Ordering.API.Application.IntegrationEvents.Events; |  | ||||||
| using Serilog.Context; |  | ||||||
| using System.Threading.Tasks; |  | ||||||
| 
 | 
 | ||||||
| namespace Ordering.API.Application.IntegrationEvents.EventHandling | public class GracePeriodConfirmedIntegrationEventHandler : IIntegrationEventHandler<GracePeriodConfirmedIntegrationEvent> | ||||||
| { | { | ||||||
|     public class GracePeriodConfirmedIntegrationEventHandler : IIntegrationEventHandler<GracePeriodConfirmedIntegrationEvent> |  | ||||||
|     { |  | ||||||
|     private readonly IMediator _mediator; |     private readonly IMediator _mediator; | ||||||
|     private readonly ILogger<GracePeriodConfirmedIntegrationEventHandler> _logger; |     private readonly ILogger<GracePeriodConfirmedIntegrationEventHandler> _logger; | ||||||
| 
 | 
 | ||||||
| @ -48,5 +39,4 @@ namespace Ordering.API.Application.IntegrationEvents.EventHandling | |||||||
|             await _mediator.Send(command); |             await _mediator.Send(command); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|     } |  | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,18 +1,8 @@ | |||||||
| namespace Ordering.API.Application.IntegrationEvents.EventHandling | namespace Microsoft.eShopOnContainers.Services.Ordering.API.Application.IntegrationEvents.EventHandling; | ||||||
| { |  | ||||||
|     using MediatR; |  | ||||||
|     using Microsoft.eShopOnContainers.BuildingBlocks.EventBus.Abstractions; |  | ||||||
|     using Microsoft.eShopOnContainers.BuildingBlocks.EventBus.Extensions; |  | ||||||
|     using Microsoft.Extensions.Logging; |  | ||||||
|     using Ordering.API.Application.Commands; |  | ||||||
|     using Ordering.API.Application.IntegrationEvents.Events; |  | ||||||
|     using Serilog.Context; |  | ||||||
|     using System; |  | ||||||
|     using System.Threading.Tasks; |  | ||||||
| 
 | 
 | ||||||
|     public class OrderPaymentFailedIntegrationEventHandler : | public class OrderPaymentFailedIntegrationEventHandler : | ||||||
|     IIntegrationEventHandler<OrderPaymentFailedIntegrationEvent> |     IIntegrationEventHandler<OrderPaymentFailedIntegrationEvent> | ||||||
|     { | { | ||||||
|     private readonly IMediator _mediator; |     private readonly IMediator _mediator; | ||||||
|     private readonly ILogger<OrderPaymentFailedIntegrationEventHandler> _logger; |     private readonly ILogger<OrderPaymentFailedIntegrationEventHandler> _logger; | ||||||
| 
 | 
 | ||||||
| @ -42,5 +32,4 @@ | |||||||
|             await _mediator.Send(command); |             await _mediator.Send(command); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|     } |  | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,18 +1,8 @@ | |||||||
| namespace Ordering.API.Application.IntegrationEvents.EventHandling | namespace Microsoft.eShopOnContainers.Services.Ordering.API.Application.IntegrationEvents.EventHandling; | ||||||
| { |  | ||||||
|     using MediatR; |  | ||||||
|     using Microsoft.eShopOnContainers.BuildingBlocks.EventBus.Abstractions; |  | ||||||
|     using Microsoft.eShopOnContainers.BuildingBlocks.EventBus.Extensions; |  | ||||||
|     using Microsoft.Extensions.Logging; |  | ||||||
|     using Ordering.API.Application.Commands; |  | ||||||
|     using Ordering.API.Application.IntegrationEvents.Events; |  | ||||||
|     using Serilog.Context; |  | ||||||
|     using System; |  | ||||||
|     using System.Threading.Tasks; |  | ||||||
|     |     | ||||||
|     public class OrderPaymentSucceededIntegrationEventHandler : | public class OrderPaymentSucceededIntegrationEventHandler : | ||||||
|     IIntegrationEventHandler<OrderPaymentSucceededIntegrationEvent> |     IIntegrationEventHandler<OrderPaymentSucceededIntegrationEvent> | ||||||
|     { | { | ||||||
|     private readonly IMediator _mediator; |     private readonly IMediator _mediator; | ||||||
|     private readonly ILogger<OrderPaymentSucceededIntegrationEventHandler> _logger; |     private readonly ILogger<OrderPaymentSucceededIntegrationEventHandler> _logger; | ||||||
| 
 | 
 | ||||||
| @ -42,5 +32,4 @@ | |||||||
|             await _mediator.Send(command); |             await _mediator.Send(command); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|     } |  | ||||||
| } | } | ||||||
| @ -1,18 +1,8 @@ | |||||||
| namespace Ordering.API.Application.IntegrationEvents.EventHandling | namespace Ordering.API.Application.IntegrationEvents.EventHandling; | ||||||
| { |  | ||||||
|     using Events; |  | ||||||
|     using MediatR; |  | ||||||
|     using Microsoft.eShopOnContainers.BuildingBlocks.EventBus.Abstractions; |  | ||||||
|     using Microsoft.eShopOnContainers.BuildingBlocks.EventBus.Extensions; |  | ||||||
|     using Microsoft.Extensions.Logging; |  | ||||||
|     using Ordering.API.Application.Commands; |  | ||||||
|     using Serilog.Context; |  | ||||||
|     using System; |  | ||||||
|     using System.Threading.Tasks; |  | ||||||
| 
 | 
 | ||||||
|     public class OrderStockConfirmedIntegrationEventHandler : | public class OrderStockConfirmedIntegrationEventHandler : | ||||||
|     IIntegrationEventHandler<OrderStockConfirmedIntegrationEvent> |     IIntegrationEventHandler<OrderStockConfirmedIntegrationEvent> | ||||||
|     { | { | ||||||
|     private readonly IMediator _mediator; |     private readonly IMediator _mediator; | ||||||
|     private readonly ILogger<OrderStockConfirmedIntegrationEventHandler> _logger; |     private readonly ILogger<OrderStockConfirmedIntegrationEventHandler> _logger; | ||||||
| 
 | 
 | ||||||
| @ -42,5 +32,4 @@ | |||||||
|             await _mediator.Send(command); |             await _mediator.Send(command); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|     } |  | ||||||
| } | } | ||||||
| @ -1,17 +1,6 @@ | |||||||
| namespace Ordering.API.Application.IntegrationEvents.EventHandling | namespace Microsoft.eShopOnContainers.Services.Ordering.API.Application.IntegrationEvents.EventHandling; | ||||||
|  | public class OrderStockRejectedIntegrationEventHandler : IIntegrationEventHandler<OrderStockRejectedIntegrationEvent> | ||||||
| { | { | ||||||
|     using Events; |  | ||||||
|     using MediatR; |  | ||||||
|     using Microsoft.eShopOnContainers.BuildingBlocks.EventBus.Abstractions; |  | ||||||
|     using Microsoft.eShopOnContainers.BuildingBlocks.EventBus.Extensions; |  | ||||||
|     using Microsoft.Extensions.Logging; |  | ||||||
|     using Ordering.API.Application.Commands; |  | ||||||
|     using Serilog.Context; |  | ||||||
|     using System.Linq; |  | ||||||
|     using System.Threading.Tasks; |  | ||||||
| 
 |  | ||||||
|     public class OrderStockRejectedIntegrationEventHandler : IIntegrationEventHandler<OrderStockRejectedIntegrationEvent> |  | ||||||
|     { |  | ||||||
|     private readonly IMediator _mediator; |     private readonly IMediator _mediator; | ||||||
|     private readonly ILogger<OrderStockRejectedIntegrationEventHandler> _logger; |     private readonly ILogger<OrderStockRejectedIntegrationEventHandler> _logger; | ||||||
| 
 | 
 | ||||||
| @ -46,5 +35,4 @@ | |||||||
|             await _mediator.Send(command); |             await _mediator.Send(command); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|     } |  | ||||||
| } | } | ||||||
| @ -1,17 +1,7 @@ | |||||||
| using MediatR; | namespace Microsoft.eShopOnContainers.Services.Ordering.API.Application.IntegrationEvents.EventHandling; | ||||||
| using Microsoft.eShopOnContainers.BuildingBlocks.EventBus.Abstractions; |  | ||||||
| using Microsoft.eShopOnContainers.BuildingBlocks.EventBus.Extensions; |  | ||||||
| using Microsoft.eShopOnContainers.Services.Ordering.API.Application.Commands; |  | ||||||
| using Microsoft.Extensions.Logging; |  | ||||||
| using Ordering.API.Application.IntegrationEvents.Events; |  | ||||||
| using Serilog.Context; |  | ||||||
| using System; |  | ||||||
| using System.Threading.Tasks; |  | ||||||
| 
 | 
 | ||||||
| namespace Ordering.API.Application.IntegrationEvents.EventHandling | public class UserCheckoutAcceptedIntegrationEventHandler : IIntegrationEventHandler<UserCheckoutAcceptedIntegrationEvent> | ||||||
| { | { | ||||||
|     public class UserCheckoutAcceptedIntegrationEventHandler : IIntegrationEventHandler<UserCheckoutAcceptedIntegrationEvent> |  | ||||||
|     { |  | ||||||
|     private readonly IMediator _mediator; |     private readonly IMediator _mediator; | ||||||
|     private readonly ILogger<UserCheckoutAcceptedIntegrationEventHandler> _logger; |     private readonly ILogger<UserCheckoutAcceptedIntegrationEventHandler> _logger; | ||||||
| 
 | 
 | ||||||
| @ -76,5 +66,4 @@ namespace Ordering.API.Application.IntegrationEvents.EventHandling | |||||||
|             } |             } | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|     } |  | ||||||
| } | } | ||||||
| @ -1,12 +1,10 @@ | |||||||
| namespace Ordering.API.Application.IntegrationEvents.Events | namespace Microsoft.eShopOnContainers.Services.Ordering.API.Application.IntegrationEvents.Events;     | ||||||
| { |  | ||||||
|     using Microsoft.eShopOnContainers.BuildingBlocks.EventBus.Events; |  | ||||||
| 
 | 
 | ||||||
|     public record GracePeriodConfirmedIntegrationEvent : IntegrationEvent | public record GracePeriodConfirmedIntegrationEvent : IntegrationEvent | ||||||
|     { | { | ||||||
|     public int OrderId { get; } |     public int OrderId { get; } | ||||||
| 
 | 
 | ||||||
|     public GracePeriodConfirmedIntegrationEvent(int orderId) => |     public GracePeriodConfirmedIntegrationEvent(int orderId) => | ||||||
|         OrderId = orderId; |         OrderId = orderId; | ||||||
|     } |  | ||||||
| } | } | ||||||
|  | 
 | ||||||
|  | |||||||
| @ -1,11 +1,8 @@ | |||||||
| namespace Ordering.API.Application.IntegrationEvents.Events | namespace Microsoft.eShopOnContainers.Services.Ordering.API.Application.IntegrationEvents.Events; | ||||||
| { |  | ||||||
|     using Microsoft.eShopOnContainers.BuildingBlocks.EventBus.Events; |  | ||||||
| 
 | 
 | ||||||
|     public record OrderPaymentFailedIntegrationEvent : IntegrationEvent | public record OrderPaymentFailedIntegrationEvent : IntegrationEvent | ||||||
|     { | { | ||||||
|     public int OrderId { get; } |     public int OrderId { get; } | ||||||
| 
 | 
 | ||||||
|     public OrderPaymentFailedIntegrationEvent(int orderId) => OrderId = orderId; |     public OrderPaymentFailedIntegrationEvent(int orderId) => OrderId = orderId; | ||||||
|     } |  | ||||||
| } | } | ||||||
| @ -1,11 +1,8 @@ | |||||||
| namespace Ordering.API.Application.IntegrationEvents.Events | namespace Microsoft.eShopOnContainers.Services.Ordering.API.Application.IntegrationEvents.Events; | ||||||
| { |  | ||||||
|     using Microsoft.eShopOnContainers.BuildingBlocks.EventBus.Events; |  | ||||||
| 
 | 
 | ||||||
|     public record OrderPaymentSucceededIntegrationEvent : IntegrationEvent | public record OrderPaymentSucceededIntegrationEvent : IntegrationEvent | ||||||
|     { | { | ||||||
|     public int OrderId { get; } |     public int OrderId { get; } | ||||||
| 
 | 
 | ||||||
|     public OrderPaymentSucceededIntegrationEvent(int orderId) => OrderId = orderId; |     public OrderPaymentSucceededIntegrationEvent(int orderId) => OrderId = orderId; | ||||||
|     } |  | ||||||
| } | } | ||||||
| @ -1,15 +1,12 @@ | |||||||
| using Microsoft.eShopOnContainers.BuildingBlocks.EventBus.Events; | namespace Microsoft.eShopOnContainers.Services.Ordering.API.Application.IntegrationEvents.Events; | ||||||
| 
 | 
 | ||||||
| namespace Ordering.API.Application.IntegrationEvents.Events | // Integration Events notes:  | ||||||
|  | // An Event is “something that has happened in the past”, therefore its name has to be    | ||||||
|  | // An Integration Event is an event that can cause side effects to other microsrvices, Bounded-Contexts or external systems. | ||||||
|  | public record OrderStartedIntegrationEvent : IntegrationEvent | ||||||
| { | { | ||||||
|     // Integration Events notes:  |  | ||||||
|     // An Event is “something that has happened in the past”, therefore its name has to be    |  | ||||||
|     // An Integration Event is an event that can cause side effects to other microsrvices, Bounded-Contexts or external systems. |  | ||||||
|     public record OrderStartedIntegrationEvent : IntegrationEvent |  | ||||||
|     { |  | ||||||
|     public string UserId { get; init; } |     public string UserId { get; init; } | ||||||
| 
 | 
 | ||||||
|     public OrderStartedIntegrationEvent(string userId) |     public OrderStartedIntegrationEvent(string userId) | ||||||
|         => UserId = userId; |         => UserId = userId; | ||||||
|     } |  | ||||||
| } | } | ||||||
| @ -1,10 +1,7 @@ | |||||||
| namespace Ordering.API.Application.IntegrationEvents.Events | namespace Microsoft.eShopOnContainers.Services.Ordering.API.Application.IntegrationEvents.Events; | ||||||
| { |  | ||||||
|     using Microsoft.eShopOnContainers.BuildingBlocks.EventBus.Events; |  | ||||||
|     using System.Collections.Generic; |  | ||||||
|    |    | ||||||
|     public record OrderStatusChangedToAwaitingValidationIntegrationEvent : IntegrationEvent | public record OrderStatusChangedToAwaitingValidationIntegrationEvent : IntegrationEvent | ||||||
|     { | { | ||||||
|     public int OrderId { get; } |     public int OrderId { get; } | ||||||
|     public string OrderStatus { get; } |     public string OrderStatus { get; } | ||||||
|     public string BuyerName { get; } |     public string BuyerName { get; } | ||||||
| @ -18,10 +15,10 @@ | |||||||
|         OrderStatus = orderStatus; |         OrderStatus = orderStatus; | ||||||
|         BuyerName = buyerName; |         BuyerName = buyerName; | ||||||
|     } |     } | ||||||
|     } | } | ||||||
| 
 | 
 | ||||||
|     public record OrderStockItem | public record OrderStockItem | ||||||
|     { | { | ||||||
|     public int ProductId { get; } |     public int ProductId { get; } | ||||||
|     public int Units { get; } |     public int Units { get; } | ||||||
| 
 | 
 | ||||||
| @ -30,5 +27,4 @@ | |||||||
|         ProductId = productId; |         ProductId = productId; | ||||||
|         Units = units; |         Units = units; | ||||||
|     } |     } | ||||||
|     } |  | ||||||
| } | } | ||||||
| @ -1,9 +1,7 @@ | |||||||
| using Microsoft.eShopOnContainers.BuildingBlocks.EventBus.Events; | namespace Microsoft.eShopOnContainers.Services.Ordering.API.Application.IntegrationEvents.Events; | ||||||
| 
 | 
 | ||||||
| namespace Ordering.API.Application.IntegrationEvents.Events | public record OrderStatusChangedToCancelledIntegrationEvent : IntegrationEvent | ||||||
| { | { | ||||||
|     public record OrderStatusChangedToCancelledIntegrationEvent : IntegrationEvent |  | ||||||
|     { |  | ||||||
|     public int OrderId { get; } |     public int OrderId { get; } | ||||||
|     public string OrderStatus { get; } |     public string OrderStatus { get; } | ||||||
|     public string BuyerName { get; } |     public string BuyerName { get; } | ||||||
| @ -14,5 +12,4 @@ namespace Ordering.API.Application.IntegrationEvents.Events | |||||||
|         OrderStatus = orderStatus; |         OrderStatus = orderStatus; | ||||||
|         BuyerName = buyerName; |         BuyerName = buyerName; | ||||||
|     } |     } | ||||||
|     } |  | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,10 +1,7 @@ | |||||||
| namespace Ordering.API.Application.IntegrationEvents.Events | namespace Microsoft.eShopOnContainers.Services.Ordering.API.Application.IntegrationEvents.Events; | ||||||
| { |  | ||||||
|     using Microsoft.eShopOnContainers.BuildingBlocks.EventBus.Events; |  | ||||||
|     using System.Collections.Generic; |  | ||||||
| 
 | 
 | ||||||
|     public record OrderStatusChangedToPaidIntegrationEvent : IntegrationEvent | public record OrderStatusChangedToPaidIntegrationEvent : IntegrationEvent | ||||||
|     { | { | ||||||
|     public int OrderId { get; } |     public int OrderId { get; } | ||||||
|     public string OrderStatus { get; } |     public string OrderStatus { get; } | ||||||
|     public string BuyerName { get; } |     public string BuyerName { get; } | ||||||
| @ -20,5 +17,5 @@ | |||||||
|         OrderStatus = orderStatus; |         OrderStatus = orderStatus; | ||||||
|         BuyerName = buyerName; |         BuyerName = buyerName; | ||||||
|     } |     } | ||||||
|     } |  | ||||||
| } | } | ||||||
|  | 
 | ||||||
|  | |||||||
| @ -1,9 +1,7 @@ | |||||||
| using Microsoft.eShopOnContainers.BuildingBlocks.EventBus.Events; | namespace Microsoft.eShopOnContainers.Services.Ordering.API.Application.IntegrationEvents.Events; | ||||||
| 
 | 
 | ||||||
| namespace Ordering.API.Application.IntegrationEvents.Events | public record OrderStatusChangedToShippedIntegrationEvent : IntegrationEvent | ||||||
| { | { | ||||||
|     public record OrderStatusChangedToShippedIntegrationEvent : IntegrationEvent |  | ||||||
|     { |  | ||||||
|     public int OrderId { get; } |     public int OrderId { get; } | ||||||
|     public string OrderStatus { get; } |     public string OrderStatus { get; } | ||||||
|     public string BuyerName { get; } |     public string BuyerName { get; } | ||||||
| @ -14,5 +12,4 @@ namespace Ordering.API.Application.IntegrationEvents.Events | |||||||
|         OrderStatus = orderStatus; |         OrderStatus = orderStatus; | ||||||
|         BuyerName = buyerName; |         BuyerName = buyerName; | ||||||
|     } |     } | ||||||
|     } |  | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,9 +1,7 @@ | |||||||
| namespace Ordering.API.Application.IntegrationEvents.Events | namespace Microsoft.eShopOnContainers.Services.Ordering.API.Application.IntegrationEvents.Events; | ||||||
| { |  | ||||||
|     using Microsoft.eShopOnContainers.BuildingBlocks.EventBus.Events; |  | ||||||
| 
 | 
 | ||||||
|     public record OrderStatusChangedToStockConfirmedIntegrationEvent : IntegrationEvent | public record OrderStatusChangedToStockConfirmedIntegrationEvent : IntegrationEvent | ||||||
|     { | { | ||||||
|     public int OrderId { get; } |     public int OrderId { get; } | ||||||
|     public string OrderStatus { get; } |     public string OrderStatus { get; } | ||||||
|     public string BuyerName { get; } |     public string BuyerName { get; } | ||||||
| @ -14,5 +12,4 @@ | |||||||
|         OrderStatus = orderStatus; |         OrderStatus = orderStatus; | ||||||
|         BuyerName = buyerName; |         BuyerName = buyerName; | ||||||
|     } |     } | ||||||
|     } |  | ||||||
| } | } | ||||||
| @ -1,9 +1,7 @@ | |||||||
| using Microsoft.eShopOnContainers.BuildingBlocks.EventBus.Events; | namespace Microsoft.eShopOnContainers.Services.Ordering.API.Application.IntegrationEvents.Events; | ||||||
| 
 | 
 | ||||||
| namespace Ordering.API.Application.IntegrationEvents.Events | public record OrderStatusChangedToSubmittedIntegrationEvent : IntegrationEvent | ||||||
| { | { | ||||||
|     public record OrderStatusChangedToSubmittedIntegrationEvent : IntegrationEvent |  | ||||||
|     { |  | ||||||
|     public int OrderId { get; } |     public int OrderId { get; } | ||||||
|     public string OrderStatus { get; } |     public string OrderStatus { get; } | ||||||
|     public string BuyerName { get; } |     public string BuyerName { get; } | ||||||
| @ -14,5 +12,4 @@ namespace Ordering.API.Application.IntegrationEvents.Events | |||||||
|         OrderStatus = orderStatus; |         OrderStatus = orderStatus; | ||||||
|         BuyerName = buyerName; |         BuyerName = buyerName; | ||||||
|     } |     } | ||||||
|     } |  | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,11 +1,8 @@ | |||||||
| namespace Ordering.API.Application.IntegrationEvents.Events | namespace Microsoft.eShopOnContainers.Services.Ordering.API.Application.IntegrationEvents.Events; | ||||||
| { |  | ||||||
|     using Microsoft.eShopOnContainers.BuildingBlocks.EventBus.Events; |  | ||||||
| 
 | 
 | ||||||
|     public record OrderStockConfirmedIntegrationEvent : IntegrationEvent | public record OrderStockConfirmedIntegrationEvent : IntegrationEvent | ||||||
|     { | { | ||||||
|     public int OrderId { get; } |     public int OrderId { get; } | ||||||
| 
 | 
 | ||||||
|     public OrderStockConfirmedIntegrationEvent(int orderId) => OrderId = orderId; |     public OrderStockConfirmedIntegrationEvent(int orderId) => OrderId = orderId; | ||||||
|     } |  | ||||||
| } | } | ||||||
| @ -1,10 +1,7 @@ | |||||||
| namespace Ordering.API.Application.IntegrationEvents.Events | namespace Microsoft.eShopOnContainers.Services.Ordering.API.Application.IntegrationEvents.Events;     | ||||||
| { |  | ||||||
|     using Microsoft.eShopOnContainers.BuildingBlocks.EventBus.Events; |  | ||||||
|     using System.Collections.Generic; |  | ||||||
| 
 | 
 | ||||||
|     public record OrderStockRejectedIntegrationEvent : IntegrationEvent | public record OrderStockRejectedIntegrationEvent : IntegrationEvent | ||||||
|     { | { | ||||||
|     public int OrderId { get; } |     public int OrderId { get; } | ||||||
| 
 | 
 | ||||||
|     public List<ConfirmedOrderStockItem> OrderStockItems { get; } |     public List<ConfirmedOrderStockItem> OrderStockItems { get; } | ||||||
| @ -15,10 +12,10 @@ | |||||||
|         OrderId = orderId; |         OrderId = orderId; | ||||||
|         OrderStockItems = orderStockItems; |         OrderStockItems = orderStockItems; | ||||||
|     } |     } | ||||||
|     } | } | ||||||
| 
 | 
 | ||||||
|     public record ConfirmedOrderStockItem | public record ConfirmedOrderStockItem | ||||||
|     { | { | ||||||
|     public int ProductId { get; } |     public int ProductId { get; } | ||||||
|     public bool HasStock { get; } |     public bool HasStock { get; } | ||||||
| 
 | 
 | ||||||
| @ -27,5 +24,4 @@ | |||||||
|         ProductId = productId; |         ProductId = productId; | ||||||
|         HasStock = hasStock; |         HasStock = hasStock; | ||||||
|     } |     } | ||||||
|     } |  | ||||||
| } | } | ||||||
| @ -1,11 +1,7 @@ | |||||||
| using Microsoft.eShopOnContainers.BuildingBlocks.EventBus.Events; | namespace Microsoft.eShopOnContainers.Services.Ordering.API.Application.IntegrationEvents.Events; | ||||||
| using Ordering.API.Application.Models; |  | ||||||
| using System; |  | ||||||
| 
 | 
 | ||||||
| namespace Ordering.API.Application.IntegrationEvents.Events | public record UserCheckoutAcceptedIntegrationEvent : IntegrationEvent | ||||||
| {         | {         | ||||||
|     public record UserCheckoutAcceptedIntegrationEvent : IntegrationEvent |  | ||||||
|     {         |  | ||||||
|     public string UserId { get; } |     public string UserId { get; } | ||||||
|          |          | ||||||
|     public string UserName { get; } |     public string UserName { get; } | ||||||
| @ -58,5 +54,4 @@ namespace Ordering.API.Application.IntegrationEvents.Events | |||||||
|         UserName = userName; |         UserName = userName; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     } |  | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,12 +1,7 @@ | |||||||
| using Microsoft.eShopOnContainers.BuildingBlocks.EventBus.Events; | namespace Microsoft.eShopOnContainers.Services.Ordering.API.Application.IntegrationEvents; | ||||||
| using System; |  | ||||||
| using System.Threading.Tasks; |  | ||||||
| 
 | 
 | ||||||
| namespace Ordering.API.Application.IntegrationEvents | public interface IOrderingIntegrationEventService | ||||||
| { | { | ||||||
|     public interface IOrderingIntegrationEventService |  | ||||||
|     { |  | ||||||
|     Task PublishEventsThroughEventBusAsync(Guid transactionId); |     Task PublishEventsThroughEventBusAsync(Guid transactionId); | ||||||
|     Task AddAndSaveEventAsync(IntegrationEvent evt); |     Task AddAndSaveEventAsync(IntegrationEvent evt); | ||||||
|     } |  | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,18 +1,7 @@ | |||||||
| using Microsoft.EntityFrameworkCore; | namespace Microsoft.eShopOnContainers.Services.Ordering.API.Application.IntegrationEvents; | ||||||
| using Microsoft.eShopOnContainers.BuildingBlocks.EventBus.Abstractions; |  | ||||||
| using Microsoft.eShopOnContainers.BuildingBlocks.EventBus.Events; |  | ||||||
| using Microsoft.eShopOnContainers.BuildingBlocks.IntegrationEventLogEF; |  | ||||||
| using Microsoft.eShopOnContainers.BuildingBlocks.IntegrationEventLogEF.Services; |  | ||||||
| using Microsoft.eShopOnContainers.Services.Ordering.Infrastructure; |  | ||||||
| using Microsoft.Extensions.Logging; |  | ||||||
| using System; |  | ||||||
| using System.Data.Common; |  | ||||||
| using System.Threading.Tasks; |  | ||||||
| 
 | 
 | ||||||
| namespace Ordering.API.Application.IntegrationEvents | public class OrderingIntegrationEventService : IOrderingIntegrationEventService | ||||||
| { | { | ||||||
|     public class OrderingIntegrationEventService : IOrderingIntegrationEventService |  | ||||||
|     { |  | ||||||
|     private readonly Func<DbConnection, IIntegrationEventLogService> _integrationEventLogServiceFactory; |     private readonly Func<DbConnection, IIntegrationEventLogService> _integrationEventLogServiceFactory; | ||||||
|     private readonly IEventBus _eventBus; |     private readonly IEventBus _eventBus; | ||||||
|     private readonly OrderingContext _orderingContext; |     private readonly OrderingContext _orderingContext; | ||||||
| @ -61,5 +50,4 @@ namespace Ordering.API.Application.IntegrationEvents | |||||||
| 
 | 
 | ||||||
|         await _eventLogService.SaveEventAsync(evt, _orderingContext.GetCurrentTransaction()); |         await _eventLogService.SaveEventAsync(evt, _orderingContext.GetCurrentTransaction()); | ||||||
|     } |     } | ||||||
|     } |  | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,7 +1,7 @@ | |||||||
| namespace Ordering.API.Application.Models | namespace Microsoft.eShopOnContainers.Services.Ordering.API.Application.Models; | ||||||
|  | 
 | ||||||
|  | public class BasketItem | ||||||
| { | { | ||||||
|     public class BasketItem |  | ||||||
|     { |  | ||||||
|     public string Id { get; init; } |     public string Id { get; init; } | ||||||
|     public int ProductId { get; init; } |     public int ProductId { get; init; } | ||||||
|     public string ProductName { get; init; } |     public string ProductName { get; init; } | ||||||
| @ -9,5 +9,5 @@ | |||||||
|     public decimal OldUnitPrice { get; init; } |     public decimal OldUnitPrice { get; init; } | ||||||
|     public int Quantity { get; init; } |     public int Quantity { get; init; } | ||||||
|     public string PictureUrl { get; init; } |     public string PictureUrl { get; init; } | ||||||
|     } |  | ||||||
| } | } | ||||||
|  | 
 | ||||||
|  | |||||||
| @ -1,9 +1,7 @@ | |||||||
| using System.Collections.Generic; | namespace Microsoft.eShopOnContainers.Services.Ordering.API.Application.Models; | ||||||
| 
 | 
 | ||||||
| namespace Ordering.API.Application.Models | public class CustomerBasket | ||||||
| { | { | ||||||
|     public class CustomerBasket |  | ||||||
|     { |  | ||||||
|     public string BuyerId { get; set; } |     public string BuyerId { get; set; } | ||||||
|     public List<BasketItem> Items { get; set; } |     public List<BasketItem> Items { get; set; } | ||||||
| 
 | 
 | ||||||
| @ -12,5 +10,4 @@ namespace Ordering.API.Application.Models | |||||||
|         BuyerId = buyerId; |         BuyerId = buyerId; | ||||||
|         Items = items; |         Items = items; | ||||||
|     } |     } | ||||||
|     } |  | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,15 +1,10 @@ | |||||||
| namespace Microsoft.eShopOnContainers.Services.Ordering.API.Application.Queries | namespace Microsoft.eShopOnContainers.Services.Ordering.API.Application.Queries; | ||||||
| { |  | ||||||
|     using System; |  | ||||||
|     using System.Collections.Generic; |  | ||||||
|     using System.Threading.Tasks; |  | ||||||
| 
 | 
 | ||||||
|     public interface IOrderQueries | public interface IOrderQueries | ||||||
|     { | { | ||||||
|     Task<Order> GetOrderAsync(int id); |     Task<Order> GetOrderAsync(int id); | ||||||
| 
 | 
 | ||||||
|     Task<IEnumerable<OrderSummary>> GetOrdersFromUserAsync(Guid userId); |     Task<IEnumerable<OrderSummary>> GetOrdersFromUserAsync(Guid userId); | ||||||
| 
 | 
 | ||||||
|     Task<IEnumerable<CardType>> GetCardTypesAsync(); |     Task<IEnumerable<CardType>> GetCardTypesAsync(); | ||||||
|     } |  | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,14 +1,8 @@ | |||||||
| namespace Microsoft.eShopOnContainers.Services.Ordering.API.Application.Queries | namespace Microsoft.eShopOnContainers.Services.Ordering.API.Application.Queries; | ||||||
| { |  | ||||||
|     using Dapper; |  | ||||||
|     using System; |  | ||||||
|     using System.Collections.Generic; |  | ||||||
|     using System.Data.SqlClient; |  | ||||||
|     using System.Threading.Tasks; |  | ||||||
|      |      | ||||||
|     public class OrderQueries | public class OrderQueries | ||||||
|     : IOrderQueries |     : IOrderQueries | ||||||
|     { | { | ||||||
|     private string _connectionString = string.Empty; |     private string _connectionString = string.Empty; | ||||||
| 
 | 
 | ||||||
|     public OrderQueries(string constr) |     public OrderQueries(string constr) | ||||||
| @ -101,5 +95,4 @@ | |||||||
| 
 | 
 | ||||||
|         return order; |         return order; | ||||||
|     } |     } | ||||||
|     } |  | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,18 +1,15 @@ | |||||||
| using System; | namespace Microsoft.eShopOnContainers.Services.Ordering.API.Application.Queries; | ||||||
| using System.Collections.Generic; |  | ||||||
| 
 | 
 | ||||||
| namespace Microsoft.eShopOnContainers.Services.Ordering.API.Application.Queries | public record Orderitem | ||||||
| { | { | ||||||
|     public record Orderitem |  | ||||||
|     { |  | ||||||
|     public string productname { get; init; } |     public string productname { get; init; } | ||||||
|     public int units { get; init; } |     public int units { get; init; } | ||||||
|     public double unitprice { get; init; } |     public double unitprice { get; init; } | ||||||
|     public string pictureurl { get; init; } |     public string pictureurl { get; init; } | ||||||
|     } | } | ||||||
| 
 | 
 | ||||||
|     public record Order | public record Order | ||||||
|     { | { | ||||||
|     public int ordernumber { get; init; } |     public int ordernumber { get; init; } | ||||||
|     public DateTime date { get; init; } |     public DateTime date { get; init; } | ||||||
|     public string status { get; init; } |     public string status { get; init; } | ||||||
| @ -23,19 +20,18 @@ namespace Microsoft.eShopOnContainers.Services.Ordering.API.Application.Queries | |||||||
|     public string country { get; init; } |     public string country { get; init; } | ||||||
|     public List<Orderitem> orderitems { get; set; } |     public List<Orderitem> orderitems { get; set; } | ||||||
|     public decimal total { get; set; } |     public decimal total { get; set; } | ||||||
|     } | } | ||||||
| 
 | 
 | ||||||
|     public record OrderSummary | public record OrderSummary | ||||||
|     { | { | ||||||
|     public int ordernumber { get; init; } |     public int ordernumber { get; init; } | ||||||
|     public DateTime date { get; init; } |     public DateTime date { get; init; } | ||||||
|     public string status { get; init; } |     public string status { get; init; } | ||||||
|     public double total { get; init; } |     public double total { get; init; } | ||||||
|     } | } | ||||||
| 
 | 
 | ||||||
|     public record CardType | public record CardType | ||||||
|     { | { | ||||||
|     public int Id { get; init; } |     public int Id { get; init; } | ||||||
|     public string Name { get; init; } |     public string Name { get; init; } | ||||||
|     } |  | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,16 +1,11 @@ | |||||||
| using FluentValidation; | namespace Microsoft.eShopOnContainers.Services.Ordering.API.Application.Validations; | ||||||
| using Microsoft.Extensions.Logging; |  | ||||||
| using Ordering.API.Application.Commands; |  | ||||||
| 
 | 
 | ||||||
| namespace Ordering.API.Application.Validations | public class CancelOrderCommandValidator : AbstractValidator<CancelOrderCommand> | ||||||
| { | { | ||||||
|     public class CancelOrderCommandValidator : AbstractValidator<CancelOrderCommand> |  | ||||||
|     { |  | ||||||
|     public CancelOrderCommandValidator(ILogger<CancelOrderCommandValidator> logger) |     public CancelOrderCommandValidator(ILogger<CancelOrderCommandValidator> logger) | ||||||
|     { |     { | ||||||
|         RuleFor(order => order.OrderNumber).NotEmpty().WithMessage("No orderId found"); |         RuleFor(order => order.OrderNumber).NotEmpty().WithMessage("No orderId found"); | ||||||
| 
 | 
 | ||||||
|         logger.LogTrace("----- INSTANCE CREATED - {ClassName}", GetType().Name); |         logger.LogTrace("----- INSTANCE CREATED - {ClassName}", GetType().Name); | ||||||
|     } |     } | ||||||
|     } |  | ||||||
| } | } | ||||||
| @ -1,15 +1,9 @@ | |||||||
| using FluentValidation; | namespace Microsoft.eShopOnContainers.Services.Ordering.API.Application.Validations; | ||||||
| using Microsoft.eShopOnContainers.Services.Ordering.API.Application.Commands; | 
 | ||||||
| using Microsoft.Extensions.Logging; |  | ||||||
| using System; |  | ||||||
| using System.Collections.Generic; |  | ||||||
| using System.Linq; |  | ||||||
| using static Microsoft.eShopOnContainers.Services.Ordering.API.Application.Commands.CreateOrderCommand; | using static Microsoft.eShopOnContainers.Services.Ordering.API.Application.Commands.CreateOrderCommand; | ||||||
| 
 | 
 | ||||||
| namespace Ordering.API.Application.Validations | public class CreateOrderCommandValidator : AbstractValidator<CreateOrderCommand> | ||||||
| { | { | ||||||
|     public class CreateOrderCommandValidator : AbstractValidator<CreateOrderCommand> |  | ||||||
|     { |  | ||||||
|     public CreateOrderCommandValidator(ILogger<CreateOrderCommandValidator> logger) |     public CreateOrderCommandValidator(ILogger<CreateOrderCommandValidator> logger) | ||||||
|     { |     { | ||||||
|         RuleFor(command => command.City).NotEmpty(); |         RuleFor(command => command.City).NotEmpty(); | ||||||
| @ -36,5 +30,4 @@ namespace Ordering.API.Application.Validations | |||||||
|     { |     { | ||||||
|         return orderItems.Any(); |         return orderItems.Any(); | ||||||
|     } |     } | ||||||
|     } |  | ||||||
| } | } | ||||||
| @ -1,16 +1,11 @@ | |||||||
| using FluentValidation; | namespace Microsoft.eShopOnContainers.Services.Ordering.API.Application.Validations; | ||||||
| using Microsoft.eShopOnContainers.Services.Ordering.API.Application.Commands; |  | ||||||
| using Microsoft.Extensions.Logging; |  | ||||||
| 
 | 
 | ||||||
| namespace Ordering.API.Application.Validations | public class IdentifiedCommandValidator : AbstractValidator<IdentifiedCommand<CreateOrderCommand, bool>> | ||||||
| { | { | ||||||
|     public class IdentifiedCommandValidator : AbstractValidator<IdentifiedCommand<CreateOrderCommand, bool>> |  | ||||||
|     { |  | ||||||
|     public IdentifiedCommandValidator(ILogger<IdentifiedCommandValidator> logger) |     public IdentifiedCommandValidator(ILogger<IdentifiedCommandValidator> logger) | ||||||
|     { |     { | ||||||
|         RuleFor(command => command.Id).NotEmpty(); |         RuleFor(command => command.Id).NotEmpty(); | ||||||
| 
 | 
 | ||||||
|         logger.LogTrace("----- INSTANCE CREATED - {ClassName}", GetType().Name); |         logger.LogTrace("----- INSTANCE CREATED - {ClassName}", GetType().Name); | ||||||
|     } |     } | ||||||
|     } |  | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,16 +1,11 @@ | |||||||
| using FluentValidation; | namespace Microsoft.eShopOnContainers.Services.Ordering.API.Application.Validations; | ||||||
| using Microsoft.Extensions.Logging; |  | ||||||
| using Ordering.API.Application.Commands; |  | ||||||
| 
 | 
 | ||||||
| namespace Ordering.API.Application.Validations | public class ShipOrderCommandValidator : AbstractValidator<ShipOrderCommand> | ||||||
| { | { | ||||||
|     public class ShipOrderCommandValidator : AbstractValidator<ShipOrderCommand> |  | ||||||
|     { |  | ||||||
|     public ShipOrderCommandValidator(ILogger<ShipOrderCommandValidator> logger) |     public ShipOrderCommandValidator(ILogger<ShipOrderCommandValidator> logger) | ||||||
|     { |     { | ||||||
|         RuleFor(order => order.OrderNumber).NotEmpty().WithMessage("No orderId found"); |         RuleFor(order => order.OrderNumber).NotEmpty().WithMessage("No orderId found"); | ||||||
| 
 | 
 | ||||||
|         logger.LogTrace("----- INSTANCE CREATED - {ClassName}", GetType().Name); |         logger.LogTrace("----- INSTANCE CREATED - {ClassName}", GetType().Name); | ||||||
|     } |     } | ||||||
|     } |  | ||||||
| } | } | ||||||
| @ -1,13 +1,10 @@ | |||||||
| using Microsoft.AspNetCore.Mvc; | namespace Microsoft.eShopOnContainers.Services.Ordering.API.Controllers; | ||||||
| 
 | 
 | ||||||
| namespace Microsoft.eShopOnContainers.Services.Ordering.API.Controllers | public class HomeController : Controller | ||||||
| { | { | ||||||
|     public class HomeController : Controller |  | ||||||
|     { |  | ||||||
|     // GET: /<controller>/ |     // GET: /<controller>/ | ||||||
|     public IActionResult Index() |     public IActionResult Index() | ||||||
|     { |     { | ||||||
|         return new RedirectResult("~/swagger"); |         return new RedirectResult("~/swagger"); | ||||||
|     } |     } | ||||||
|     } |  | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,24 +1,15 @@ | |||||||
| using MediatR; | namespace Microsoft.eShopOnContainers.Services.Ordering.API.Controllers; | ||||||
| using Microsoft.AspNetCore.Authorization; | 
 | ||||||
| using Microsoft.AspNetCore.Mvc; |  | ||||||
| using Microsoft.eShopOnContainers.BuildingBlocks.EventBus.Extensions; | using Microsoft.eShopOnContainers.BuildingBlocks.EventBus.Extensions; | ||||||
| using Microsoft.eShopOnContainers.Services.Ordering.API.Application.Commands; | using Microsoft.eShopOnContainers.Services.Ordering.API.Application.Commands; | ||||||
| using Microsoft.eShopOnContainers.Services.Ordering.API.Application.Queries; | using Microsoft.eShopOnContainers.Services.Ordering.API.Application.Queries; | ||||||
| using Microsoft.eShopOnContainers.Services.Ordering.API.Infrastructure.Services; | using Microsoft.eShopOnContainers.Services.Ordering.API.Infrastructure.Services; | ||||||
| using Microsoft.Extensions.Logging; |  | ||||||
| using Ordering.API.Application.Commands; |  | ||||||
| using System; |  | ||||||
| using System.Collections.Generic; |  | ||||||
| using System.Net; |  | ||||||
| using System.Threading.Tasks; |  | ||||||
| 
 | 
 | ||||||
| namespace Microsoft.eShopOnContainers.Services.Ordering.API.Controllers | [Route("api/v1/[controller]")]
 | ||||||
|  | [Authorize] | ||||||
|  | [ApiController] | ||||||
|  | public class OrdersController : ControllerBase | ||||||
| { | { | ||||||
|     [Route("api/v1/[controller]")]
 |  | ||||||
|     [Authorize] |  | ||||||
|     [ApiController] |  | ||||||
|     public class OrdersController : ControllerBase |  | ||||||
|     { |  | ||||||
|     private readonly IMediator _mediator; |     private readonly IMediator _mediator; | ||||||
|     private readonly IOrderQueries _orderQueries; |     private readonly IOrderQueries _orderQueries; | ||||||
|     private readonly IIdentityService _identityService; |     private readonly IIdentityService _identityService; | ||||||
| @ -149,5 +140,4 @@ namespace Microsoft.eShopOnContainers.Services.Ordering.API.Controllers | |||||||
| 
 | 
 | ||||||
|         return await _mediator.Send(createOrderDraftCommand); |         return await _mediator.Send(createOrderDraftCommand); | ||||||
|     } |     } | ||||||
|     } |  | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,10 +1,10 @@ | |||||||
| using System.Collections.Generic; | namespace Microsoft.eShopOnContainers.Services.Ordering.API.Application.Models; | ||||||
|  | 
 | ||||||
|  | using System.Collections.Generic; | ||||||
| using static Microsoft.eShopOnContainers.Services.Ordering.API.Application.Commands.CreateOrderCommand; | using static Microsoft.eShopOnContainers.Services.Ordering.API.Application.Commands.CreateOrderCommand; | ||||||
| 
 | 
 | ||||||
| namespace Ordering.API.Application.Models | public static class BasketItemExtensions | ||||||
| { | { | ||||||
|     public static class BasketItemExtensions |  | ||||||
|     { |  | ||||||
|     public static IEnumerable<OrderItemDTO> ToOrderItemsDTO(this IEnumerable<BasketItem> basketItems) |     public static IEnumerable<OrderItemDTO> ToOrderItemsDTO(this IEnumerable<BasketItem> basketItems) | ||||||
|     { |     { | ||||||
|         foreach (var item in basketItems) |         foreach (var item in basketItems) | ||||||
| @ -24,5 +24,4 @@ namespace Ordering.API.Application.Models | |||||||
|             Units = item.Quantity |             Units = item.Quantity | ||||||
|         }; |         }; | ||||||
|     } |     } | ||||||
|     } |  | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,11 +1,7 @@ | |||||||
| using System; | namespace Microsoft.eShopOnContainers.Services.Ordering.API.Extensions; | ||||||
| using System.Collections.Generic; |  | ||||||
| using System.Linq; |  | ||||||
| 
 | 
 | ||||||
| namespace Ordering.API.Extensions | public static class LinqSelectExtensions | ||||||
| { | { | ||||||
|     public static class LinqSelectExtensions |  | ||||||
|     { |  | ||||||
|     public static IEnumerable<SelectTryResult<TSource, TResult>> SelectTry<TSource, TResult>(this IEnumerable<TSource> enumerable, Func<TSource, TResult> selector) |     public static IEnumerable<SelectTryResult<TSource, TResult>> SelectTry<TSource, TResult>(this IEnumerable<TSource> enumerable, Func<TSource, TResult> selector) | ||||||
|     { |     { | ||||||
|         foreach (TSource element in enumerable) |         foreach (TSource element in enumerable) | ||||||
| @ -46,5 +42,4 @@ namespace Ordering.API.Extensions | |||||||
|         public TResult Result { get; private set; } |         public TResult Result { get; private set; } | ||||||
|         public Exception CaughtException { get; private set; } |         public Exception CaughtException { get; private set; } | ||||||
|     } |     } | ||||||
|     } |  | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,18 +1,7 @@ | |||||||
| using Google.Protobuf.Collections; | namespace GrpcOrdering; | ||||||
| using Grpc.Core; |  | ||||||
| using MediatR; |  | ||||||
| using Microsoft.eShopOnContainers.BuildingBlocks.EventBus.Extensions; |  | ||||||
| using Microsoft.Extensions.Logging; |  | ||||||
| using System.Collections.Generic; |  | ||||||
| using System.Linq; |  | ||||||
| using System.Threading.Tasks; |  | ||||||
| using ApiModels = Ordering.API.Application.Models; |  | ||||||
| using AppCommand = Microsoft.eShopOnContainers.Services.Ordering.API.Application.Commands; |  | ||||||
| 
 | 
 | ||||||
| namespace GrpcOrdering | public class OrderingService : OrderingGrpc.OrderingGrpcBase | ||||||
| { | { | ||||||
|     public class OrderingService : OrderingGrpc.OrderingGrpcBase |  | ||||||
|     { |  | ||||||
|     private readonly IMediator _mediator; |     private readonly IMediator _mediator; | ||||||
|     private readonly ILogger<OrderingService> _logger; |     private readonly ILogger<OrderingService> _logger; | ||||||
| 
 | 
 | ||||||
| @ -86,5 +75,4 @@ namespace GrpcOrdering | |||||||
|             PictureUrl = x.PictureUrl, |             PictureUrl = x.PictureUrl, | ||||||
|         }); |         }); | ||||||
|     } |     } | ||||||
|     } |  | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,14 +1,10 @@ | |||||||
| namespace Microsoft.eShopOnContainers.Services.Ordering.API.Infrastructure.ActionResults | namespace Microsoft.eShopOnContainers.Services.Ordering.API.Infrastructure.ActionResults; | ||||||
| { |  | ||||||
|     using AspNetCore.Http; |  | ||||||
|     using Microsoft.AspNetCore.Mvc; |  | ||||||
| 
 | 
 | ||||||
|     public class InternalServerErrorObjectResult : ObjectResult | public class InternalServerErrorObjectResult : ObjectResult | ||||||
|     { | { | ||||||
|     public InternalServerErrorObjectResult(object error) |     public InternalServerErrorObjectResult(object error) | ||||||
|         : base(error) |         : base(error) | ||||||
|     { |     { | ||||||
|         StatusCode = StatusCodes.Status500InternalServerError; |         StatusCode = StatusCodes.Status500InternalServerError; | ||||||
|     } |     } | ||||||
|     } |  | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,13 +1,7 @@ | |||||||
| using Microsoft.AspNetCore.Mvc.Authorization; | namespace Microsoft.eShopOnContainers.Services.Ordering.API.Infrastructure.Auth; | ||||||
| using Microsoft.OpenApi.Models; |  | ||||||
| using Swashbuckle.AspNetCore.SwaggerGen; |  | ||||||
| using System.Collections.Generic; |  | ||||||
| using System.Linq; |  | ||||||
| 
 | 
 | ||||||
| namespace Microsoft.eShopOnContainers.Services.Ordering.API.Infrastructure.Auth | public class AuthorizationHeaderParameterOperationFilter : IOperationFilter | ||||||
| { | { | ||||||
|     public class AuthorizationHeaderParameterOperationFilter : IOperationFilter |  | ||||||
|     { |  | ||||||
|     public void Apply(OpenApiOperation operation, OperationFilterContext context) |     public void Apply(OpenApiOperation operation, OperationFilterContext context) | ||||||
|     { |     { | ||||||
|         var filterPipeline = context.ApiDescription.ActionDescriptor.FilterDescriptors; |         var filterPipeline = context.ApiDescription.ActionDescriptor.FilterDescriptors; | ||||||
| @ -30,5 +24,4 @@ namespace Microsoft.eShopOnContainers.Services.Ordering.API.Infrastructure.Auth | |||||||
|         } |         } | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     } |  | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,19 +1,8 @@ | |||||||
| using Autofac; | namespace Microsoft.eShopOnContainers.Services.Ordering.API.Infrastructure.AutofacModules; | ||||||
| using Microsoft.eShopOnContainers.BuildingBlocks.EventBus.Abstractions; |  | ||||||
| using Microsoft.eShopOnContainers.Services.Ordering.API.Application.Commands; |  | ||||||
| using Microsoft.eShopOnContainers.Services.Ordering.API.Application.Queries; |  | ||||||
| using Microsoft.eShopOnContainers.Services.Ordering.Domain.AggregatesModel.BuyerAggregate; |  | ||||||
| using Microsoft.eShopOnContainers.Services.Ordering.Domain.AggregatesModel.OrderAggregate; |  | ||||||
| using Microsoft.eShopOnContainers.Services.Ordering.Infrastructure.Idempotency; |  | ||||||
| using Microsoft.eShopOnContainers.Services.Ordering.Infrastructure.Repositories; |  | ||||||
| using System.Reflection; |  | ||||||
| 
 | 
 | ||||||
| namespace Microsoft.eShopOnContainers.Services.Ordering.API.Infrastructure.AutofacModules | public class ApplicationModule | ||||||
| { |  | ||||||
| 
 |  | ||||||
|     public class ApplicationModule |  | ||||||
|     : Autofac.Module |     : Autofac.Module | ||||||
|     { | { | ||||||
| 
 | 
 | ||||||
|     public string QueriesConnectionString { get; } |     public string QueriesConnectionString { get; } | ||||||
| 
 | 
 | ||||||
| @ -46,5 +35,4 @@ namespace Microsoft.eShopOnContainers.Services.Ordering.API.Infrastructure.Autof | |||||||
|             .AsClosedTypesOf(typeof(IIntegrationEventHandler<>)); |             .AsClosedTypesOf(typeof(IIntegrationEventHandler<>)); | ||||||
| 
 | 
 | ||||||
|     } |     } | ||||||
|     } |  | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,17 +1,7 @@ | |||||||
| using Autofac; | namespace Microsoft.eShopOnContainers.Services.Ordering.API.Infrastructure.AutofacModules; | ||||||
| using FluentValidation; |  | ||||||
| using MediatR; |  | ||||||
| using Microsoft.eShopOnContainers.Services.Ordering.API.Application.Commands; |  | ||||||
| using Ordering.API.Application.Behaviors; |  | ||||||
| using Ordering.API.Application.DomainEventHandlers.OrderStartedEvent; |  | ||||||
| using Ordering.API.Application.Validations; |  | ||||||
| using System.Linq; |  | ||||||
| using System.Reflection; |  | ||||||
| 
 | 
 | ||||||
| namespace Microsoft.eShopOnContainers.Services.Ordering.API.Infrastructure.AutofacModules | public class MediatorModule : Autofac.Module | ||||||
| { | { | ||||||
|     public class MediatorModule : Autofac.Module |  | ||||||
|     { |  | ||||||
|     protected override void Load(ContainerBuilder builder) |     protected override void Load(ContainerBuilder builder) | ||||||
|     { |     { | ||||||
|         builder.RegisterAssemblyTypes(typeof(IMediator).GetTypeInfo().Assembly) |         builder.RegisterAssemblyTypes(typeof(IMediator).GetTypeInfo().Assembly) | ||||||
| @ -43,5 +33,4 @@ namespace Microsoft.eShopOnContainers.Services.Ordering.API.Infrastructure.Autof | |||||||
|         builder.RegisterGeneric(typeof(TransactionBehaviour<,>)).As(typeof(IPipelineBehavior<,>)); |         builder.RegisterGeneric(typeof(TransactionBehaviour<,>)).As(typeof(IPipelineBehavior<,>)); | ||||||
| 
 | 
 | ||||||
|     } |     } | ||||||
|     } |  | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,10 +1,4 @@ | |||||||
| using Microsoft.EntityFrameworkCore; | namespace Microsoft.eShopOnContainers.Services.Ordering.API.Infrastructure.Factories | ||||||
| using Microsoft.EntityFrameworkCore.Design; |  | ||||||
| using Microsoft.eShopOnContainers.Services.Ordering.Infrastructure; |  | ||||||
| using Microsoft.Extensions.Configuration; |  | ||||||
| using System.IO; |  | ||||||
| 
 |  | ||||||
| namespace Ordering.API.Infrastructure.Factories |  | ||||||
| { | { | ||||||
|     public class OrderingDbContextFactory : IDesignTimeDbContextFactory<OrderingContext> |     public class OrderingDbContextFactory : IDesignTimeDbContextFactory<OrderingContext> | ||||||
|     { |     { | ||||||
|  | |||||||
| @ -1,13 +1,7 @@ | |||||||
| using Microsoft.AspNetCore.Authorization; | namespace Microsoft.eShopOnContainers.Services.Ordering.API.Infrastructure.Filters; | ||||||
| using Microsoft.OpenApi.Models; |  | ||||||
| using Swashbuckle.AspNetCore.SwaggerGen; |  | ||||||
| using System.Collections.Generic; |  | ||||||
| using System.Linq; |  | ||||||
| 
 | 
 | ||||||
| namespace Ordering.API.Infrastructure.Filters | public class AuthorizeCheckOperationFilter : IOperationFilter | ||||||
| { | { | ||||||
|     public class AuthorizeCheckOperationFilter : IOperationFilter |  | ||||||
|     { |  | ||||||
|     public void Apply(OpenApiOperation operation, OperationFilterContext context) |     public void Apply(OpenApiOperation operation, OperationFilterContext context) | ||||||
|     { |     { | ||||||
|         // Check for authorize attribute |         // Check for authorize attribute | ||||||
| @ -32,5 +26,4 @@ namespace Ordering.API.Infrastructure.Filters | |||||||
|                 } |                 } | ||||||
|             }; |             }; | ||||||
|     } |     } | ||||||
|     } |  | ||||||
| } | } | ||||||
| @ -1,17 +1,7 @@ | |||||||
| namespace Microsoft.eShopOnContainers.Services.Ordering.API.Infrastructure.Filters | namespace Microsoft.eShopOnContainers.Services.Ordering.API.Infrastructure.Filters; | ||||||
| { |  | ||||||
|     using AspNetCore.Mvc; |  | ||||||
|     using global::Ordering.Domain.Exceptions; |  | ||||||
|     using Microsoft.AspNetCore.Hosting; |  | ||||||
|     using Microsoft.AspNetCore.Http; |  | ||||||
|     using Microsoft.AspNetCore.Mvc.Filters; |  | ||||||
|     using Microsoft.eShopOnContainers.Services.Ordering.API.Infrastructure.ActionResults; |  | ||||||
|     using Microsoft.Extensions.Hosting; |  | ||||||
|     using Microsoft.Extensions.Logging; |  | ||||||
|     using System.Net; |  | ||||||
| 
 | 
 | ||||||
|     public class HttpGlobalExceptionFilter : IExceptionFilter | public class HttpGlobalExceptionFilter : IExceptionFilter | ||||||
|     { | { | ||||||
|     private readonly IWebHostEnvironment env; |     private readonly IWebHostEnvironment env; | ||||||
|     private readonly ILogger<HttpGlobalExceptionFilter> logger; |     private readonly ILogger<HttpGlobalExceptionFilter> logger; | ||||||
| 
 | 
 | ||||||
| @ -67,5 +57,4 @@ | |||||||
| 
 | 
 | ||||||
|         public object DeveloperMessage { get; set; } |         public object DeveloperMessage { get; set; } | ||||||
|     } |     } | ||||||
|     } |  | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,25 +1,9 @@ | |||||||
| namespace Microsoft.eShopOnContainers.Services.Ordering.API.Infrastructure | namespace Microsoft.eShopOnContainers.Services.Ordering.API.Infrastructure; | ||||||
| { |  | ||||||
|     using global::Ordering.API.Extensions; |  | ||||||
|     using Microsoft.AspNetCore.Hosting; |  | ||||||
|     using Microsoft.EntityFrameworkCore; |  | ||||||
|     using Microsoft.eShopOnContainers.Services.Ordering.Domain.AggregatesModel.BuyerAggregate; |  | ||||||
|     using Microsoft.eShopOnContainers.Services.Ordering.Domain.AggregatesModel.OrderAggregate; |  | ||||||
|     using Microsoft.eShopOnContainers.Services.Ordering.Domain.SeedWork; |  | ||||||
|     using Microsoft.Extensions.Logging; |  | ||||||
|     using Microsoft.Extensions.Options; |  | ||||||
|     using Ordering.Infrastructure; |  | ||||||
|     using Polly; |  | ||||||
|     using Polly.Retry; |  | ||||||
|     using System; |  | ||||||
|     using System.Collections.Generic; |  | ||||||
|     using System.Data.SqlClient; |  | ||||||
|     using System.IO; |  | ||||||
|     using System.Linq; |  | ||||||
|     using System.Threading.Tasks; |  | ||||||
| 
 | 
 | ||||||
|     public class OrderingContextSeed | using Microsoft.eShopOnContainers.Services.Ordering.Domain.AggregatesModel.BuyerAggregate; | ||||||
|     { | 
 | ||||||
|  | public class OrderingContextSeed | ||||||
|  | { | ||||||
|     public async Task SeedAsync(OrderingContext context, IWebHostEnvironment env, IOptions<OrderingSettings> settings, ILogger<OrderingContextSeed> logger) |     public async Task SeedAsync(OrderingContext context, IWebHostEnvironment env, IOptions<OrderingSettings> settings, ILogger<OrderingContextSeed> logger) | ||||||
|     { |     { | ||||||
|         var policy = CreatePolicy(logger, nameof(OrderingContextSeed)); |         var policy = CreatePolicy(logger, nameof(OrderingContextSeed)); | ||||||
| @ -187,5 +171,4 @@ | |||||||
|                 } |                 } | ||||||
|             ); |             ); | ||||||
|     } |     } | ||||||
|     } |  | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,9 +1,9 @@ | |||||||
| namespace Microsoft.eShopOnContainers.Services.Ordering.API.Infrastructure.Services | namespace Microsoft.eShopOnContainers.Services.Ordering.API.Infrastructure.Services; | ||||||
|  | 
 | ||||||
|  | public interface IIdentityService | ||||||
| { | { | ||||||
|     public interface IIdentityService |  | ||||||
|     { |  | ||||||
|     string GetUserIdentity(); |     string GetUserIdentity(); | ||||||
| 
 | 
 | ||||||
|     string GetUserName(); |     string GetUserName(); | ||||||
|     } |  | ||||||
| } | } | ||||||
|  | 
 | ||||||
|  | |||||||
| @ -1,11 +1,7 @@ | |||||||
|  | namespace Microsoft.eShopOnContainers.Services.Ordering.API.Infrastructure.Services; | ||||||
| using Microsoft.AspNetCore.Http; |  | ||||||
| using System; |  | ||||||
| 
 | 
 | ||||||
| namespace Microsoft.eShopOnContainers.Services.Ordering.API.Infrastructure.Services | public class IdentityService : IIdentityService | ||||||
| { | { | ||||||
|     public class IdentityService : IIdentityService |  | ||||||
|     { |  | ||||||
|     private IHttpContextAccessor _context; |     private IHttpContextAccessor _context; | ||||||
| 
 | 
 | ||||||
|     public IdentityService(IHttpContextAccessor context) |     public IdentityService(IHttpContextAccessor context) | ||||||
| @ -22,5 +18,4 @@ namespace Microsoft.eShopOnContainers.Services.Ordering.API.Infrastructure.Servi | |||||||
|     { |     { | ||||||
|         return _context.HttpContext.User.Identity.Name; |         return _context.HttpContext.User.Identity.Name; | ||||||
|     } |     } | ||||||
|     } |  | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,7 +1,7 @@ | |||||||
| namespace Microsoft.eShopOnContainers.Services.Ordering.API | namespace Microsoft.eShopOnContainers.Services.Ordering.API; | ||||||
|  | 
 | ||||||
|  | public class OrderingSettings | ||||||
| { | { | ||||||
|     public class OrderingSettings |  | ||||||
|     { |  | ||||||
|     public bool UseCustomizationData { get; set; } |     public bool UseCustomizationData { get; set; } | ||||||
| 
 | 
 | ||||||
|     public string ConnectionString { get; set; } |     public string ConnectionString { get; set; } | ||||||
| @ -11,5 +11,4 @@ | |||||||
|     public int GracePeriodTime { get; set; } |     public int GracePeriodTime { get; set; } | ||||||
| 
 | 
 | ||||||
|     public int CheckUpdateTime { get; set; } |     public int CheckUpdateTime { get; set; } | ||||||
|     } |  | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,22 +1,4 @@ | |||||||
| using Microsoft.AspNetCore; | var configuration = GetConfiguration(); | ||||||
| using Microsoft.AspNetCore.Hosting; |  | ||||||
| using Microsoft.AspNetCore.Server.Kestrel.Core; |  | ||||||
| using Microsoft.eShopOnContainers.BuildingBlocks.IntegrationEventLogEF; |  | ||||||
| using Microsoft.eShopOnContainers.Services.Ordering.API; |  | ||||||
| using Microsoft.eShopOnContainers.Services.Ordering.API.Infrastructure; |  | ||||||
| using Microsoft.eShopOnContainers.Services.Ordering.Infrastructure; |  | ||||||
| using Microsoft.Extensions.Configuration; |  | ||||||
| using Microsoft.Extensions.DependencyInjection; |  | ||||||
| using Microsoft.Extensions.Logging; |  | ||||||
| using Microsoft.Extensions.Options; |  | ||||||
| using Serilog; |  | ||||||
| using System; |  | ||||||
| using System.IO; |  | ||||||
| using System.Net; |  | ||||||
| using Azure.Identity; |  | ||||||
| using Azure.Core; |  | ||||||
| 
 |  | ||||||
| var configuration = GetConfiguration(); |  | ||||||
| 
 | 
 | ||||||
| Log.Logger = CreateSerilogLogger(configuration); | Log.Logger = CreateSerilogLogger(configuration); | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -1,45 +1,8 @@ | |||||||
| namespace Microsoft.eShopOnContainers.Services.Ordering.API |  | ||||||
| { | namespace Microsoft.eShopOnContainers.Services.Ordering.API; | ||||||
|     using AspNetCore.Http; |  | ||||||
|     using Autofac; |  | ||||||
|     using Autofac.Extensions.DependencyInjection; |  | ||||||
|     using global::Ordering.API.Application.IntegrationEvents; |  | ||||||
|     using global::Ordering.API.Application.IntegrationEvents.Events; |  | ||||||
|     using global::Ordering.API.Infrastructure.Filters; |  | ||||||
|     using GrpcOrdering; |  | ||||||
|     using HealthChecks.UI.Client; |  | ||||||
|     using Infrastructure.AutofacModules; |  | ||||||
|     using Infrastructure.Filters; |  | ||||||
|     using Infrastructure.Services; |  | ||||||
|     using Microsoft.AspNetCore.Builder; |  | ||||||
|     using Microsoft.AspNetCore.Diagnostics.HealthChecks; |  | ||||||
|     using Microsoft.AspNetCore.Hosting; |  | ||||||
|     using Microsoft.AspNetCore.Mvc; |  | ||||||
|     using Microsoft.Azure.ServiceBus; |  | ||||||
|     using Microsoft.EntityFrameworkCore; |  | ||||||
|     using Microsoft.eShopOnContainers.BuildingBlocks.EventBus; |  | ||||||
|     using Microsoft.eShopOnContainers.BuildingBlocks.EventBus.Abstractions; |  | ||||||
|     using Microsoft.eShopOnContainers.BuildingBlocks.EventBusRabbitMQ; |  | ||||||
|     using Microsoft.eShopOnContainers.BuildingBlocks.EventBusServiceBus; |  | ||||||
|     using Microsoft.eShopOnContainers.BuildingBlocks.IntegrationEventLogEF; |  | ||||||
|     using Microsoft.eShopOnContainers.BuildingBlocks.IntegrationEventLogEF.Services; |  | ||||||
|     using Microsoft.eShopOnContainers.Services.Ordering.API.Controllers; |  | ||||||
|     using Microsoft.Extensions.Configuration; |  | ||||||
|     using Microsoft.Extensions.DependencyInjection; |  | ||||||
|     using Microsoft.Extensions.Diagnostics.HealthChecks; |  | ||||||
|     using Microsoft.Extensions.Logging; |  | ||||||
|     using Microsoft.OpenApi.Models; |  | ||||||
|     using Ordering.Infrastructure; |  | ||||||
|     using RabbitMQ.Client; |  | ||||||
|     using System; |  | ||||||
|     using System.Collections.Generic; |  | ||||||
|     using System.Data.Common; |  | ||||||
|     using System.IdentityModel.Tokens.Jwt; |  | ||||||
|     using System.IO; |  | ||||||
|     using System.Reflection; |  | ||||||
| 
 | 
 | ||||||
|     public class Startup | public class Startup | ||||||
|     { | { | ||||||
|     public Startup(IConfiguration configuration) |     public Startup(IConfiguration configuration) | ||||||
|     { |     { | ||||||
|         Configuration = configuration; |         Configuration = configuration; | ||||||
| @ -151,10 +114,10 @@ | |||||||
|         app.UseAuthentication(); |         app.UseAuthentication(); | ||||||
|         app.UseAuthorization(); |         app.UseAuthorization(); | ||||||
|     } |     } | ||||||
|     } | } | ||||||
| 
 | 
 | ||||||
|     static class CustomExtensionsMethods | static class CustomExtensionsMethods | ||||||
|     { | { | ||||||
|     public static IServiceCollection AddApplicationInsights(this IServiceCollection services, IConfiguration configuration) |     public static IServiceCollection AddApplicationInsights(this IServiceCollection services, IConfiguration configuration) | ||||||
|     { |     { | ||||||
|         services.AddApplicationInsightsTelemetry(configuration); |         services.AddApplicationInsightsTelemetry(configuration); | ||||||
| @ -425,5 +388,4 @@ | |||||||
| 
 | 
 | ||||||
|         return services; |         return services; | ||||||
|     } |     } | ||||||
|     } |  | ||||||
| } | } | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user