示例#1
0
        public async Task <APIResponse> GetProducts(ProductParameters cartParameters)
        {
            try
            {
                var client = httpClientFactory.CreateClient(ECommerceServiceOperation.serviceName);

                UriBuilder url = new UriBuilder(servicesConfig.ECommerce + ECommerceServiceOperation.GetProducts());
                url.Query = QueryStringHelper.ConvertToQueryString(cartParameters);

                var response = await client.GetAsync(url.ToString());


                if (response.IsSuccessStatusCode)
                {
                    var products = JsonConvert.DeserializeObject <List <ProductResponse> >(await response.Content.ReadAsStringAsync());
                    foreach (var item1 in products)
                    {
                        byte[] b = System.IO.File.ReadAllBytes(item1.Image);
                        item1.Image = Convert.ToBase64String(b);
                    }
                    return(new APIResponse(products, HttpStatusCode.OK));
                }

                return(new APIResponse(response.StatusCode));
            }
            catch (Exception ex)
            {
                logger.Error(ex, "Exception in method 'GetMultiDetails()'");
                var exMessage = ex.InnerException != null ? ex.InnerException.Message : ex.Message;
                return(new APIResponse(exMessage, HttpStatusCode.InternalServerError));
            }
        }
示例#2
0
        public PagedList <Product> GetProducts(ProductParameters param)
        {
            IQueryable <Product> beforePaging;

            if (param.Category == -1)
            {
                beforePaging = (from product in products
                                where (param.Tags.Count() == 0 ? true : product.ContainsTags(param.Tags))
                                select product).Distinct();
            }
            else
            {
                beforePaging = (from product in products
                                join link in productCategories on product.Id equals link.ProductId
                                join cat1 in categoryTree on link.CategoryId equals cat1.Id
                                join cat2 in categoryTree on cat1.ParentId equals cat2.Id into pc2
                                from subcat2 in pc2.DefaultIfEmpty(new Category()
                {
                    Name = cat1.Name, ParentId = cat1.Id
                })
                                join cat3 in categoryTree on subcat2.ParentId equals cat3.Id into pc3
                                from subcat3 in pc3.DefaultIfEmpty(new Category()
                {
                    Name = cat1.Name, ParentId = cat1.Id
                })
                                where (((cat1.Id == param.Category) ||
                                        (subcat2.Id == param.Category) ||
                                        (subcat3.Id == param.Category)) &&
                                       (param.Tags.Count() == 0 ? true : product.ContainsTags(param.Tags)))
                                select product).Distinct();
            }
            beforePaging = beforePaging.OrderBy(param.OrderBy);

            return(new PagedList <Product>(beforePaging, param.PageNumber, param.PageSize));
        }
示例#3
0
        public void GetWithPaginering()
        {
            var target = new ProductsController(this._EFProductRepository, this._MockMapper);

            // The HeaderDictionary is needed for adding HTTP headers to the response.
            var headerDictionary = new HeaderDictionary();
            var response         = new Mock <HttpResponse>();

            response.SetupGet(r => r.Headers).Returns(headerDictionary);
            var httpContext = new Mock <HttpContext>();

            httpContext.SetupGet(a => a.Response).Returns(response.Object);

            target.ControllerContext = new ControllerContext()
            {
                HttpContext = httpContext.Object
            };

            var productParameters = new ProductParameters {
                PageNumber = 2, PageSize = 2
            };
            var okResult = target.Get(productParameters) as OkObjectResult;
            var products = (List <ReturnProductDto>)okResult.Value;

            Assert.Equal(200, okResult.StatusCode);
            Assert.Equal("TestProduct01", products.FirstOrDefault().Name.ToString());
        }
        public async Task <ActionResult <IEnumerable <Shared.Models.Product> > > Get([FromQuery] ProductParameters productParameters)
        {
            var products = await _dbContext.Products
                           .Search(productParameters.SearchTerm)
                           .Sort(productParameters.OrderBy)
                           .Select(p => new Shared.Models.Product
            {
                Id          = p.Id,
                Name        = p.Name,
                Description = p.Description,
                ImageUrl    = p.ImageUrl,
                Price       = p.Price,
                Supplier    = p.Supplier
            })
                           .ToListAsync();

            var pagedList = PagedList <Shared.Models.Product> .ToPagedList(
                products,
                productParameters.PageNumber,
                productParameters.PageSize);

            Response.Headers.Add("X-Pagination", JsonSerializer.Serialize(pagedList.MetaData));

            return(Ok(pagedList));
        }
        //public IActionResult Index(int page = 1)
        //{
        //    IEnumerable<Product> productList = _unitOfWork.Product.GetAll(includeProperties: "Category,Supplier");

        //    //var model = PagingList.Create(productList, 2, page);

        //    var claimsIdentity = (ClaimsIdentity)User.Identity;
        //    var claim = claimsIdentity.FindFirst(ClaimTypes.NameIdentifier);

        //    if (claim != null)
        //    {
        //        var count = _unitOfWork.ShoppingCart.GetAll(c => c.ApplicationUserId == claim.Value).ToList().Count();

        //        HttpContext.Session.SetInt32(SD.ssShoppingCart, count);
        //    }

        //    return View(productList);
        //}
        public IActionResult Index([FromQuery] ProductParameters productParameters)
        {
            //var productList = _unitOfWork.Product.GetAll(includeProperties: "Category,Supplier");
            //if (!string.IsNullOrWhiteSpace(productParameters.searchTerm))
            //productList= _unitOfWork.Product.Search(productParameters.searchTerm).ToList();
            ViewData["SearchTerm"] = productParameters.SearchTerm;
            ViewData["OrderPrice"] = productParameters.OrderPrice;
            var productList = _unitOfWork.Product.GetProducts(productParameters);

            foreach (var product in productList)
            {
                product.Supplier      = new Supplier();
                product.Supplier.Name = _unitOfWork.Supplier.GetFirstOrDefault(s => s.Id == product.SupplierId).Name;
                var productImages = _unitOfWork.ProductImages.GetAll(i => i.ProductId == product.Id).ToList();
                product.ImageUrl = productImages;
            }

            //Response.Headers.Add("X-Pagination", JsonConvert.SerializeObject(productList.MetaData));
            //var model = PagingList.Create(productList, 2, productParameters.PageNumber);

            var claimsIdentity = (ClaimsIdentity)User.Identity;
            var claim          = claimsIdentity.FindFirst(ClaimTypes.NameIdentifier);

            if (claim != null)
            {
                var count = _unitOfWork.ShoppingCart.GetAll(c => c.ApplicationUserId == claim.Value).ToList().Count();

                HttpContext.Session.SetInt32(SD.ssShoppingCart, count);
            }
            return(View(productList));
        }