public async Task <List <ProductViewModel> > Paging(ProductPagingRequest request)
        {
            var data = await _context.products.Where(x => x.status == ActionStatus.Display)
                       .Select(rs => new ProductViewModel
            {
                id          = rs.id,
                name        = rs.name,
                price       = rs.price,
                importPrice = rs.importPrice,
                sale        = rs.sale,
                categoryId  = rs.categoryId,
                category    = rs.category,
                color       = rs.color,
                size        = rs.size,
                amount      = rs.amount,
                viewCount   = rs.viewCount,
                description = rs.description,
                Evaluations = rs.Evaluations,
                Images      = rs.Images.Where(p => p.status == ActionStatus.Display).ToList(),
                rating      = Convert.ToInt32(rs.Evaluations.Average(ave => ave.rating)),
                provider    = rs.provider,
                providerId  = rs.providerId,
                status      = rs.status
            }).Skip((request.pageCurrent - 1) * request.pageSize).Take(request.pageSize).ToListAsync();

            return(data);
        }
        public async Task <PagedResult <ProductViewModel> > GetAllPaging(ProductPagingRequest request)
        {
            //// select
            //var query = from p in _context.Products
            //            select p;
            //// Filter
            //if (string.IsNullOrEmpty(request.KeyWord))
            //{
            //    query.Where(x => x.Name.Contains(request.KeyWord));
            //}

            //var rowCount = await query.CountAsync();

            //// Paging
            //var data = await query.Skip((request.pageIndex - 1) * request.pageSize).Take(request.pageSize).
            //    Select(x => new ProductViewModel
            //    {
            //        Id = x.Id,
            //        Description = x.Description,
            //        Price = x.Price,
            //        Name = x.Name,
            //        SeoAlias = x.SeoAlias,
            //        DateCreated = x.DateCreated

            //    }).ToListAsync();

            //var pageCount = (int)Math.Ceiling(rowCount /(double)request.pageSize);
            //var pagedResult = new PagedResult<ProductViewModel>()
            //{
            //    Items = data,
            //    TotalRecord = rowCount,
            //    PageCount = pageCount
            //};

            //return pagedResult;
            var query = (@"SELECT * FROM ""Products""");

            if ((!string.IsNullOrEmpty(request.KeyWord)))
            {
                query = query + (" Where Name = @Name");
            }

            var product = await _connection.QueryAsync <ProductViewModel>(query, new { Name = request.KeyWord });

            query = query + ("  OFFSET   @Offset ROWS FETCH NEXT  @Next  ROWS ONLY");

            var productVm = await _connection.QueryAsync <ProductViewModel>(query, new { Offset = request.pageIndex - 1, Next = request.pageSize, });

            var pagedResult = new PagedResult <ProductViewModel>()
            {
                Items     = productVm,
                PageCount = (int)Math.Ceiling(product.Count() / (double)request.pageSize)
            };

            return(pagedResult);
        }
Esempio n. 3
0
        public async Task <IActionResult> Category(string culture, int id, int pageIndex = 1, int pageSize = 6)
        {
            var productPagingRequest = new ProductPagingRequest()
            {
                LanguageId = culture,
                CategoryId = id,
                PageIndex  = pageIndex,
                PageSize   = pageSize
            };
            var data = await _productApiClient.GetProductPaging(productPagingRequest);

            return(View(data.ResultObj));
        }
Esempio n. 4
0
        public async Task <PageResult <ProductViewModel> > GetProductPaging(ProductPagingRequest request)
        {
            //Select
            var query = from p in context.Products
                        join pc in context.ProductInCategories on p.Id equals pc.ProductId
                        join c in context.Categories on pc.CategoryId equals c.Id
                        where p.Name.Contains(request.Keyword)
                        select new { p };

            //Filter
            if (!string.IsNullOrEmpty(request.Keyword))
            {
                query = query.Where(x => x.p.Name.Contains(request.Keyword));
            }

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

            var data = query.Skip((request.Index - 1) * request.Size).Take(request.Size)
                       .Select(x => new ProductViewModel()
            {
                Id               = x.p.Id,
                Name             = x.p.Name,
                Price            = x.p.Price,
                Description      = x.p.Description,
                AppUser          = x.p.AppUser,
                OrderDetails     = x.p.OrderDetails,
                ProductImages    = x.p.ProductImages,
                DateCreated      = x.p.DateCreated,
                Product_Category = x.p.Product_Category,
                ViewCount        = x.p.ViewCount,
            }).ToListAsync();
            var pageResult = new PageResult <ProductViewModel>()
            {
                TotalRecord = totalRow,
                Items       = data.Result
            };

            return(pageResult);
        }
Esempio n. 5
0
        public async Task<IActionResult> Index(string keyword, int? categoryId,Status? status, int pageIndex = 1, int pageSize = 5)
        {
            var request = new ProductPagingRequest()
            {
                Keyword = keyword,
                PageIndex = pageIndex,
                PageSize = pageSize,
                LanguageId = GetLanguageId(),
                Status = status
            };

            if (categoryId != null)
                request.CategoryId = (int)categoryId;
            ViewBag.Keyword = keyword;
            ViewBag.Status = status;
            List<CategoryViewModel> categories = await _categoryApiClient.GetAll(GetLanguageId());
            ViewBag.Statuss = Enum.GetValues(typeof(Status)).Cast<Status>()
                .Select(x => new SelectListItem()
                {
                    Text = x.ToString(),
                    Value = ((int)x).ToString(),
                    Selected = status.HasValue && status.ToString() == x.ToString()
                }).ToList();

            ViewBag.Categories = categories.Select(x => new SelectListItem()
            {
                Text = x.Name,
                Value = x.Id.ToString(),
                Selected = categoryId.HasValue && categoryId.Value == x.Id
            });

            if (TempData["Result"] != null)
            {
                ViewBag.SuccessMsg = TempData["Result"];
            }
            var data = await _productApiClient.GetProductPaging(request);
            return View(data.ResultObj);
        }
Esempio n. 6
0
        public async Task <IActionResult> GetPagingProduct([FromQuery] ProductPagingRequest request)
        {
            var product = await _product.GetAllPaging(request);

            return(Ok(product));
        }
        public async Task <IActionResult> Paging(ProductPagingRequest request)
        {
            var data = await _productService.Paging(request);

            return(Ok(data));
        }
Esempio n. 8
0
 public async Task <ApiResult <PageResult <ProductViewModel> > > GetProductPaging(ProductPagingRequest request)
 {
     return(await GetAsync <ApiResult <PageResult <ProductViewModel> > >($"/api/Products/{request.CategoryId}/paging?PageIndex=" +
                                                                         $"{request.PageIndex}&PageSize={request.PageSize}&Keyword={request.Keyword}&" +
                                                                         $"LanguageId={request.LanguageId}&" + $"Status={request.Status}"));
 }
Esempio n. 9
0
 public async Task <IActionResult> GetAllPaging(int categoryId, [FromQuery] ProductPagingRequest request)
 {
     request.CategoryId = categoryId;
     return(Ok(await _productService.GetAllPaging(request)));
 }
Esempio n. 10
0
        public async Task <ApiResult <PageResult <ProductViewModel> > > GetAllPaging(ProductPagingRequest request)
        {
            //1.Select
            var query = from p in _context.Products
                        join pt in _context.ProductTranslations on p.Id equals pt.ProductId into ppt
                        from pt in ppt.DefaultIfEmpty()
                        join pic in _context.ProductInCategories on p.Id equals pic.ProductId into ppic
                        from pic in ppic.DefaultIfEmpty()

                        where pt.LanguageId == request.LanguageId

                        select new { p, pt, pic };


            //2.Filter
            //find whit category
            if (request.CategoryId != 0)
            {
                query = query.Where(x => x.pic.CategoryId == request.CategoryId);
            }
            //find whit status
            if (request.Status != null)
            {
                query = query.Where(x => x.p.Status == request.Status);
            }
            //find whit languageId
            query = query.Where(x => x.pt.LanguageId == request.LanguageId || x.pt == null);

            //find whit keyword
            if (!string.IsNullOrEmpty(request.Keyword))
            {
                query = query.Where(x => x.pt.Name.Contains(request.Keyword)).
                        Where(x => x.pt.Details.Contains(request.Keyword)).
                        Where(x => x.pt.Description.Contains(request.Keyword)).
                        Where(x => x.pt.SeoAlias.Contains(request.Keyword)).
                        Where(x => x.pt.SeoDescription.Contains(request.Keyword)).
                        Where(x => x.pt.SeoTitle.Contains(request.Keyword));
            }

            //3.Paging
            int totalRow = await query.CountAsync();

            var data = query.Skip((request.PageIndex - 1) * request.PageSize)
                       .Take(request.PageSize)
                       .Select(x => new ProductViewModel()
            {
                Status         = x.p.Status,
                ProductId      = x.p.Id,
                Name           = string.IsNullOrEmpty(x.pt.Name) ? SystemConstants.NotAvailable : x.pt.Name,
                Description    = string.IsNullOrEmpty(x.pt.Description) ? SystemConstants.NotAvailable : x.pt.Description,
                Details        = string.IsNullOrEmpty(x.pt.Details) ? SystemConstants.NotAvailable : x.pt.Details,
                LanguageId     = x.pt.LanguageId,
                OriginalPrice  = x.p.Price,
                Price          = x.p.Price,
                SeoAlias       = string.IsNullOrEmpty(x.pt.SeoAlias) ? SystemConstants.NotAvailable : x.pt.SeoAlias,
                SeoDescription = string.IsNullOrEmpty(x.pt.SeoDescription) ? SystemConstants.NotAvailable : x.pt.SeoDescription,
                SeoTitle       = string.IsNullOrEmpty(x.pt.SeoTitle) ? SystemConstants.NotAvailable : x.pt.SeoTitle,
                Stock          = x.p.Stock,
                ViewCount      = x.p.ViewCount,
                DateCreated    = x.p.DateCreated,
                ThumbnailImage = $"{SystemConstants.ServerSettings.ServerBackEnd}/" +
                                 $"{FileStorageService.USER_CONTENT_FOLDER_NAME}/{x.p.ThumnailId}"
            }).Distinct().ToListAsync();

            //4.Select and Projection
            var pageResult = new PageResult <ProductViewModel>()
            {
                TotalRecord = totalRow,
                Item        = await data,
                PageIndex   = request.PageIndex,
                PageSize    = request.PageSize,
            };

            return(new ApiSuccessResult <PageResult <ProductViewModel> >(pageResult));
        }