public async Task <IActionResult> Checkout([FromBody] BasketCheckOut basketCheckOut) { var basket = await _basketRepository.GetBasket(basketCheckOut.UserName); if (basket == null) { return(BadRequest()); } var basketRemoved = await _basketRepository.DeleteBasket(basket.UserName); if (!basketRemoved) { return(BadRequest()); } var eventMessage = _mapper.Map <BasketCheckoutEvent>(basketCheckOut); eventMessage.RequestId = Guid.NewGuid(); eventMessage.TotalPrice = basket.TotalPrice; try { _eventBus.PublishBasketCheckout(EventBusConstants.BasketCheckoutQueue, eventMessage); } catch (Exception) { throw; } return(Accepted()); }
public async Task <IActionResult> CheckOut([FromBody] BasketCheckOut basketCheckOut) { //get total price of basket //remove the basket // send checkout event to rabbit var basket = await _basketBusiness.GetBasket(basketCheckOut.UserName); if (basket == null) { return(BadRequest()); } var basketRemoved = await _basketBusiness.DeleteBasket(basketCheckOut.UserName); if (!basketRemoved) { return(BadRequest()); } var eventMessage = _mapper.Map <BasketCheckOutEvent>(basketCheckOut); eventMessage.RequestId = Guid.NewGuid(); eventMessage.TotalPrice = basket.TotalPrice; try { _eventBus.PublishBasketCheckout(EventBusConstants.BASKETCHECKOUTQUEUE, eventMessage); } catch (Exception) { throw; } return(Accepted()); }
public async Task <IActionResult> CheckOut([FromBody] BasketCheckOut basketCheckOut) { //Get total price of basket var basket = await _repository.GetBasket(basketCheckOut.UserName); if (basket == null) { return(BadRequest()); } //Remove the basket var basketRemoved = await _repository.DeleteBasket(basket.UserName); if (!basketRemoved) { return(BadRequest()); } // Use Auto Mapper to Map BasketCheckOut to BasketCheckOutEvent var eventMessage = _mapper.Map <BasketCheckOutEvent>(basketCheckOut); eventMessage.RequestId = Guid.NewGuid(); eventMessage.TotalPrice = basket.TotalPrice; // Send checkout event to RabbitMQ try { _eventBus.PublishBasketCheckOut(EventBusConstants.BasketCheckOutQueue, eventMessage); } catch (Exception) { throw; } return(Accepted()); }
public async Task <IActionResult> Checkout([FromBody] BasketCheckOut basketCheckout) { // get total price of the basket // remove the basket // send checkout event to rabbitMq var basket = await _repository.GetBasket(basketCheckout.UserName); if (basket == null) { _logger.LogError("Basket not exist with this user : {EventId}", basketCheckout.UserName); return(BadRequest()); } var basketRemoved = await _repository.DeleteBasket(basketCheckout.UserName); if (!basketRemoved) { _logger.LogError("Basket can not deleted"); return(BadRequest()); } // Once basket is checkout, sends an integration event to // ordering.api to convert basket to order and proceeds with // order creation process var eventMessage = _mapper.Map <BasketCheckoutEvent>(basketCheckout); eventMessage.RequestId = Guid.NewGuid(); eventMessage.TotalPrice = basket.TotalPrice; try { _eventBus.PublishBasketCheckout(EventBusConstants.BasketCheckoutQueue, eventMessage); } catch (Exception ex) { _logger.LogError(ex, "ERROR Publishing integration event: {EventId} from {AppName}", eventMessage.RequestId, "Basket"); throw; } return(Accepted()); }