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); }
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...")); }
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)); }