public async Task <IActionResult> Checkout([FromBody] BasketCheckout basketCheckout)
        {
            var basket = await _repository.GetBasketAsync(basketCheckout.UserName);

            if (basket == null)
            {
                return(BadRequest());
            }

            var basketToRemove = await _repository.DeleteBasketAsync(basket.UserName);

            if (!basketToRemove)
            {
                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 <ActionResult> CheckoutBasket([FromBody] BasketCheckout basketCheckout)
        {
            var basket = await _basketRepository.GetBasket(basketCheckout.UserName);

            if (basket == null)
            {
                return(BadRequest());
            }

            var basketRemoved = await _basketRepository.DeleteBasket(basketCheckout.UserName);

            if (!basketRemoved)
            {
                return(BadRequest());
            }

            var eventMessage = _mapper.Map <BasketCheckoutEvent>(basketCheckout);

            eventMessage.RequestId  = Guid.NewGuid();
            eventMessage.TotalPrice = basket.TotalPrice;

            try
            {
                _eventBusRabbitMqProducer.PublishBasketCheckout(EventBusConstants.BasketCheckoutQueue, eventMessage);
            }
            catch (Exception e)
            {
                Console.WriteLine($"error sending eventbus message message: {e.Message}");
                throw;
            }

            return(Accepted());
        }
Exemplo n.º 3
0
        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());
        }
        [ProducesResponseType((int)HttpStatusCode.BadRequest)] //400
        public async Task <IActionResult> Checkout([FromBody] BasketCheckout basketCheckout)
        {
            //get total price of basket
            //remove the basket
            //send checkout event to rabbitMQ

            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.TotalPrice = basket.TotalPrice();
            //Publish To RabbitMQ
            _eventBus.PublishBasketCheckout(queueName: EventBusConstants.BasketCheckoutQueue,
                                            publishModel: eventMessage);
            return(Accepted());
        }
Exemplo n.º 5
0
        public async Task <IActionResult> Checkout(BasketCheckout checkout)
        {
            BasketCart basket = await _basketRepository.GetBasket(checkout.userName);

            if (basket == null)
            {
                return(BadRequest());
            }


            var basketRemoved = await _basketRepository.DeleteBasket(basket.UserName);

            if (!basketRemoved)
            {
                return(BadRequest());
            }

            //var eventMessage = _mapper.Map <BasketCheckoutEvent>(basket);
            var eventMessage = new BasketCheckoutEvent {
                AddressLine   = checkout.AddressLine,
                CardName      = checkout.CardName,
                CardNumber    = checkout.CardNumber,
                Country       = checkout.Country,
                CVV           = checkout.CVV,
                EmailAddress  = checkout.EmailAddress,
                Expiration    = checkout.Expiration,
                FirstName     = checkout.FirstName,
                LastName      = checkout.LastName,
                PaymentMethod = checkout.PaymentMethod,
                State         = checkout.State,
                TotalPrice    = checkout.TotalPrice,
                userName      = checkout.userName,
                ZipCode       = checkout.ZipCode
            };


            eventMessage.RequestId  = Guid.NewGuid();
            eventMessage.TotalPrice = basket.TotalPrice;

            try
            {
                _eventBus.PublishBasketCheckout(EventBusConstants.BasketCheckoutQueue, eventMessage);
            }
            catch (Exception ex)
            {
                return(BadRequest());
            }

            return(Accepted(basket));
        }
        public async Task <ActionResult <BasketCart> > Checkout([FromBody] BasketCheckout basketCheckout)
        {
            try
            {
                // get basket
                BasketCart basketCart = await _basketRepository.GetBasket(basketCheckout.UserName);

                if (basketCart == null)
                {
                    return(BadRequest());
                }

                // remove basket
                // bool result = await _basketRepository.DeleteBasket(basketCheckout.UserName);
                //
                // if (result == false)
                // {
                //     return BadRequest();
                // }

                BasketCheckoutEvent basketCheckoutEvent = basketCheckout.Adapt <BasketCheckoutEvent>();
                basketCheckoutEvent.RequestId  = Guid.NewGuid();
                basketCheckoutEvent.TotalPrice = basketCart.TotalPrice.ToString(CultureInfo.InvariantCulture);

                try
                {
                    _eventBus.PublishBasketCheckout(EventBusConstant.BasketCheckoutQueue, basketCheckoutEvent);
                }
                catch (Exception)
                {
                    throw;
                }


                return(Accepted());
            }
            catch (Exception)
            {
                return(BadRequest());
            }
        }
Exemplo n.º 7
0
        public async Task <ActionResult <BasketCheckout> > Checkout(BasketCheckout b)
        {
            var en = await _repository.GetBasketAsync(b.UserName);

            if (en is null)
            {
                return(NotFound("There is no such basket for this user."));
            }
            var isDeleted = await _repository.DeleteAsync(b.UserName);

            if (!isDeleted)
            {
                return(BadRequest("Deletion is unsuccessful."));
            }
            var p = _mapper.Map <BasketCheckoutEvent>(b);

            p.RequestId  = Guid.NewGuid();
            p.TotalPrice = b.TotalPrice;
            _eventBus.PublishBasketCheckout(EventBusEnum.BASKET_CHECKOUT_QUEUE, p);
            return(Accepted());
        }
        public async Task <IActionResult> CheckOut([FromBody] BasketCheckout basketCheckout)
        {
            // get total price of basket
            // remove the basket
            // send checkout event to RabbitMQ

            var basket = await _repository.GetBasket(basketCheckout?.UserName);

            if (basket is null)
            {
                return(BadRequest());
            }

            var basketRemoved = await _repository.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 e)
            {
                Console.WriteLine(e);
                throw;
            }

            return(Accepted());
        }