public async Task <IActionResult> GetTopSelling(string LanguageId, [FromQuery] GetProductPaggingRequest request)
        {
            request.LanguageId = LanguageId;
            var products = await _ProductService.GetTopSelling(request);

            return(Ok(products));
        }
        public async Task <IActionResult> IndexAsync(int productId)
        {
            var paggingRequest = new GetProductPaggingRequest()
            {
                LanguageId = languageDefauleId,
            };
            var products = await _productServive.getAllPagging(paggingRequest);

            var images = await _imageProductServive.GetListImage(productId);

            var productSelected = products.ResultObject.Items.FindIndex(x => x.Id == productId);

            if (productSelected != -1)
            {
                SwapGeneric <ProductViewModel> .Swap(products.ResultObject.Items, productSelected, 0);
            }
            ViewData["categories"] = await GetListCategoryAsync(languageDefauleId);

            ViewData["products"] = products.ResultObject.Items;
            ViewData["images"]   = images.ResultObject;
            return(View());
        }
        public async Task <PagedResult <ProductVm> > GetAllByCategoryId(string languageId, GetProductPaggingRequest request)
        {
            //1. Select Join
            var query = from p in _context.Products
                        join pt in _context.ProductTranslations on p.Id equals pt.ProductId
                        join pic in _context.ProductInCategories on p.Id equals pic.ProductId
                        join c in _context.Categories on pic.CategoryId equals c.Id
                        where pt.LanguageId == languageId
                        select new { p, pt, pic };

            //2. Filter

            if (request.CategoryId.HasValue && request.CategoryId.Value > 0)
            {
                query = query.Where(p => p.pic.CategoryId == request.CategoryId);
            }
            //3. Paging
            int totalRow = await query.CountAsync();

            var data = await query.Skip((request.pageIndex - 1) *request.pageSize)
                       .Take(request.pageSize)
                       .Select(x => new ProductVm()
            {
                Id             = x.p.Id,
                Name           = x.pt.Name,
                DateCreated    = x.p.DateCreated,
                Description    = x.pt.Description,
                Details        = x.pt.Details,
                LanguageId     = x.pt.LanguageId,
                OriginalPrice  = x.p.OriginalPrice,
                Price          = x.p.Price,
                SeoAlias       = x.pt.SeoAlias,
                SeoDescription = x.pt.SeoDescription,
                SeoTitle       = x.pt.SeoTitle,
                Stock          = x.p.Stock,
                ViewCount      = x.p.ViewCount
            }).ToListAsync();

            //4. Select and projection
            var pagedResult = new PagedResult <ProductVm>()
            {
                TotalRecords = totalRow,
                PageSize     = request.pageSize,
                PageIndex    = request.pageIndex,
                Items        = data
            };

            return(pagedResult);
        }
        public async Task <IActionResult> GetByCategoryUrl(string LanguageId, [FromQuery] GetProductPaggingRequest request)
        {
            var products = await _ProductService.GetAllByCategoryUrl(request, LanguageId);

            return(Ok(products));
        }
Example #5
0
        public async Task <ApiResult <PageViewModel <ProductViewModel> > > GetAllByCategoryUrl(GetProductPaggingRequest request, string LanguageId)
        {
            //Select
            var query = from p in _context.Products
                        join img in _context.ProductImages on p.Id equals img.ProductId
                        where img.IsDefault == true
                        join pt in _context.ProductTranslations on p.Id equals pt.ProductId
                        join l in _context.Languages on pt.LanguageId equals l.Id
                        join c in _context.Categories on p.CategoryId equals c.Id
                        join ct in _context.CategoryTranslations on c.Id equals ct.CategoryId
                        where ct.CategoryUrl == request.CategoryUrl &&
                        pt.LanguageId == LanguageId
                        select new { p, pt, c, l, img, ct };

            //filter
            if (!String.IsNullOrEmpty(request.Keyword))
            {
                query = query.Where(x => x.pt.Name.Contains(request.Keyword));
            }


            //Pagging
            int totalRow = await query.CountAsync();

            if (request.PageIndex == 0 || request.PageSize == 0)
            {
                var data = await query
                           .Select(x => new ProductViewModel()
                {
                    Id            = x.p.Id,
                    Name          = x.pt.Name,
                    Created_At    = x.p.Created_At,
                    Description   = x.pt.Description,
                    LanguageId    = x.pt.LanguageId,
                    OriginalPrice = x.p.OriginalPrice,
                    Price         = x.p.Price,
                    Stock         = x.p.Stock,
                    CategoryId    = x.c.Id,
                    ProductUrl    = x.pt.ProductUrl,
                    Language      = x.l.Name,
                    ImagePath     = x.img.ImagePath,
                    categoryUrl   = x.ct.CategoryUrl
                }).ToListAsync();

                //Select and  projection
                var pageViewModel = new PageViewModel <ProductViewModel>()
                {
                    TotalRecords = totalRow,
                    Items        = data
                };

                return(new ApiResultSuccess <PageViewModel <ProductViewModel> >(pageViewModel));
            }
            else
            {
                var data = await query.Skip((request.PageIndex - 1) *request.PageSize).Take(request.PageSize)
                           .Select(x => new ProductViewModel()
                {
                    Id            = x.p.Id,
                    Name          = x.pt.Name,
                    Created_At    = x.p.Created_At,
                    Description   = x.pt.Description,
                    LanguageId    = x.pt.LanguageId,
                    OriginalPrice = x.p.OriginalPrice,
                    Price         = x.p.Price,
                    Stock         = x.p.Stock,
                    CategoryId    = x.c.Id,
                    ProductUrl    = x.pt.ProductUrl,
                    Language      = x.l.Name,
                    ImagePath     = x.img.ImagePath
                }).ToListAsync();

                //Select and  projection
                var pageViewModel = new PageViewModel <ProductViewModel>()
                {
                    TotalRecords = totalRow,
                    Items        = data
                };

                return(new ApiResultSuccess <PageViewModel <ProductViewModel> >(pageViewModel));
            }
        }
Example #6
0
        public async Task <ApiResult <PageViewModel <ProductViewModel> > > GetTopSelling(GetProductPaggingRequest request)
        {
            var query = from OrderDetails in _context.OrderDetails
                        group OrderDetails by new
            {
                OrderDetails.ProductId
            } into g
            orderby
                (int?) g.Sum(p => p.Quantity) descending
            select new
            {
                g.Key.ProductId,
                SL = (int?)g.Sum(p => p.Quantity)
            } into t
            join p in _context.Products on t.ProductId equals p.Id
            join pt in _context.ProductTranslations on p.Id equals pt.ProductId
            where pt.LanguageId
            == request.LanguageId
            join img in _context.ProductImages on p.Id equals img.ProductId
            where img.IsDefault == true
                select new
            {
                t,
                pt,
                img,
                p
            };
            var data = await query.Take(request.PageSize)
                       .Select(x => new ProductViewModel()
            {
                Id            = x.p.Id,
                Name          = x.pt.Name,
                Created_At    = x.p.Created_At,
                Description   = x.pt.Description,
                LanguageId    = x.pt.LanguageId,
                OriginalPrice = x.p.OriginalPrice,
                Price         = x.p.Price,
                Stock         = x.p.Stock,
                ProductUrl    = x.pt.ProductUrl,
                ImagePath     = x.img.ImagePath
            }).ToListAsync();

            var pageViewModel = new PageViewModel <ProductViewModel>()
            {
                TotalRecords = request.PageSize,
                Items        = data
            };

            return(new ApiResultSuccess <PageViewModel <ProductViewModel> >(pageViewModel));
        }
 public Task <ApiResult <PageViewModel <ProductViewModel> > > GetAllByCategoryId(GetProductPaggingRequest request, string LanguageId)
 {
     throw new NotImplementedException();
 }
        public async Task <ApiResult <PageViewModel <ProductViewModel> > > getAllPagging(GetProductPaggingRequest request)
        {
            //https://locahost:port/products/?PageIndex=1&pageSize=1&categoryId=1
            var response = await _client.GetAsync($"/api/products/{request.LanguageId}");

            using (HttpContent content = response.Content)
            {
                //convert data content to string using await
                var data = await content.ReadAsStringAsync();

                //If the data is not null, parse(deserialize) the data to a C# object
                if (data != null)
                {
                    if (response.IsSuccessStatusCode)
                    {
                        return(JsonConvert.DeserializeObject <ApiResultSuccess <PageViewModel <ProductViewModel> > >(data));
                    }
                    return(JsonConvert.DeserializeObject <ApiResultErrors <PageViewModel <ProductViewModel> > >(data));
                }
                else
                {
                    return(null);
                }
            }
        }