예제 #1
0
        public async Task <BaseResponseDto <Basket> > Handle(GetBasketRequest request, CancellationToken cancellationToken)
        {
            BaseResponseDto <Basket> response = new BaseResponseDto <Basket>();

            try
            {
                var basket = await _repository.Where(p => p.UserName == request.UserName)
                             .Include(p => p.Items)
                             .FirstOrDefaultAsync(cancellationToken);

                if (basket != null)
                {
                    response.Data = basket;
                }
                else
                {
                    response.Errors.Add("No Basket for this UserName was found.");
                }
            }
            catch (Exception exception)
            {
                Console.WriteLine(exception);
                response.Data = null;
                response.Errors.Add(exception.Message);
            }

            return(response);
        }
        public ActionResult Checkout()
        {
            GetCustomerRequest customerRequest = new GetCustomerRequest()
            {
                CustomerIdentityToken = _formsAuthentication.GetAuthenticationToken()
            };

            GetCustomerResponse customerResponse =
                _customerService.GetCustomer(customerRequest);
            CustomerView customerView = customerResponse.Customer;


            if (customerView.DeliveryAddressBook.Count() > 0)
            {
                OrderConfirmationView orderConfirmationView =
                    new OrderConfirmationView();
                GetBasketRequest getBasketRequest = new GetBasketRequest()
                {
                    BasketId = base.GetBasketId()
                };

                GetBasketResponse basketResponse =
                    _basketService.GetBasket(getBasketRequest);

                orderConfirmationView.Basket            = basketResponse.Basket;
                orderConfirmationView.DeliveryAddresses =
                    customerView.DeliveryAddressBook;

                return(View("ConfirmOrder", orderConfirmationView));
            }

            return(AddDeliveryAddress());
        }
예제 #3
0
        public async Task <IActionResult> Checkout()
        {
            GetCustomerRequest customerRequest = new GetCustomerRequest
            {
                CustomerEmail = _cookieAuthentication.GetAuthenticationToken()
            };
            GetCustomerResponse customerResponse = _customerService.GetCustomer(customerRequest);

            if (customerResponse.CustomerFound)
            {
                CustomerView customerView = customerResponse.Customer;

                if (customerView.DeliveryAddressBook.Any())
                {
                    OrderConfirmationView orderConfirmationView = new OrderConfirmationView();
                    GetBasketRequest      getBasketRequest      = new GetBasketRequest
                    {
                        BasketId = GetBasketId()
                    };
                    GetBasketResponse basketResponse = _basketService.GetBasket(getBasketRequest);
                    orderConfirmationView.Basket            = basketResponse.Basket;
                    orderConfirmationView.DeliveryAddresses = customerView.DeliveryAddressBook;

                    return(View("ConfirmOrder", orderConfirmationView));
                }

                return(AddDeliveryAddress());
            }
            else
            {
                await _cookieAuthentication.SignOut();

                return(RedirectToAction("Register", "AccountRegister"));
            }
        }
        public OrderConfirmationView getOrderConfirmationView()
        {
            GetCustomerRequest customerRequest = new GetCustomerRequest()
            {
                CustomerIdentityToken = _formsAuthentication.GetAuthenticationToken()
            };

            GetCustomerResponse customerResponse =
                _customerService.GetCustomer(customerRequest);
            CustomerView customerView = customerResponse.Customer;


            OrderConfirmationView orderConfirmationView =
                new OrderConfirmationView();
            GetBasketRequest getBasketRequest = new GetBasketRequest()
            {
                BasketId = base.GetBasketId()
            };

            GetBasketResponse basketResponse =
                _basketService.GetBasket(getBasketRequest);

            orderConfirmationView.Basket            = basketResponse.Basket;
            orderConfirmationView.DeliveryAddresses =
                customerView.DeliveryAddressBook;

            return(orderConfirmationView);
        }
예제 #5
0
        public async Task <IActionResult> GetBasket([FromQuery] GetBasketRequest request)
        {
            // some logic ...
            await Task.Delay(1000);

            return(Ok(request));
        }
예제 #6
0
        public ActionResult <OrderConfirmationView> Checkout()
        {
            var customerRequest = new GetCustomerRequest()
            {
                CustomerIdentityToken = _formsAuthentication.GetAuthenticationToken(HttpContext.User)
            };

            var customerResponse = _customerService.GetCustomer(customerRequest);
            var customerView     = customerResponse.Customer;


            if (customerView.DeliveryAddressBook.Count() > 0)
            {
                var orderConfirmationView = new OrderConfirmationView();
                var getBasketRequest      = new GetBasketRequest()
                {
                    BasketId = base.GetBasketId()
                };

                var basketResponse = _basketService.GetBasket(getBasketRequest);

                orderConfirmationView.Basket            = basketResponse.Basket;
                orderConfirmationView.DeliveryAddresses = customerView.DeliveryAddressBook;

                return(orderConfirmationView);
            }

            return(AddDeliveryAddress().Result);
        }
예제 #7
0
        public override async Task <BasketCustomerResponse> GetBasket(GetBasketRequest request, ServerCallContext context)
        {
            _logger.LogInformation("Calling GetBasket");

            var basket = await GetBasketCustomer() ?? new BasketCustomer();

            return(MapBasketCustomerResponse(basket));
        }
예제 #8
0
        public async Task <IActionResult> Get(int userId)
        {
            var request = new GetBasketRequest {
                UserId = userId
            };
            var response = await _mediator.Send(request);

            return(Ok(response));
        }
예제 #9
0
        public async Task <IActionResult> Get(Guid id)
        {
            var request = new GetBasketRequest {
                Id = id
            };
            var basket = await _mediator.Send(request);

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

            return(Ok(basket));
        }
        public void GetCacheKeyTest()
        {
            var request = new GetBasketRequest
            {
                Id            = 4711,
                PricelistSeed = "1,2",
                CultureCode   = "sv",
                CurrencyId    = "2"
            };

            var key = request.GetCacheKey();

            Assert.AreEqual("GetBasket:4711:1,2:sv:2:", key);
        }
예제 #11
0
        public IActionResult Detail()
        {
            BasketDetailView basketView    = new BasketDetailView();
            Guid             basketId      = GetBasketId();
            GetBasketRequest basketRequest = new GetBasketRequest()
            {
                BasketId = basketId
            };
            GetBasketResponse             basketResponse          = _basketService.GetBasket(basketRequest);
            GetAllDispatchOptionsResponse dispatchOptionsResponse = _basketService.GetAllDispatchOptions();

            basketView.Basket          = basketResponse.Basket;
            basketView.Categories      = GetCategories();
            basketView.BasketSummary   = GetBasketSummaryView();
            basketView.DeliveryOptions = dispatchOptionsResponse.DeliveryOptions;

            return(View("View", basketView));
        }
예제 #12
0
        public GetBasketResponse GetBasket(GetBasketRequest basketRequest)
        {
            GetBasketResponse response   = new GetBasketResponse();
            Basket            basket     = _basketRepository.FindBy(basketRequest.BasketId);
            BasketView        basketView = null;

            if (basket != null)
            {
                basketView = _mapper.Map <Basket, BasketView>(basket);
            }
            else
            {
                basketView = new BasketView();
            }

            response.Basket = basketView;

            return(response);
        }
        public ActionResult <BasketDetailView> Detail()
        {
            var basketView = new BasketDetailView();
            var basketId   = base.GetBasketId();

            var basketRequest = new GetBasketRequest()
            {
                BasketId = basketId
            };
            var basketResponse = _basketService.GetBasket(basketRequest);

            var dispatchOptionsResponse = _basketService.GetAllDispatchOptions();

            basketView.Basket          = basketResponse.Basket;
            basketView.Categories      = base.GetCategories();
            basketView.BasketSummary   = base.GetBasketSummaryView();
            basketView.DeliveryOptions = dispatchOptionsResponse.DeliveryOptions;

            return(basketView);
        }
        public GetBasketResponse GetBasket(GetBasketRequest request)
        {
            GetBasketResponse response = new GetBasketResponse();

            Basket     basket = _basketRepository.FindBy(request.BasketId);
            BasketView basketView;

            if (basket != null)
            {
                basketView = basket.ConvertToBasketView();
            }
            else
            {
                basketView = new BasketView();
            }

            response.Basket = basketView;

            return(response);
        }
예제 #15
0
        /// <summary>
        /// Kullanıcının sepet bilgilerini çeker. Cache'de bilgi yok ise DB'den getir
        /// </summary>
        /// <param name="request"></param>
        /// <param name="cancellationToken"></param>
        /// <returns></returns>
        public async Task <List <BasketDto> > Handle(GetBasketRequest request, CancellationToken cancellationToken)
        {
            //ToDo: Cache ile kontrol edilebilir.
            var anyUser = await _userRepo.AnyAsync(p => p.Id == request.UserId);

            if (!anyUser)
            {
                throw new ArgumentNullException("User Id not found.");//ToDo: Bu hata alındığında, bu UserId ile kayıtlı sepet verileri kaldırılabilir.(In-Progress event ile)
            }
            string basketCacheKey = CacheKeyTemplate.BASKET_ID_KEY_TEMPLATE.Replace("#UserId#", request.UserId.ToString());

            var basketItems = _cacheManager.Get <List <Basket> >(basketCacheKey);

            if (basketItems == null || basketItems.Count <= 0)
            {
                var result = await _basketRepo.WhereAsync(p => p.UserId == request.UserId);

                basketItems = result.ToList();
            }

            var basketDtos = basketItems.Select(s => _mapManager.Map <Basket, BasketDto>(s)).ToList();

            return(basketDtos);
        }
예제 #16
0
        public GetBasketResponse GetBasket(GetBasketRequest request)
        {
            var response = new GetBasketResponse();

            var basket = _basketRepository.FindBy(request.BasketId);

            BasketView basketView;

            if (basket == null)
            {
                throw new BasketDoesNotExistException();
            }

            basketView = basket.ToBasketView();

            //if (basket != null)
            //    basketView = basket.ToBasketView();
            //else
            //    basketView = new BasketView();

            response.Basket = basketView;

            return(response);
        }
예제 #17
0
 public async Task <BaseResponseDto <Basket> > GetBasketAsync(GetBasketRequest request)
 {
     return(await _mediator.Send(request));
 }