Пример #1
0
        public PostVacancyDto ValidateVacancy(PostVacancyDto vacancy)
        {
            vacancy.Title = vacancy.Title.ToLower();

            if (string.IsNullOrWhiteSpace(vacancy.Title) || string.IsNullOrWhiteSpace(vacancy.Description) ||
                vacancy.Experience.Years < 0 || string.IsNullOrWhiteSpace(vacancy.Experience.Description) ||
                vacancy.Salary <= 0 || string.IsNullOrWhiteSpace(vacancy.Education.Title) ||
                string.IsNullOrWhiteSpace(vacancy.Education.Description))
            {
                return(null);
            }

            if (vacancy.KeyResponsibilities.Count() == 0)
            {
                return(null);
            }

            foreach (var responsibility in vacancy.KeyResponsibilities)
            {
                if (string.IsNullOrWhiteSpace(responsibility.Responsibility.Title) ||
                    string.IsNullOrWhiteSpace(responsibility.Responsibility.Description))
                {
                    return(null);
                }
            }

            return(vacancy);
        }
Пример #2
0
        public async Task <IActionResult> PostVacancy([FromBody] PostVacancyDto vacancyDto)
        {
            if (!User.Identity.IsAuthenticated)
            {
                return(BadRequest("Please signed in to your account."));
            }

            var userId = User.FindFirst(ClaimTypes.NameIdentifier).Value;

            if (string.IsNullOrEmpty(userId))
            {
                return(Unauthorized());
            }

            if (!ModelState.IsValid)
            {
                return(BadRequest("Something went wrong..."));
            }

            if (await _repo.IsVacancy(vacancyDto.Title.ToLower()))
            {
                return(BadRequest("Job Post available for similar title."));
            }

            var validateModel = _repo.ValidateVacancy(vacancyDto);

            if (validateModel == null)
            {
                return(BadRequest("Something went wrong..."));
            }

            var currentlyLoginUserName = User.Identity.Name;
            var loggedInUser           = await _user.FindByEmailAsync(currentlyLoginUserName);

            var vacancy = _mapper.Map <Vacancy>(validateModel);

            vacancy.AppUser = loggedInUser;

            _sharedRepo.Add(vacancy);

            if (await _sharedRepo.SaveAll())
            {
                var detailedVacancy = _mapper.Map <DetailedVacancyDto>(vacancy);
                return(Created("api/vacancy/" + vacancy.Id, detailedVacancy));
            }
            return(BadRequest("Something went wrong..."));
        }
Пример #3
0
        public async Task <IActionResult> UpdateVacancy(int id, [FromBody] PostVacancyDto vacancyDto)
        {
            if (!User.Identity.IsAuthenticated)
            {
                return(BadRequest("Please signed in to your account."));
            }

            var userId = User.FindFirst(ClaimTypes.NameIdentifier).Value;

            if (string.IsNullOrEmpty(userId))
            {
                return(Unauthorized());
            }

            if (!ModelState.IsValid)
            {
                return(BadRequest("Something went wrong..."));
            }

            var validateModel = _repo.ValidateVacancy(vacancyDto);

            if (validateModel == null)
            {
                return(BadRequest("Something went wrong..."));
            }

            var currentlyLoginUserName = User.Identity.Name;
            var loggedInUser           = await _user.FindByEmailAsync(currentlyLoginUserName);

            var vacancy = await _repo.GetVacancy(id, loggedInUser);

            if (vacancy == null)
            {
                return(NotFound("No such Job post available."));
            }

            var updatedVacancy = _mapper.Map <PostVacancyDto, Vacancy>(vacancyDto, vacancy);
            await _sharedRepo.SaveAll();

            var returnUpdatedVacancy = _mapper.Map <DetailedVacancyDto>(updatedVacancy);

            return(Ok(returnUpdatedVacancy));
        }