public override async Task <InsertItemToNewCartResponse> InsertItemToNewCart(InsertItemToNewCartRequest request,
                                                                                     ServerCallContext context)
        {
            try
            {
                var cartCommander = _commandFactory.RepositoryAsync <Domain.Cart>();

                var cart = await Domain.Cart.Load()
                           .InsertItemToCart(request.ProductId.ConvertTo <Guid>(), request.Quantity)
                           .CalculateCartAsync(
                    TaxType.NoTax,
                    _catalogGateway,
                    _promoGateway,
                    _shippingGateway);

                await cartCommander.AddAsync(cart);

                return(new InsertItemToNewCartResponse {
                    Result = cart.ToDto()
                });
            }
            catch (Exception ex)
            {
                _logger.LogError(ex.Message);
                throw new RpcException(new Status(StatusCode.Internal, ex.Message));
            }
        }
        public async Task <GetCartByIdResponse> CreateCartAsync(InsertItemToNewCartRequest request)
        {
            string endPoint = $"{_cartServiceUri}/api/v1/carts";

            RestClient.SetOpenTracingInfo(request.Headers);
            var response = await RestClient.PostAsync <GetCartByIdResponse>(endPoint, request);

            return(response);
        }
Exemple #3
0
        public async Task <ActionResult <GetCartByIdResponse> > CreateCart([FromBody] InsertItemToNewCartRequest request)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(new
                {
                    Message = "ModelState is not valid. Check the ModelState property for specific errors.",
                    StatusCode = 400,
                    ModelState
                }));
            }

            request.Headers = HttpContext.Request.GetOpenTracingInfo();
            var response = await _cartService.CreateCartAsync(request);

            return(Ok(response));
        }
Exemple #4
0
        public override async Task <InsertItemToNewCartResponse> InsertItemToNewCart(InsertItemToNewCartRequest request,
                                                                                     ServerCallContext context)
        {
            try
            {
                var cartCommander = _commandFactory.RepositoryAsync <Domain.Cart>();

                var cart = await Domain.Cart.Load()
                           .InsertItemToCart(request.ProductId.ConvertTo <Guid>(), request.Quantity)
                           .CalculateCartAsync(
                    TaxType.NoTax,
                    _catalogGateway,
                    _promoGateway,
                    _shippingGateway);

                await cartCommander.AddAsync(cart);

                await _commandFactory.SaveChangesAsync(default);
Exemple #5
0
        public async Task <GetCartByIdResponse> InsertItemToCartAsync(InsertItemToNewCartRequest request)
        {
            var cart = new Domain.Cart();

            cart.InsertItemToCart(new CartItem
            {
                Product      = new Product(request.ProductId),
                PromoSavings = 0.0D,
                Quantity     = request.Quantity
            });

            cart = await InitCart(cart, populatePrice : true);

            cart = PriceCalculatorContext.Execute(cart);

            await _mutateRepository.AddAsync(cart);

            return(GetCartByIdResponse(cart));
        }
 //[Auth(Policy = "access_cart_api")]
 public async Task <IActionResult> Create(InsertItemToNewCartRequest request)
 {
     return(Ok(await _cartServiceClient.InsertItemToNewCartAsync(request)));
 }
        public async Task <GetCartByIdResponse> Create([FromBody] InsertItemToNewCartRequest request)
        {
            var cart = await _cartService.InsertItemToCartAsync(request);

            return(await _cartService.GetCartByIdAsync(cart.Id));
        }
 public async Task <IActionResult> Create([FromServices] IMediator eventor, InsertItemToNewCartRequest request, CancellationToken cancellationToken) =>
 await eventor.SendStream <InsertItemToNewCartRequest, InsertItemToNewCartResponse>(request, x => x.Result);