public async Task <ApiResult <PagedResult <MaterialVm> > > GetUsersPaging(GetMaterialPagingRequest bundle) { var url = $"/api/Material/paging?pageIndex=" + $"{bundle.PageIndex}&pageSize={bundle.PageSize}&keyword={bundle.Keyword}&materialType={bundle.MaterialType}"; var result = await GetListAsync <MaterialVm>(url); return(result); }
public async Task <ApiResult <PagedResult <MaterialVm> > > GetUsersPaging(GetMaterialPagingRequest bundle) { var query = from s in _context.Materials join g in _context.MaterialsTypes on s.IdMaterialsType equals g.Id join d in _context.Packs on s.Id equals d.IdMaterials where d.Default == true select new { s, g, d }; if (bundle.MaterialType > 0) { query = query.Where(x => x.g.Id == bundle.MaterialType); } if (!string.IsNullOrEmpty(bundle.Keyword)) { query = query.Where(c => c.s.Name.Contains(bundle.Keyword) || c.s.Code.Contains(bundle.Keyword)); } //3. Paging int totalRow = await query.CountAsync(); query = query.OrderByDescending(c => c.s.Id); var data = await query.Skip((bundle.PageIndex - 1) *bundle.PageSize) .Take(bundle.PageSize) .Select(i => new MaterialVm() { Id = i.s.Id, Code = i.s.Code, Name = i.s.Name, Image = i.s.Image, Amount = i.s.Amount, Reminder = i.s.Reminder, NamePackDefault = i.d.Name, NameMaterialType = i.g.Name, AmountPercent = i.s.Max != null ? (int)(((double)i.s.Amount / (double)i.s.Max) * 100) : 0 }).ToListAsync(); //4. Select and projection var pagedResult = new PagedResult <MaterialVm>() { TotalRecords = totalRow, PageIndex = bundle.PageIndex, PageSize = bundle.PageSize, Items = data }; return(new ApiSuccessResult <PagedResult <MaterialVm> >(pagedResult)); }
public async Task <IActionResult> Index(string keyword, int materialType, int pageIndex = 1, int pageSize = 3) { var request = new GetMaterialPagingRequest() { Keyword = keyword, MaterialType = materialType, PageIndex = pageIndex, PageSize = pageSize }; var data = await _materialApiClient.GetUsersPaging(request); ViewBag.Keyword = keyword; return(View(data.ResultObj)); }
public async Task <IActionResult> GetAllPaging([FromQuery] GetMaterialPagingRequest request) { var result = await _materialService.GetUsersPaging(request); return(Ok(result)); }