11using System . Linq ;
22using System . Threading . Tasks ;
33using Ardalis . GuardClauses ;
4+ using MediatR ;
45using Microsoft . eShopWeb . ApplicationCore . Entities ;
56using Microsoft . eShopWeb . ApplicationCore . Entities . BasketAggregate ;
67using Microsoft . eShopWeb . ApplicationCore . Entities . OrderAggregate ;
8+ using Microsoft . eShopWeb . ApplicationCore . Entities . OrderAggregate . Events ;
79using Microsoft . eShopWeb . ApplicationCore . Interfaces ;
810using Microsoft . eShopWeb . ApplicationCore . Specifications ;
911
@@ -15,16 +17,18 @@ public class OrderService : IOrderService
1517 private readonly IUriComposer _uriComposer ;
1618 private readonly IRepository < Basket > _basketRepository ;
1719 private readonly IRepository < CatalogItem > _itemRepository ;
20+ private readonly IMediator _mediator ;
1821
1922 public OrderService ( IRepository < Basket > basketRepository ,
2023 IRepository < CatalogItem > itemRepository ,
2124 IRepository < Order > orderRepository ,
22- IUriComposer uriComposer )
25+ IUriComposer uriComposer , IMediator mediator )
2326 {
2427 _orderRepository = orderRepository ;
2528 _uriComposer = uriComposer ;
2629 _basketRepository = basketRepository ;
2730 _itemRepository = itemRepository ;
31+ _mediator = mediator ;
2832 }
2933
3034 public async Task CreateOrderAsync ( int basketId , Address shippingAddress )
@@ -49,5 +53,7 @@ public async Task CreateOrderAsync(int basketId, Address shippingAddress)
4953 var order = new Order ( basket . BuyerId , shippingAddress , items ) ;
5054
5155 await _orderRepository . AddAsync ( order ) ;
56+ OrderCreatedEvent orderCreatedEvent = new OrderCreatedEvent ( order ) ;
57+ await _mediator . Publish ( orderCreatedEvent ) ;
5258 }
5359}
0 commit comments