public async Task <ApiResult <PagedResult <SubjectVm> > > GetAllPaging(GetSubjectPagingRequest request)
        {
            var query = from s in _context.Subjects
                        select new { s };

            //filter
            if (!string.IsNullOrEmpty(request.Keyword))
            {
                query = query.Where(x => x.s.Name.Contains(request.Keyword) || x.s.Description.Contains(request.Keyword));
            }

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

            var data = await query.Skip((request.PageIndex - 1) *request.PageSize)
                       .Take(request.PageSize)
                       .Select(x => new SubjectVm()
            {
                Id_Subject      = x.s.Id_Subject,
                Name            = x.s.Name,
                Description     = x.s.Description,
                NumberOfCredits = x.s.NumberOfCredits,
                Lesson          = x.s.Lesson,
                DateCreate      = x.s.DateCreate,
                DateUpdate      = x.s.DateUpdate,
            }).ToListAsync();

            var pagedResult = new PagedResult <SubjectVm>()
            {
                TotalRecords = totalRow,
                PageSize     = request.PageSize,
                PageIndex    = request.PageIndex,
                Items        = data
            };

            return(new ApiSuccessResult <PagedResult <SubjectVm> >(pagedResult));
        }
Exemple #2
0
        public async Task <IActionResult> GetAll([FromQuery] GetSubjectPagingRequest request)
        {
            var subject = await _subjectService.GetAllPaging(request);

            return(Ok(subject));
        }