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));
 }
Exemple #2
0
 public static ApiRes <CoordinatingJobsForGraduatesDto> JobCoordinationDtoLazyList(JobCoordinationFilters filters, string sort, int page, int size)
 {
     return(JobsCoordinationManager.JobCoordinationLazyList(filters, sort, page, size));
 }
Exemple #3
0
        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);
            }
        }