diff --git a/src/main/java/br/edu/utfpr/servicebook/controller/ProfessionalHomeController.java b/src/main/java/br/edu/utfpr/servicebook/controller/ProfessionalHomeController.java index ea47e506..1da03c63 100644 --- a/src/main/java/br/edu/utfpr/servicebook/controller/ProfessionalHomeController.java +++ b/src/main/java/br/edu/utfpr/servicebook/controller/ProfessionalHomeController.java @@ -85,6 +85,16 @@ public class ProfessionalHomeController { @Autowired private JobCandidateMapper jobCandidateMapper; + @Autowired + private JobService jobService; + + @Autowired + private PaginationUtil paginationUtil; + + @Autowired + private JobMapper jobMapper; + + @Autowired private StateService stateService; @@ -103,8 +113,6 @@ public class ProfessionalHomeController { @Autowired private IAuthentication authentication; - @Autowired - private PaginationUtil paginationUtil; @Autowired private UserService userService; @@ -535,6 +543,47 @@ public ModelAndView showAvailableDetailJobs( return mv; } + /** + * Lista todas as vagas de emprego disponíveis + * @param page + * @param size + * @param order + * @param direction + * @return + */ + @GetMapping("/vagas") + @RolesAllowed({RoleType.USER}) + public ModelAndView listAll(@RequestParam(value = "pag", defaultValue = "1") int page, + @RequestParam(value = "siz", defaultValue = "5") int size, + @RequestParam(value = "ord", defaultValue = "title") String order, + @RequestParam(value = "dir", defaultValue = "ASC") String direction){ + + ModelAndView mv = new ModelAndView("professional/jobs-avaliable"); + PageRequest pageRequest = PageRequest.of(page-1, size, Sort.Direction.valueOf(direction), order); + + Page jobPage = jobService.findAll( pageRequest); + + + List jobOpeningsDTOs = jobPage.stream() + .map(s -> jobMapper.toDto(s)) + .collect(Collectors.toList()); + + mv.addObject("jobs", jobOpeningsDTOs); + + List expertiseDTOS = expertiseService.findAll().stream() + .map(expertise -> expertiseMapper.toDto(expertise)).collect(Collectors.toList()); + mv.addObject("expertises", expertiseDTOS); + + PaginationDTO paginationDTO = paginationUtil.getPaginationDTO(jobPage); + mv.addObject("pagination", paginationDTO); + return mv; + } + + public String getCityNameById(Long cityId){ + return cityService.findById(cityId).get().getName(); + } + + /** * Realiza a busca no banco de dados pelos anúncios com paginação filtrando por status e especialidades. * @param expertiseId diff --git a/src/main/java/br/edu/utfpr/servicebook/controller/company/JobController.java b/src/main/java/br/edu/utfpr/servicebook/controller/company/JobController.java index e61fe117..49aea01b 100644 --- a/src/main/java/br/edu/utfpr/servicebook/controller/company/JobController.java +++ b/src/main/java/br/edu/utfpr/servicebook/controller/company/JobController.java @@ -66,6 +66,8 @@ public class JobController { @Autowired private ProfessionalExpertiseService professionalExpertiseService; + + /** * Mostra o formulário de cadastro de vagas de emprego * @param page diff --git a/src/main/java/br/edu/utfpr/servicebook/model/dto/JobDTO.java b/src/main/java/br/edu/utfpr/servicebook/model/dto/JobDTO.java index a0c1ac0d..6a6b3c59 100644 --- a/src/main/java/br/edu/utfpr/servicebook/model/dto/JobDTO.java +++ b/src/main/java/br/edu/utfpr/servicebook/model/dto/JobDTO.java @@ -26,6 +26,9 @@ public class JobDTO implements Serializable { @NotNull(message = "A especialidade é obrigatória") private Long expertiseId; + @NotNull(message = "A empresa é obrigatória") + private Long companyId; + @NotBlank(message = "A descrição da vaga é obrigatória") private String description; @@ -33,4 +36,6 @@ public class JobDTO implements Serializable { private ExpertiseDTO expertise; + private CompanyDTO company; + } \ No newline at end of file diff --git a/src/main/resources/data.sql b/src/main/resources/data.sql index 3a3ce27f..bd15f8f9 100644 --- a/src/main/resources/data.sql +++ b/src/main/resources/data.sql @@ -150,6 +150,12 @@ VALUES ('1', '2', 'false'), INSERT INTO follows (client_id, professional_id) -VALUES (4, 2) +VALUES (4, 2); + +INSERT INTO job (id, description, salary, title, company_id, expertise_id) +VALUES (0, 'Auxilar os programadores a identar o código de maneira correta', 1250, 'Chat GPT Humano (Estagiário)', 7, 1), + (1, 'Auxilar os programadores a implementar o código de maneira correta', 1250, 'Chat GPT Humano (Junior)', 7, 2), + (2, 'Auxilar os programadores a revisar o código de maneira correta', 1250, 'Chat GPT Humano (Pleno)', 7, 3), + (3, 'Reclamar dos códigos dos programadores', 1250, 'Chat GPT Humano (Sênior)', 7, 4); diff --git a/src/main/webapp/WEB-INF/tags/template-user.tag b/src/main/webapp/WEB-INF/tags/template-user.tag index b72fcaa1..6b88b15c 100644 --- a/src/main/webapp/WEB-INF/tags/template-user.tag +++ b/src/main/webapp/WEB-INF/tags/template-user.tag @@ -17,6 +17,9 @@