Skip to content

Commit f302316

Browse files
committed
Fix issue identityService.getuseridentity fails when called from integration event
1 parent a4124d7 commit f302316

8 files changed

Lines changed: 27 additions & 21 deletions

File tree

src/Services/Ordering/Ordering.API/Application/Commands/CreateOrderCommand.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,9 @@ public class CreateOrderCommand
2323
[DataMember]
2424
private readonly List<OrderItemDTO> _orderItems;
2525

26+
[DataMember]
27+
public string UserId { get; private set; }
28+
2629
[DataMember]
2730
public string City { get; private set; }
2831

@@ -61,11 +64,12 @@ public CreateOrderCommand()
6164
_orderItems = new List<OrderItemDTO>();
6265
}
6366

64-
public CreateOrderCommand(List<BasketItem> basketItems, string city, string street, string state, string country, string zipcode,
67+
public CreateOrderCommand(List<BasketItem> basketItems, string userId, string city, string street, string state, string country, string zipcode,
6568
string cardNumber, string cardHolderName, DateTime cardExpiration,
6669
string cardSecurityNumber, int cardTypeId) : this()
6770
{
6871
_orderItems = MapToOrderItems(basketItems);
72+
UserId = userId;
6973
City = city;
7074
Street = street;
7175
State = state;

src/Services/Ordering/Ordering.API/Application/Commands/CreateOrderCommandHandler.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ public async Task<bool> Handle(CreateOrderCommand message)
4242
// methods and constructor so validations, invariants and business logic
4343
// make sure that consistency is preserved across the whole aggregate
4444
var address = new Address(message.Street, message.City, message.State, message.Country, message.ZipCode);
45-
var order = new Order(address , message.CardTypeId, message.CardNumber, message.CardSecurityNumber, message.CardHolderName, message.CardExpiration);
45+
var order = new Order(message.UserId, address, message.CardTypeId, message.CardNumber, message.CardSecurityNumber, message.CardHolderName, message.CardExpiration);
4646
order.SetOrderStatusId(OrderStatus.Submited.Id);
4747
foreach (var item in message.OrderItems)
4848
{

src/Services/Ordering/Ordering.API/Application/DomainEventHandlers/OrderStartedEvent/ValidateOrAddBuyerAggregateWhenOrderStartedDomainEventHandler.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,14 +26,14 @@ public async Task Handle(OrderStartedDomainEvent orderStartedEvent)
2626
{
2727
var cardTypeId = (orderStartedEvent.CardTypeId != 0) ? orderStartedEvent.CardTypeId : 1;
2828

29-
var userGuid = _identityService.GetUserIdentity();
29+
//var userGuid = _identityService.GetUserIdentity();
3030

31-
var buyer = await _buyerRepository.FindAsync(userGuid);
31+
var buyer = await _buyerRepository.FindAsync(orderStartedEvent.UserId);
3232
bool buyerOriginallyExisted = (buyer == null) ? false : true;
3333

3434
if (!buyerOriginallyExisted)
3535
{
36-
buyer = new Buyer(userGuid);
36+
buyer = new Buyer(orderStartedEvent.UserId);
3737
}
3838

3939
buyer.VerifyOrAddPaymentMethod(cardTypeId,

src/Services/Ordering/Ordering.API/Application/IntegrationEvents/EventHandling/UserCheckoutAcceptedIntegrationEventHandler.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ public class UserCheckoutAcceptedIntegrationEventHandler : IIntegrationEventHand
1414
private readonly ILoggerFactory _logger;
1515

1616
public UserCheckoutAcceptedIntegrationEventHandler(IMediator mediator,
17-
IOrderingIntegrationEventService orderingIntegrationEventService,
1817
ILoggerFactory logger)
1918
{
2019
_mediator = mediator ?? throw new ArgumentNullException(nameof(mediator));
@@ -35,7 +34,7 @@ public async Task Handle(UserCheckoutAcceptedIntegrationEvent eventMsg)
3534
var result = false;
3635
if (eventMsg.RequestId != Guid.Empty)
3736
{
38-
var createOrderCommand = new CreateOrderCommand(eventMsg.Basket.Items, eventMsg.City, eventMsg.Street,
37+
var createOrderCommand = new CreateOrderCommand(eventMsg.Basket.Items, eventMsg.UserId, eventMsg.City, eventMsg.Street,
3938
eventMsg.State, eventMsg.Country, eventMsg.ZipCode,
4039
eventMsg.CardNumber, eventMsg.CardHolderName, eventMsg.CardExpiration,
4140
eventMsg.CardSecurityNumber, eventMsg.CardTypeId);

src/Services/Ordering/Ordering.API/Startup.cs

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -125,13 +125,12 @@ public IServiceProvider ConfigureServices(IServiceCollection services)
125125
return new DefaultRabbitMQPersistentConnection(factory, logger);
126126
});
127127

128-
129-
services.AddSingleton<IEventBusSubscriptionsManager, InMemoryEventBusSubscriptionsManager>();
130128
services.AddSingleton<IEventBus, EventBusRabbitMQ>();
131-
services.AddTransient<IIntegrationEventHandler, UserCheckoutAcceptedIntegrationEventHandler>();
129+
services.AddSingleton<IEventBusSubscriptionsManager, InMemoryEventBusSubscriptionsManager>();
130+
services.AddTransient<IIntegrationEventHandler<UserCheckoutAcceptedIntegrationEvent>>();
132131
services.AddTransient<IIntegrationEventHandler<ConfirmGracePeriodCommandMsg>, OrderProcessSaga>();
133-
services.AddTransient<OrderStockConfirmedIntegrationEventHandler>();
134-
services.AddTransient<OrderStockNotConfirmedIntegrationEventHandler>();
132+
services.AddTransient<IIntegrationEventHandler<OrderStockConfirmedIntegrationEvent>>();
133+
services.AddTransient<IIntegrationEventHandler<OrderStockNotConfirmedIntegrationEvent>>();
135134
services.AddOptions();
136135

137136
//configure autofac
@@ -176,13 +175,13 @@ private void ConfigureEventBus(IApplicationBuilder app)
176175
{
177176
var eventBus = app.ApplicationServices.GetRequiredService<IEventBus>();
178177

179-
eventBus.Subscribe<UserCheckoutAcceptedIntegrationEvent,IIntegrationEventHandler<UserCheckoutAcceptedIntegrationEvent>>();
178+
eventBus.Subscribe<UserCheckoutAcceptedIntegrationEvent, IIntegrationEventHandler<UserCheckoutAcceptedIntegrationEvent>>();
180179

181180
eventBus.Subscribe<ConfirmGracePeriodCommandMsg, IIntegrationEventHandler<ConfirmGracePeriodCommandMsg>>();
182181

183-
eventBus.Subscribe<OrderStockConfirmedIntegrationEvent, OrderStockConfirmedIntegrationEventHandler>();
182+
eventBus.Subscribe<OrderStockConfirmedIntegrationEvent, IIntegrationEventHandler<OrderStockConfirmedIntegrationEvent>>();
184183

185-
eventBus.Subscribe<OrderStockNotConfirmedIntegrationEvent, OrderStockNotConfirmedIntegrationEventHandler>();
184+
eventBus.Subscribe<OrderStockNotConfirmedIntegrationEvent, IIntegrationEventHandler<OrderStockNotConfirmedIntegrationEvent>>();
186185
}
187186

188187
protected virtual void ConfigureAuth(IApplicationBuilder app)

src/Services/Ordering/Ordering.Domain/AggregatesModel/OrderAggregate/Order.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ public class Order
4040

4141
protected Order() { _orderItems = new List<OrderItem>(); }
4242

43-
public Order(Address address, int cardTypeId, string cardNumber, string cardSecurityNumber,
43+
public Order(string userId, Address address, int cardTypeId, string cardNumber, string cardSecurityNumber,
4444
string cardHolderName, DateTime cardExpiration, int? buyerId = null, int? paymentMethodId = null)
4545
{
4646
_orderItems = new List<OrderItem>();
@@ -52,7 +52,7 @@ public Order(Address address, int cardTypeId, string cardNumber, string cardSecu
5252

5353
// Add the OrderStarterDomainEvent to the domain events collection
5454
// to be raised/dispatched when comitting changes into the Database [ After DbContext.SaveChanges() ]
55-
AddOrderStartedDomainEvent(cardTypeId, cardNumber,
55+
AddOrderStartedDomainEvent(userId, cardTypeId, cardNumber,
5656
cardSecurityNumber, cardHolderName, cardExpiration);
5757
}
5858

@@ -113,11 +113,11 @@ public void SetOrderStockConfirmed(bool confirmed)
113113
}
114114
}
115115

116-
private void AddOrderStartedDomainEvent(int cardTypeId, string cardNumber,
116+
private void AddOrderStartedDomainEvent(string userId, int cardTypeId, string cardNumber,
117117
string cardSecurityNumber, string cardHolderName, DateTime cardExpiration)
118118
{
119119
var orderStartedDomainEvent = new OrderStartedDomainEvent(
120-
this, cardTypeId, cardNumber, cardSecurityNumber,
120+
this, userId, cardTypeId, cardNumber, cardSecurityNumber,
121121
cardHolderName, cardExpiration);
122122

123123
this.AddDomainEvent(orderStartedDomainEvent);

src/Services/Ordering/Ordering.Domain/Events/OrderStartedDomainEvent.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,19 +12,21 @@ namespace Ordering.Domain.Events
1212
public class OrderStartedDomainEvent
1313
: IAsyncNotification
1414
{
15+
public string UserId { get; private set; }
1516
public int CardTypeId { get; private set; }
1617
public string CardNumber { get; private set; }
1718
public string CardSecurityNumber { get; private set; }
1819
public string CardHolderName { get; private set; }
1920
public DateTime CardExpiration { get; private set; }
2021
public Order Order { get; private set; }
2122

22-
public OrderStartedDomainEvent(Order order,
23+
public OrderStartedDomainEvent(Order order, string userId,
2324
int cardTypeId, string cardNumber,
2425
string cardSecurityNumber, string cardHolderName,
2526
DateTime cardExpiration)
2627
{
2728
Order = order;
29+
UserId = userId;
2830
CardTypeId = cardTypeId;
2931
CardNumber = cardNumber;
3032
CardSecurityNumber = cardSecurityNumber;

src/Web/WebMVC/Services/OrderingService.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,8 @@ public void OverrideUserInfoIntoOrder(Order original, Order destination)
9898

9999
public BasketDTO MapOrderToBasket(Order order)
100100
{
101+
order.CardExpirationApiFormat();
102+
101103
return new BasketDTO()
102104
{
103105
City = order.City,
@@ -109,7 +111,7 @@ public BasketDTO MapOrderToBasket(Order order)
109111
CardHolderName = order.CardHolderName,
110112
CardExpiration = order.CardExpiration,
111113
CardSecurityNumber = order.CardSecurityNumber,
112-
CardTypeId = order.CardTypeId,
114+
CardTypeId = 1,
113115
Buyer = order.Buyer,
114116
RequestId = order.RequestId
115117
};

0 commit comments

Comments
 (0)