コード例 #1
0
 public virtual async Task<ActionResult> ListAjax(TeacherSearchRequest request)
 {
     var viewModel = await _TeacherService.GetPagedListAsync(request);
     if (viewModel.Teachers == null || !viewModel.Teachers.Any()) return Content("no-more-info");
     return PartialView(MVC.Teacher.Views._ListAjax, viewModel);
 }
コード例 #2
0
ファイル: TeacherService.cs プロジェクト: raminmjj/Decision
        public async Task<TeacherListViewModel> GetPagedListAsync(TeacherSearchRequest request)
        {
            var Teachers =
                _Teachers.Include(a => a.Creator)
                    .Include(a => a.ReferentialTeachers)
                    .Include(a => a.LasModifier)
                    .Include(a => a.Position)
                    .Include(a => a.ApproveBy)
                    .Where(
                        a =>
                            !a.ReferentialTeachers.Any(
                                r => (r.ReferencedToId == r.ReferencedFromId && !r.FinishedDate.HasValue)))
                    .AsNoTracking()
                    .AsQueryable();

            if (request.TeacherApprovalFilter == TeacherApprovalFilter.IsApproved)
                Teachers = Teachers.Where(a => a.IsApproved).AsQueryable();
            if (request.TeacherApprovalFilter == TeacherApprovalFilter.NonApproved)
                Teachers = Teachers.Where(a => !a.IsApproved).AsQueryable();
            if (request.TeacherReferenceFilter == TeacherReferenceFilter.Referenced)
                Teachers = Teachers.Where(a => a.IsInReference).AsQueryable();
            if (request.TeacherReferenceFilter == TeacherReferenceFilter.NonReferenced)
                Teachers = Teachers.Where(a => !a.IsInReference).AsQueryable();

            if (request.BirthCertificateNumber.HasValue())
                Teachers = Teachers.Where(a => a.BirthCertificateNumber == request.BirthCertificateNumber).AsQueryable();
            if (request.PersonnelCode.HasValue())
                Teachers = Teachers.Where(a => a.PersonnelCode == request.PersonnelCode).AsQueryable();
            if (request.NationalCode.HasValue())
                Teachers = Teachers.Where(a => a.NationalCode == request.NationalCode).AsQueryable();
            if (request.FirstName.HasValue())
                Teachers = Teachers.Where(a => a.FirstName.Contains(request.FirstName)).AsQueryable();
            if (request.LastName.HasValue())
                Teachers = Teachers.Where(a => a.LastName.Contains(request.LastName)).AsQueryable();

            if (request.CollegiateOrderFrom.HasValue)
                Teachers = Teachers.Where(a => a.CollegiateOrder >= request.CollegiateOrderFrom.Value).AsQueryable();
            if (request.CollegiateOrderTo.HasValue)
                Teachers = Teachers.Where(a => a.CollegiateOrder <= request.CollegiateOrderTo.Value).AsQueryable();
            if (request.OccupationalGroupFrom.HasValue)
                Teachers = Teachers.Where(a => a.OccupationalGroup >= request.OccupationalGroupFrom.Value).AsQueryable();
            if (request.OccupationalGroupTo.HasValue)
                Teachers = Teachers.Where(a => a.OccupationalGroup <= request.OccupationalGroupTo.Value).AsQueryable();

            if (request.State.HasValue())
            {
                Teachers = Teachers.Where(a => a.BirthPlaceState == request.State).AsQueryable();
                if (request.City.HasValue())
                    Teachers = Teachers.Where(a => a.BirthPlaceCity == request.City).AsQueryable();
            }
            if (request.PositionId.HasValue)
                Teachers = Teachers.Where(a => a.PositionId == request.PositionId.Value).AsQueryable();

            if (request.TrainingCenter.HasValue)
            {
                Teachers =
                    Teachers.Where(a => a.TrainingCourseId.HasValue)
                        .Select(Teacher => new { Teacher, course = Teacher.TrainingCourse })
                        .Where(@a => @a.course.TrainingCenterId == request.TrainingCenter.Value)
                        .Select(@b => @b.Teacher)
                        .AsQueryable();
            }
            Teachers = Teachers.OrderBy($"{request.CurrentSort} {request.SortDirection}");

            var selectedTeachers = Teachers.ProjectTo<TeacherViewModel>(_mappingEngine);


            var query = await selectedTeachers
                .Skip((request.PageIndex - 1) * request.PageSize)
                .Take(request.PageSize)
                .ToListAsync();

            return new TeacherListViewModel { SearchRequest = request, Teachers = query };
        }