예제 #1
0
        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);
        }
예제 #2
0
        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));
        }
예제 #3
0
        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));
        }
예제 #4
0
        public async Task <IActionResult> GetAllPaging([FromQuery] GetMaterialPagingRequest request)
        {
            var result = await _materialService.GetUsersPaging(request);

            return(Ok(result));
        }