Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand All @@ -103,8 +113,6 @@ public class ProfessionalHomeController {
@Autowired
private IAuthentication authentication;

@Autowired
private PaginationUtil paginationUtil;
@Autowired
private UserService userService;

Expand Down Expand Up @@ -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<Job> jobPage = jobService.findAll( pageRequest);


List<JobDTO> jobOpeningsDTOs = jobPage.stream()
.map(s -> jobMapper.toDto(s))
.collect(Collectors.toList());

mv.addObject("jobs", jobOpeningsDTOs);

List<ExpertiseDTO> 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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,8 @@ public class JobController {
@Autowired
private ProfessionalExpertiseService professionalExpertiseService;



/**
* Mostra o formulário de cadastro de vagas de emprego
* @param page
Expand Down
5 changes: 5 additions & 0 deletions src/main/java/br/edu/utfpr/servicebook/model/dto/JobDTO.java
Original file line number Diff line number Diff line change
Expand Up @@ -26,11 +26,16 @@ 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;

private Long salary;

private ExpertiseDTO expertise;

private CompanyDTO company;

}
8 changes: 7 additions & 1 deletion src/main/resources/data.sql
Original file line number Diff line number Diff line change
Expand Up @@ -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);


3 changes: 3 additions & 0 deletions src/main/webapp/WEB-INF/tags/template-user.tag
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,9 @@
<ul id='dropdown-perfil' class='dropdown-content'>
<li><a href="/servicebook/minha-conta/cliente">Minha Conta</a></li>
<li><a href="/servicebook/minha-conta/perfil">Meu perfil</a></li>
<c:if test="${fn:contains(currenturl, '/minha-conta/profissional')}">
<li><a href="/servicebook/minha-conta/profissional/vagas">Vagas</a></li>
</c:if>
<li class="divider" tabindex="-1"></li>
<li>
<a href="logout">Sair</a>
Expand Down
1 change: 1 addition & 0 deletions src/main/webapp/WEB-INF/tags/template.tag
Original file line number Diff line number Diff line change
Expand Up @@ -149,6 +149,7 @@
<script src="assets/resources/scripts/main.js"></script>
<script src="assets/resources/scripts/init.js"></script>
<script src="assets/resources/scripts/sse.js"></script>
<script src="assets/resources/scripts/vacancy.js"></script>
<script src="assets/libraries/jquery.mask.js"></script>
<!--script src="assets/resources/scripts/expertise-sidepanel-ajax.js"></script!-->
<script type="text/javascript">
Expand Down
55 changes: 55 additions & 0 deletions src/main/webapp/WEB-INF/view/professional/jobs-avaliable.jsp
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@taglib prefix="t" tagdir="/WEB-INF/tags"%>

<t:template title="Vagas de Emprego">
<jsp:body>
<!-- Lista de vagas de emprego -->
<div class="row">
<div class="col s12 ">
<h3 class="secondary-color-text center center-align">Vagas de Emprego</h3>
</div>
<div class="container center-align">
<c:choose>
<c:when test="${not empty jobs}">
<div class="container center-align">
<br>
<select id="select-expertise" class="white-text">
<option value="--">Qualquer Profissão</option>
<c:forEach var="expertise" items="${expertises}">
<option value="${expertise.name}">${expertise.name}</option>
</c:forEach>
</select>
</div>
<c:forEach var="job" items="${jobs}">
<div class="card horizontal s9 m12 left-align">
<div class="card-image col s2">
<img src=${job.company.profilePicture}>
</div>
<div class="card-stacked">
<div class="card-content">
<h4 class="job-title">${job.title} - <span class="expertise">${job.expertise.name}</span></h4>
<span class="grey-text">${job.company.name} <br> <span class="companyCep">${job.company.address.postalCode}</span>, ${job.company.address.neighborhood} - ${job.company.address.city.state.uf}</span>
<p>${job.description}</p>
</div>
<div class="card-action">
<c:choose>
<c:when test="${job.salary != null}">
<i class="material-icons">attach_money</i>
<fmt:formatNumber value="${job.salary / 1000}" type="currency" currencySymbol="R$"/> mil / mês
</c:when>
<c:otherwise>À combinar</c:otherwise>
</c:choose>
</div>
</div>
</div>
</c:forEach>
</c:when>
<c:otherwise><h5>Não há vagas de emprego no momento</h5></c:otherwise>
</c:choose>
<div class="center"><t:pagination pagination="${pagination}" relativePath="/c/vagas-de-emprego/listar"></t:pagination></div>
</div>
</jsp:body>
</t:template>
39 changes: 39 additions & 0 deletions src/main/webapp/assets/resources/scripts/vacancy.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@

var jobCompanySpans = $(".companyCep");
$(document).ready(function(){
for(i=0; i < jobCompanySpans.length; i++){
getCompanyAddressByCep(jobCompanySpans[i].innerText, i);
}
});

function getCompanyAddressByCep(cep, index) {
var cep = cep.replace(/[^0-9]/, '');
if(cep){
var url = 'https://viacep.com.br/ws/'+cep+'/json/';
$.ajax({
url: url,
dataType: 'jsonp',
crossDomain: true,
contentType: "application/json",
success : function(json){
if(json.logradouro){
jobCompanySpans[index].innerText = json.localidade;
return json.localidade;
}
}
});
}
}

$(document).ready(function(){
$('select').on('change', function() {
let expertise = this.value;
if(expertise != '--'){
$('.card').hide(300)
$('span:contains(\''+expertise+'\')').parent().parent().parent().parent().show(300)
}else{
$('.card').show(300)
}
});
});