Merge branch 'order-processflow-redesign' of https://github.com/dotnet-architecture/eShopOnContainers into order-processflow-redesign
This commit is contained in:
commit
3fcf8a0bcd
@ -23,6 +23,9 @@ namespace Microsoft.eShopOnContainers.Services.Ordering.API.Application.Commands
|
||||
[DataMember]
|
||||
private readonly List<OrderItemDTO> _orderItems;
|
||||
|
||||
[DataMember]
|
||||
public string UserId { get; private set; }
|
||||
|
||||
[DataMember]
|
||||
public string City { get; private set; }
|
||||
|
||||
@ -61,11 +64,12 @@ namespace Microsoft.eShopOnContainers.Services.Ordering.API.Application.Commands
|
||||
_orderItems = new List<OrderItemDTO>();
|
||||
}
|
||||
|
||||
public CreateOrderCommand(List<BasketItem> basketItems, string city, string street, string state, string country, string zipcode,
|
||||
public CreateOrderCommand(List<BasketItem> basketItems, string userId, string city, string street, string state, string country, string zipcode,
|
||||
string cardNumber, string cardHolderName, DateTime cardExpiration,
|
||||
string cardSecurityNumber, int cardTypeId) : this()
|
||||
{
|
||||
_orderItems = MapToOrderItems(basketItems);
|
||||
UserId = userId;
|
||||
City = city;
|
||||
Street = street;
|
||||
State = state;
|
||||
|
@ -42,7 +42,7 @@
|
||||
// methods and constructor so validations, invariants and business logic
|
||||
// make sure that consistency is preserved across the whole aggregate
|
||||
var address = new Address(message.Street, message.City, message.State, message.Country, message.ZipCode);
|
||||
var order = new Order(address , message.CardTypeId, message.CardNumber, message.CardSecurityNumber, message.CardHolderName, message.CardExpiration);
|
||||
var order = new Order(message.UserId, address, message.CardTypeId, message.CardNumber, message.CardSecurityNumber, message.CardHolderName, message.CardExpiration);
|
||||
order.SetOrderStatusId(OrderStatus.Submited.Id);
|
||||
foreach (var item in message.OrderItems)
|
||||
{
|
||||
|
@ -26,14 +26,14 @@ namespace Ordering.API.Application.DomainEventHandlers.OrderStartedEvent
|
||||
{
|
||||
var cardTypeId = (orderStartedEvent.CardTypeId != 0) ? orderStartedEvent.CardTypeId : 1;
|
||||
|
||||
var userGuid = _identityService.GetUserIdentity();
|
||||
//var userGuid = _identityService.GetUserIdentity();
|
||||
|
||||
var buyer = await _buyerRepository.FindAsync(userGuid);
|
||||
var buyer = await _buyerRepository.FindAsync(orderStartedEvent.UserId);
|
||||
bool buyerOriginallyExisted = (buyer == null) ? false : true;
|
||||
|
||||
if (!buyerOriginallyExisted)
|
||||
{
|
||||
buyer = new Buyer(userGuid);
|
||||
buyer = new Buyer(orderStartedEvent.UserId);
|
||||
}
|
||||
|
||||
buyer.VerifyOrAddPaymentMethod(cardTypeId,
|
||||
|
@ -34,7 +34,7 @@ namespace Ordering.API.Application.IntegrationEvents.EventHandling
|
||||
var result = false;
|
||||
if (eventMsg.RequestId != Guid.Empty)
|
||||
{
|
||||
var createOrderCommand = new CreateOrderCommand(eventMsg.Basket.Items, eventMsg.City, eventMsg.Street,
|
||||
var createOrderCommand = new CreateOrderCommand(eventMsg.Basket.Items, eventMsg.UserId, eventMsg.City, eventMsg.Street,
|
||||
eventMsg.State, eventMsg.Country, eventMsg.ZipCode,
|
||||
eventMsg.CardNumber, eventMsg.CardHolderName, eventMsg.CardExpiration,
|
||||
eventMsg.CardSecurityNumber, eventMsg.CardTypeId);
|
||||
|
@ -125,13 +125,12 @@
|
||||
return new DefaultRabbitMQPersistentConnection(factory, logger);
|
||||
});
|
||||
|
||||
|
||||
services.AddSingleton<IEventBusSubscriptionsManager, InMemoryEventBusSubscriptionsManager>();
|
||||
services.AddSingleton<IEventBus, EventBusRabbitMQ>();
|
||||
services.AddTransient<IIntegrationEventHandler, UserCheckoutAcceptedIntegrationEventHandler>();
|
||||
services.AddSingleton<IEventBusSubscriptionsManager, InMemoryEventBusSubscriptionsManager>();
|
||||
services.AddTransient<IIntegrationEventHandler<UserCheckoutAcceptedIntegrationEvent>>();
|
||||
services.AddTransient<IIntegrationEventHandler<ConfirmGracePeriodCommandMsg>, OrderProcessSaga>();
|
||||
services.AddTransient<OrderStockConfirmedIntegrationEventHandler>();
|
||||
services.AddTransient<OrderStockNotConfirmedIntegrationEventHandler>();
|
||||
services.AddTransient<IIntegrationEventHandler<OrderStockConfirmedIntegrationEvent>>();
|
||||
services.AddTransient<IIntegrationEventHandler<OrderStockNotConfirmedIntegrationEvent>>();
|
||||
services.AddOptions();
|
||||
|
||||
//configure autofac
|
||||
@ -176,13 +175,13 @@
|
||||
{
|
||||
var eventBus = app.ApplicationServices.GetRequiredService<IEventBus>();
|
||||
|
||||
eventBus.Subscribe<UserCheckoutAcceptedIntegrationEvent,IIntegrationEventHandler<UserCheckoutAcceptedIntegrationEvent>>();
|
||||
eventBus.Subscribe<UserCheckoutAcceptedIntegrationEvent, IIntegrationEventHandler<UserCheckoutAcceptedIntegrationEvent>>();
|
||||
|
||||
eventBus.Subscribe<ConfirmGracePeriodCommandMsg, IIntegrationEventHandler<ConfirmGracePeriodCommandMsg>>();
|
||||
|
||||
eventBus.Subscribe<OrderStockConfirmedIntegrationEvent, OrderStockConfirmedIntegrationEventHandler>();
|
||||
eventBus.Subscribe<OrderStockConfirmedIntegrationEvent, IIntegrationEventHandler<OrderStockConfirmedIntegrationEvent>>();
|
||||
|
||||
eventBus.Subscribe<OrderStockNotConfirmedIntegrationEvent, OrderStockNotConfirmedIntegrationEventHandler>();
|
||||
eventBus.Subscribe<OrderStockNotConfirmedIntegrationEvent, IIntegrationEventHandler<OrderStockNotConfirmedIntegrationEvent>>();
|
||||
}
|
||||
|
||||
protected virtual void ConfigureAuth(IApplicationBuilder app)
|
||||
|
@ -39,7 +39,7 @@ namespace Microsoft.eShopOnContainers.Services.Ordering.Domain.AggregatesModel.O
|
||||
|
||||
protected Order() { _orderItems = new List<OrderItem>(); }
|
||||
|
||||
public Order(Address address, int cardTypeId, string cardNumber, string cardSecurityNumber,
|
||||
public Order(string userId, Address address, int cardTypeId, string cardNumber, string cardSecurityNumber,
|
||||
string cardHolderName, DateTime cardExpiration, int? buyerId = null, int? paymentMethodId = null)
|
||||
{
|
||||
_orderItems = new List<OrderItem>();
|
||||
@ -51,7 +51,7 @@ namespace Microsoft.eShopOnContainers.Services.Ordering.Domain.AggregatesModel.O
|
||||
|
||||
// Add the OrderStarterDomainEvent to the domain events collection
|
||||
// to be raised/dispatched when comitting changes into the Database [ After DbContext.SaveChanges() ]
|
||||
AddOrderStartedDomainEvent(cardTypeId, cardNumber,
|
||||
AddOrderStartedDomainEvent(userId, cardTypeId, cardNumber,
|
||||
cardSecurityNumber, cardHolderName, cardExpiration);
|
||||
}
|
||||
|
||||
@ -121,11 +121,11 @@ namespace Microsoft.eShopOnContainers.Services.Ordering.Domain.AggregatesModel.O
|
||||
AddDomainEvent(new OrderStockConfirmedDomainEvent(Id, OrderStatus));
|
||||
}
|
||||
|
||||
private void AddOrderStartedDomainEvent(int cardTypeId, string cardNumber,
|
||||
private void AddOrderStartedDomainEvent(string userId, int cardTypeId, string cardNumber,
|
||||
string cardSecurityNumber, string cardHolderName, DateTime cardExpiration)
|
||||
{
|
||||
var orderStartedDomainEvent = new OrderStartedDomainEvent(
|
||||
this, cardTypeId, cardNumber, cardSecurityNumber,
|
||||
this, userId, cardTypeId, cardNumber, cardSecurityNumber,
|
||||
cardHolderName, cardExpiration);
|
||||
|
||||
this.AddDomainEvent(orderStartedDomainEvent);
|
||||
|
@ -12,6 +12,7 @@ namespace Ordering.Domain.Events
|
||||
public class OrderStartedDomainEvent
|
||||
: IAsyncNotification
|
||||
{
|
||||
public string UserId { get; private set; }
|
||||
public int CardTypeId { get; private set; }
|
||||
public string CardNumber { get; private set; }
|
||||
public string CardSecurityNumber { get; private set; }
|
||||
@ -19,12 +20,13 @@ namespace Ordering.Domain.Events
|
||||
public DateTime CardExpiration { get; private set; }
|
||||
public Order Order { get; private set; }
|
||||
|
||||
public OrderStartedDomainEvent(Order order,
|
||||
public OrderStartedDomainEvent(Order order, string userId,
|
||||
int cardTypeId, string cardNumber,
|
||||
string cardSecurityNumber, string cardHolderName,
|
||||
DateTime cardExpiration)
|
||||
{
|
||||
Order = order;
|
||||
UserId = userId;
|
||||
CardTypeId = cardTypeId;
|
||||
CardNumber = cardNumber;
|
||||
CardSecurityNumber = cardSecurityNumber;
|
||||
|
@ -98,6 +98,8 @@ namespace Microsoft.eShopOnContainers.WebMVC.Services
|
||||
|
||||
public BasketDTO MapOrderToBasket(Order order)
|
||||
{
|
||||
order.CardExpirationApiFormat();
|
||||
|
||||
return new BasketDTO()
|
||||
{
|
||||
City = order.City,
|
||||
@ -109,7 +111,7 @@ namespace Microsoft.eShopOnContainers.WebMVC.Services
|
||||
CardHolderName = order.CardHolderName,
|
||||
CardExpiration = order.CardExpiration,
|
||||
CardSecurityNumber = order.CardSecurityNumber,
|
||||
CardTypeId = order.CardTypeId,
|
||||
CardTypeId = 1,
|
||||
Buyer = order.Buyer,
|
||||
RequestId = order.RequestId
|
||||
};
|
||||
|
Loading…
x
Reference in New Issue
Block a user