public async Task <int> Handle(CreatePurchaseOrder request, CancellationToken cancellationToken) { PurchaseOrder po = new PurchaseOrder { StoreId = request.StoreId }; foreach (var item in request.OrderedItems) { var product = await productRepository.GetByIdAsync(item.ProductId); po.AddOrderItem(new PurchaseOrderItem { Quantity = item.Quantity, Discount = item.Discount, UnitPrice = product.UnitPrice, ProductCode = product.Code, ProductId = product.Id }); } po.AddDomainEvent(new PurchaseOrderCreated(po.Id, po.OrderCount, po.Total)); await purchaseorderRepository.AddAsync(po); return(po.Id); }