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); }
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)); }
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); }
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); }
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)); }
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}")); }
public async Task <IActionResult> GetAllPaging(int categoryId, [FromQuery] ProductPagingRequest request) { request.CategoryId = categoryId; return(Ok(await _productService.GetAllPaging(request))); }
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)); }