Пример #1
0
        public Task <List <CommonRecruitmentPostDataset> > GetAppliedJobs([FromQuery] RecruitmentPostRequestParam param)
        {
            int id = int.Parse(User.FindFirstValue(ClaimTypes.NameIdentifier));

            return(_employeeService.GetAppliedJobs(id, param));
        }
Пример #2
0
 public async Task <ActionResult <List <CommonRecruitmentPostDataset> > > GetClassificatedRecruitmentPosts([FromQuery] RecruitmentPostRequestParam param)
 {
     if (!param.ValidateSalary)
     {
         return(BadRequest(new { message = "Max salary must greater or equal to Min salary" }));
     }
     return(Ok(await _recruitmentService.GetListRecruitmentPost(param)));
 }
Пример #3
0
        public async Task <List <CommonRecruitmentPostDataset> > GetListRecruitmentPost(RecruitmentPostRequestParam param)
        {
            Expression <Func <Models.RecruitmentPost, bool> > filter = post => (post.Company.CompanyName.Contains(param.CompanyName) &&
                                                                                post.Location.Contains(param.Location) &&
                                                                                (param.CompanyId == 0 || post.CompanyId == param.CompanyId) &&
                                                                                (param.MajorId == 0 || post.MajorId == param.MajorId) &&
                                                                                (param.IsExpired || post.DueDate >= DateTime.UtcNow));
            Func <IQueryable <RecruitmentPost>, IOrderedQueryable <RecruitmentPost> > order;

            switch (param.OrderBy)
            {
            case "+created":
                order = post => post.OrderBy(post => post.Created);
                break;

            case "+salary":
                order = post => post.OrderBy(post => post.MaxSalary);
                break;

            case "-salary":
                order = post => post.OrderByDescending(post => post.MaxSalary);
                break;

            default:
                order = post => post.OrderByDescending(post => post.Created);
                break;
            }
            IEnumerable <Models.RecruitmentPost> list = await _uow.RecruitmentRepository.Get(filter : filter,
                                                                                             offset : param.Offset,
                                                                                             first : param.Limit,
                                                                                             includeProperties : "Company,Company.Account",
                                                                                             orderBy : order);

            IEnumerable <Translation> trans = await _uow.TranslationRepository.Get(filter : t => t.MajorId != null && t.Language == param.Lang);

            List <CommonRecruitmentPostDataset> result = (from r in list
                                                          join t in trans on r.MajorId equals t.MajorId
                                                          select new CommonRecruitmentPostDataset()
            {
                PostId = r.PostId,
                Company = _mapper.Map <CompanyDataset>(r.Company),
                Created = r.Created,
                DueDate = r.DueDate,
                ExpectedNumber = r.ExpectedNumber,
                JobBenefit = r.JobBenefit,
                JobDescription = r.JobDescription,
                JobRequirement = r.JobRequirement,
                Location = r.Location,
                Major = new Datasets.Major.MajorDataset()
                {
                    MajorId = r.MajorId,
                    MajorName = t.Text
                },
                MaxSalary = r.MaxSalary,
                MinSalary = r.MinSalary,
                Title = r.Title
            }).ToList();

            return(result);
        }
Пример #4
0
        public async Task <List <CommonRecruitmentPostDataset> > GetAppliedJobs(int id, RecruitmentPostRequestParam param)
        {
            Expression <Func <Models.Application, bool> > filter = cv => (cv.RecruitmentPost.Company.CompanyName.Contains(param.CompanyName) &&
                                                                          cv.RecruitmentPost.Location.Contains(param.Location) &&
                                                                          (param.CompanyId == 0 || cv.RecruitmentPost.CompanyId == param.CompanyId) &&
                                                                          (param.MajorId == 0 || cv.RecruitmentPost.MajorId == param.MajorId) &&
                                                                          cv.CV.EmployeeId == id);
            Func <IQueryable <Application>, IOrderedQueryable <Application> > order;

            switch (param.OrderBy)
            {
            case "+created":
                order = cv => cv.OrderBy(cv => cv.RecruitmentPost.Created);
                break;

            case "+salary":
                order = cv => cv.OrderBy(cv => cv.RecruitmentPost.MaxSalary);
                break;

            case "-salary":
                order = cv => cv.OrderByDescending(cv => cv.RecruitmentPost.MaxSalary);
                break;

            default:
                order = cv => cv.OrderByDescending(cv => cv.RecruitmentPost.Created);
                break;
            }
            IEnumerable <Application> appliedCVs = await _uow.AppliedCVRepository.Get(filter : filter,
                                                                                      orderBy : order,
                                                                                      includeProperties : "RecruitmentPost,RecruitmentPost.Company,RecruitmentPost.Major,RecruitmentPost.Company.Account,CV",
                                                                                      first : param.Limit,
                                                                                      offset : param.Offset);

            IEnumerable <RecruitmentPost> listAppliedJobs = appliedCVs.Select(cv => cv.RecruitmentPost);

            return(_mapper.Map <List <CommonRecruitmentPostDataset> >(listAppliedJobs));
        }