public async Task <ApiResult <PagedResult <CourseVm> > > GetAllBySubject(GetPagingBySubjectRequest request) { var query = from c in _context.Courses join t in _context.Teachers on c.Id_Teacher equals t.Id join s in _context.Subjects on c.Id_Subject equals s.Id_Subject where s.Id_Subject == request.Id_Subject select new { c, t, s }; //filter if (!string.IsNullOrEmpty(request.Keyword)) { query = query.Where(x => x.c.Name.Contains(request.Keyword) || x.t.FullName.Contains(request.Keyword) || x.s.Name.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 CourseVm() { Id_Course = x.c.Id_Course, Name = x.c.Name, NameTeacher = x.t.FullName, NameSubject = x.s.Name, DateBegin = x.c.DateBegin, DateEnd = x.c.DateEnd, Semester = x.c.Semester, SchoolYear = x.c.SchoolYear, DateCreate = x.c.DateCreate, DateUpdate = x.c.DateUpdate, }).ToListAsync(); var pagedResult = new PagedResult <CourseVm>() { TotalRecords = totalRow, PageSize = request.PageSize, PageIndex = request.PageIndex, Items = data }; return(new ApiSuccessResult <PagedResult <CourseVm> >(pagedResult)); }
public async Task <IActionResult> GetAllBySubject([FromQuery] GetPagingBySubjectRequest request) { var courses = await _courseService.GetAllBySubject(request); return(Ok(courses)); }