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);
        }