public ApiRes <CoordinatingJobsForGraduatesDto> Get(int page, int size, string sort, [FromUri] JobCoordinationFilters filters) { filters.curUserId = Int32.Parse(HttpContext.Current.User.Identity.Name); return(JobsCoordinationDtoManager.JobCoordinationDtoLazyList(filters, sort, page, size)); }
public static ApiRes <CoordinatingJobsForGraduatesDto> JobCoordinationDtoLazyList(JobCoordinationFilters filters, string sort, int page, int size) { return(JobsCoordinationManager.JobCoordinationLazyList(filters, sort, page, size)); }
public static ApiRes <CoordinatingJobsForGraduatesDto> JobCoordinationLazyList(JobCoordinationFilters filters, string sort, int page, int size) { ApiRes <CoordinatingJobsForGraduatesDto> res = new ApiRes <CoordinatingJobsForGraduatesDto>(); sort = sort == " ," || sort == " , " ? "" : sort; filters.status = filters.status ?? new List <int>(); filters.branch = filters.branch ?? new List <int>(); filters.gender = filters.gender ?? new List <string>(); filters.subject = filters.subject ?? new List <int>(); filters.user = filters.user ?? new List <int>(); DateTime dateMonthAgo = DateTime.Now.AddMonths(-1); using (placementDepartmentDBEntities placementDepartmentDB = new placementDepartmentDBEntities()) { User cuser = placementDepartmentDB.User.Find(filters.curUserId); if (cuser.permissionId == 2) { filters.user = new List <int>(1) { cuser.Id } } ; res.items = placementDepartmentDB.CoordinatingJobsForGraduates .Where(cj => ((cuser.permissionId == 1 && !filters.user.Any()) || filters.user.Contains(cj.Job.handlesId)) && (!filters.status.Any() || filters.status.Contains(cj.placementStatus)) && (!filters.branch.Any() || filters.branch.Contains(cj.Graduate.branchId)) && (!filters.gender.Any() || filters.gender.Contains(cj.Graduate.gender)) && (filters.period == 0 || filters.period == 1 && cj.dateReceived >= dateMonthAgo || filters.period == 2 && cj.dateReceived >= filters.startDate && cj.dateReceived <= filters.endDate) && (!filters.subject.Any() || filters.subject.Contains(cj.Job.subjectId)) ) .OrderBy(sort + "dateReceived desc") .Skip(page * size) .Take(size) .ProjectTo <CoordinatingJobsForGraduatesDto>(AutoMapperConfiguration.config) .ToList(); res.totalCount = placementDepartmentDB.CoordinatingJobsForGraduates.Where(cj => ((cuser.permissionId == 1 && !filters.user.Any()) || filters.user.Contains(cj.Job.handlesId)) && (!filters.status.Any() || filters.status.Contains(cj.placementStatus)) && (!filters.branch.Any() || filters.branch.Contains(cj.Graduate.branchId)) && (!filters.gender.Any() || filters.gender.Contains(cj.Graduate.gender)) && (filters.period == 0 || filters.period == 1 && cj.dateReceived >= dateMonthAgo || filters.period == 2 && cj.dateReceived >= filters.startDate && cj.dateReceived <= filters.endDate) && (!filters.subject.Any() || filters.subject.Contains(cj.Job.subjectId)) ).Count(); return(res); } }