private async Task CreatePurchaseOrder(int buyerId, int[] catalogItemIds) { var basketModel = new CreateBasketModel { BuyerId = buyerId }; var createNewBasketCommand = _autoMapper.Map <CreateBasketModel, CreateBasketForUserCommand>(basketModel); await _commandBus.SendAsync(createNewBasketCommand); var basket = await _queryBus.SendAsync <GetBasketByBuyerId, Basket>(new GetBasketByBuyerId { BuyerId = buyerId }); foreach (var catalogItemId in catalogItemIds) { var basketItemModel = new BasketItemModel { BasketId = basket.BasketId, Price = 10M, Quantity = 1, CatalogItemId = catalogItemId }; var addItemToBasketCommand = _autoMapper.Map <BasketItemModel, AddItemToBasketCommand>(basketItemModel); await _commandBus.SendAsync(addItemToBasketCommand); } basket = await _queryBus.SendAsync <GetBasketByBuyerId, Basket>(new GetBasketByBuyerId { BuyerId = buyerId }); var createPurchaseOrderModel = new CreatePurchaseOrderModel(); createPurchaseOrderModel.BasketId = basket.BasketId.ToString(); var shippingAddress = new Address("126 BowhillWay", "Harlow", "Essex", "United Kingdom", "CM20 2FH"); var crateOrderCommand = new CreatePurchaseOrderCommand(Guid.Parse(createPurchaseOrderModel.BasketId), shippingAddress); await _commandBus.SendAsync(crateOrderCommand); }
public async Task Post([FromBody] CreatePurchaseOrderModel createPurchaseOrderModel) { _logger.LogInformation($"Create purchase order requested for basket {createPurchaseOrderModel.BasketId}"); //Assumption: We call an API Or we get Address From User var shippingAddress = new Address("126 BowhillWay", "Harlow", "Essex", "United Kingdom", "CM20 2FH"); var crateOrderCommand = new CreatePurchaseOrderCommand(Guid.Parse(createPurchaseOrderModel.BasketId), shippingAddress); await _commandBus.SendAsync(crateOrderCommand); }
public void AddPurchase(CreatePurchaseOrderModel input) { var purchase = new PurchaseOrder { Description = input.Description, Price = input.Price, Quantity = input.Quantity, TotalAmount = input.Price * input.Quantity, CustomerId = input.Customer }; this.purchaseOrderRepository.Add(purchase); this.purchaseOrderRepository.SaveChanges(); }
public IActionResult Create(CreatePurchaseOrderModel purchase) { this.purchaseOrderService.AddPurchase(purchase); return(RedirectToAction("Index", "PurchaseOrder")); }