Пример #1
0
        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));
        }
Пример #2
0
        public async Task <IActionResult> GetAllBySubject([FromQuery] GetPagingBySubjectRequest request)
        {
            var courses = await _courseService.GetAllBySubject(request);

            return(Ok(courses));
        }