public async Task<Tuple<List<SearchJobSeekerApplicantRepone>, int, int>> SearchApplicant(SearchJobSeekerApplicantParams param) { using (AppDbContext context = new AppDbContext()) { await GetCurrentUser(context); var query = context.Applicants.Include(x => x.Job).Include(x => x.Job.Employer).Include(x => x.Job.Location).Include(x => x.Job.Educations).Where(x => x.JobSeekerId == _userId && x.ApplicantStatus == param.ApplicantStatus).AsQueryable(); int totalItems = await query.CountAsync(); int totalPages = totalItems / param.PageSize; if (totalItems % param.PageSize > 0) { totalPages++; } var result = await query.OrderByDescending(p => p.Job.JobName).Skip(param.PageIndex * param.PageSize).Take(param.PageSize).ToListAsync(); List<SearchJobSeekerApplicantRepone> searchResult = new List<SearchJobSeekerApplicantRepone>(); searchResult.AddRange(result.Select(x => new SearchJobSeekerApplicantRepone { Id = x.Id, JobId = x.JobId, LocationId = x.Job.LocationId, ApplicantStatus = x.ApplicantStatus, CompanyName = x.Job.Employer.CompanyName, Logo = x.Job.Employer.Logo, Location = x.Job.Location, JobType = x.Job.JobType, JobName = x.Job.JobName, MinSalary = x.Job.MinSalary, MaxSalary = x.Job.MaxSalary, EndDate = x.Job.EndDate, StartDate = x.Job.StartDate, UserId = x.JobSeekerId })); return new Tuple<List<SearchJobSeekerApplicantRepone>, int, int>(searchResult, totalPages, totalItems); } }
public async Task<ApiJsonResult> SearchApplicant(SearchJobSeekerApplicantParams param) { try { Guid userId = GetCurrentUserId(); Tuple<List<SearchJobSeekerApplicantRepone>, int, int> result = await new JobManager(userId).SearchApplicant(param); return new ApiJsonPagingResult { Success = true, Data = result.Item1, TotalPages = result.Item2, TotalItems = result.Item3 }; } catch (Exception ex) { return ProcessException(ex); } }