Commit e6f2073b by Cesar Giulano Gonzalez Maqueda

Merge con joel

parents 1795f580 11fc9313
......@@ -3,7 +3,6 @@ package com.roshka.DTO;
import java.util.List;
import com.roshka.modelo.ConvocatoriaCargo;
import com.roshka.modelo.Disponibilidad;
import com.roshka.modelo.EstadoPostulante;
import com.roshka.modelo.PostulanteTecnologia;
......@@ -11,19 +10,17 @@ public class PostulanteListaDTO {
private Long id;
private String nombre;
private String apellido;
private Disponibilidad disponibilidad;
private Long nivelIngles;
private Long experienciaMeses;
private List<PostulanteTecnologia> tecnologias;
private EstadoPostulante estado;
private List<ConvocatoriaCargo> convocatoria;
public PostulanteListaDTO(Long id, String nombre, String apellido, Disponibilidad disponibilidad,
public PostulanteListaDTO(Long id, String nombre, String apellido,
Long nivelIngles, Long experienciaMeses, List<PostulanteTecnologia> tecnologias,EstadoPostulante estado,List<ConvocatoriaCargo> convocatoria) {
this.id = id;
this.nombre = nombre;
this.apellido = apellido;
this.disponibilidad = disponibilidad;
this.nivelIngles = nivelIngles;
this.experienciaMeses = experienciaMeses;
this.tecnologias = tecnologias;
......@@ -48,12 +45,6 @@ public class PostulanteListaDTO {
public void setApellido(String apellido) {
this.apellido = apellido;
}
public Disponibilidad getDisponibilidad() {
return disponibilidad;
}
public void setDisponibilidad(Disponibilidad disponibilidad) {
this.disponibilidad = disponibilidad;
}
public Long getNivelIngles() {
return nivelIngles;
}
......
......@@ -10,7 +10,6 @@ import javax.validation.ConstraintViolationException;
import com.roshka.modelo.*;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.roshka.modelo.Disponibilidad;
import com.roshka.modelo.EstadoCivil;
import com.roshka.modelo.Nacionalidad;
import com.roshka.modelo.Postulante;
......@@ -79,7 +78,6 @@ public class PostulanteController {
@RequestMapping(value = "/work-with-us",method = RequestMethod.GET)
public String getFormPostulante(Model model){
model.addAttribute("tecnologias", tecRepo.findAll());
model.addAttribute("disponibilidades", Disponibilidad.values());
model.addAttribute("tiposDeEstudio", TipoDeEstudio.values());
model.addAttribute("estadosEstudio", EstadoEstudio.values());
model.addAttribute("estadosCiviles", EstadoCivil.values());
......
......@@ -15,7 +15,6 @@ import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.roshka.DTO.PostulanteListaDTO;
import com.roshka.modelo.*;
import com.roshka.modelo.Disponibilidad;
import com.roshka.modelo.EstadoPostulante;
import com.roshka.modelo.Postulante;
import com.roshka.repositorio.*;
......@@ -91,7 +90,6 @@ public class PostulanteRRHHController {
@RequestParam(required = false)Long tecId,
@RequestParam(required = false)String nombre,
@RequestParam(required = false)EstadoPostulante estado,
@RequestParam(required = false)Disponibilidad dispo,
@RequestParam(required = false)Long lvlEng,
@RequestParam(required = false)Long lvlTec,
@RequestParam(required = false)Long instId,
......@@ -104,7 +102,6 @@ public class PostulanteRRHHController {
final Integer CANTIDAD_POR_PAGINA = 10;
Pageable page = PageRequest.of(nroPagina,CANTIDAD_POR_PAGINA,Sort.by("id"));
model.addAttribute("tecnologias", tecRepo.findAll());
model.addAttribute("disponibilidades", Disponibilidad.values());
model.addAttribute("institucionesEducativas", institucionRepository.findAll());
model.addAttribute("estadoP", EstadoPostulante.values());
......@@ -121,14 +118,14 @@ public class PostulanteRRHHController {
nombre == null || nombre.trim().isEmpty() ?
new TypedParameterValue(StringType.INSTANCE,null) :
new TypedParameterValue(StringType.INSTANCE,"%"+nombre+"%"),
dispo, lvlEng, lvlTec, tecId, instId,cargoId,page,estado,convId, expInMonths);
lvlEng, lvlTec, tecId, instId,cargoId,page,estado,convId, expInMonths);
model.addAttribute("numeroOcurrencias", postulantesPag.getTotalElements());
List<Postulante> postulantes = postulantesPag.getContent();
List<PostulanteListaDTO> postulantesDTO = new ArrayList<>();
for (Postulante postulante : postulantes) {
postulantesDTO.add(new PostulanteListaDTO(postulante.getId(), postulante.getNombre(),
postulante.getApellido(), postulante.getDisponibilidad(), postulante.getNivelIngles(),
postulante.getApellido(), postulante.getNivelIngles(),
postulante.getMesesDeExperiencia(), postulante.getTecnologias(),postulante.getEstadoPostulante(),
postulante.getPostulaciones()));
}
......@@ -148,7 +145,6 @@ public class PostulanteRRHHController {
@RequestParam(required = false)Long tecId,
@RequestParam(required = false)String nombre,
@RequestParam(required = false)EstadoPostulante estado,
@RequestParam(required = false)Disponibilidad dispo,
@RequestParam(required = false)Long lvlEng,
@RequestParam(required = false)Long lvlTec,
@RequestParam(required = false)Long instId,
......@@ -162,13 +158,13 @@ public class PostulanteRRHHController {
nombre == null || nombre.trim().isEmpty() ?
new TypedParameterValue(StringType.INSTANCE,null) :
new TypedParameterValue(StringType.INSTANCE,"%"+nombre+"%"),
dispo, lvlEng, lvlTec, tecId, instId,cargoId,page,estado,convId, expInMonths);
lvlEng, lvlTec, tecId, instId,cargoId,page,estado,convId, expInMonths);
List<Postulante> postulantes = postulantesPag.getContent();
List<PostulanteListaDTO> postulantesDTO = new ArrayList<>();
for (Postulante postulante : postulantes) {
postulantesDTO.add(new PostulanteListaDTO(postulante.getId(), postulante.getNombre(),
postulante.getApellido(), postulante.getDisponibilidad(), postulante.getNivelIngles(),
postulante.getApellido(), postulante.getNivelIngles(),
postulante.getMesesDeExperiencia(), postulante.getTecnologias(),postulante.getEstadoPostulante(),
postulante.getPostulaciones()));
}
......
package com.roshka.modelo;
import com.fasterxml.jackson.annotation.JsonValue;
public enum Disponibilidad {
TIEMPO_COMPLETO("C","Tiempo Completo"), PARCIAL("P","Parcial");
private String code;
private String descripcion;
private Disponibilidad(String code, String descripcion) {
this.code = code;
this.descripcion = descripcion;
}
@JsonValue
public String getCode() {
return code;
}
public String getDescripcion() {
return descripcion;
}
}
package com.roshka.modelo;
import java.util.Arrays;
import javax.persistence.AttributeConverter;
import javax.persistence.Converter;
@Converter(autoApply = true)
public class DisponibilidadConverter implements AttributeConverter<Disponibilidad, String>, org.springframework.core.convert.converter.Converter<String,Disponibilidad> {
@Override
public String convertToDatabaseColumn(Disponibilidad modalidad) {
if (modalidad == null) {
return null;
}
return modalidad.getCode();
}
@Override
public Disponibilidad convertToEntityAttribute(String code) {
if (code == null) {
return null;
}
return Arrays.stream(Disponibilidad.values())
.filter(c -> c.getCode().equals(code))
.findFirst()
.orElseThrow(IllegalArgumentException::new);
}
@Override
public Disponibilidad convert(String arg0) {
return convertToEntityAttribute(arg0);
}
}
......@@ -93,8 +93,6 @@ public class Postulante {
private TipoDocumento tipoDocumento;
@Column(name = "disponibilidad", length = 2)
private Disponibilidad disponibilidad;
@Column(name = "tecnologia_otros")
private String tecnologiaOtros;
......
......@@ -12,7 +12,6 @@ import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import com.roshka.modelo.ConvocatoriaCargo;
import com.roshka.modelo.Disponibilidad;
import com.roshka.modelo.EstadoPostulante;
import com.roshka.modelo.Postulante;
......@@ -55,18 +54,17 @@ public interface PostulanteRepository extends JpaRepository<Postulante,Long> {
"left join p.tecnologias pt " +
"left join p.postulaciones conv " +
"where (?1 is null or lower(p.nombre) LIKE lower(?1) or lower(p.apellido) LIKE lower(?1) ) " +
"and (p.disponibilidad = ?2 or ?2 is null) " +
"and (p.nivelIngles >= ?3 or ?3 is null) "+
"and (pt.nivel >= ?4 or ?4 is null) "+
"and (pt.tecnologia.id = ?5 or ?5 is null) "+
" and (e.institucion.id = ?6 or ?6 is null ) "+
" and (conv.cargoId = ?7 or ?7 is null ) "+
"and (p.estadoPostulante = ?8 or ?8 is null) "+
" and (conv.id=?9 or ?9 is null ) " +
"and (p.mesesDeExperiencia >= ?10 or ?10 is null ) ")
public Page<Postulante> postulantesMultiFiltro(TypedParameterValue nombre, Disponibilidad disponibilidad,
Long nivelInges, Long nivel, Long tecnoId, Long instId,Long cargoId,
Pageable pageable, EstadoPostulante estado, Long convo, Long expInMonths);
"and (p.nivelIngles >= ?2 or ?2 is null) "+
"and (pt.nivel >= ?3 or ?3 is null) "+
"and (pt.tecnologia.id = ?4 or ?4 is null) "+
" and (e.institucion.id = ?5 or ?5 is null ) "+
" and (conv.cargoId = ?6 or ?6 is null ) "+
"and (p.estadoPostulante = ?7 or ?7 is null) "+
" and (conv.id=?8 or ?8 is null ) " +
"and (p.mesesDeExperiencia >= ?9 or ?9 is null ) ")
public Page<Postulante> postulantesMultiFiltro(TypedParameterValue nombre, Long nivelInges, Long nivel, Long tecnoId,
Long instId,Long cargoId, Pageable pageable, EstadoPostulante estado,
Long convo, Long expInMonths);
@Transactional
@Modifying
......
......@@ -13,7 +13,7 @@
"telefono": "(950) 417-3681",
"fechaNacimiento": "1986-08-16",
"nivelIngles": 1,
"disponibilidad": "C",
"experiencias": [
{
......@@ -72,7 +72,7 @@
"telefono": "(866) 560-2541",
"fechaNacimiento": "1980-09-04",
"nivelIngles": 5,
"disponibilidad": "C",
"experiencias": [
{
......@@ -119,7 +119,7 @@
"telefono": "(876) 580-2411",
"fechaNacimiento": "2000-01-28",
"nivelIngles": 3,
"disponibilidad": "P",
"experiencias": [
{
......@@ -166,7 +166,7 @@
"telefono": "(931) 499-3122",
"fechaNacimiento": "1972-06-05",
"nivelIngles": 4,
"disponibilidad": "C",
"experiencias": [
{
......@@ -213,7 +213,7 @@
"telefono": "(972) 524-2610",
"fechaNacimiento": "1989-09-09",
"nivelIngles": 5,
"disponibilidad": "P",
"experiencias": [
{
......@@ -260,7 +260,7 @@
"telefono": "(933) 501-3525",
"fechaNacimiento": "1994-03-24",
"nivelIngles": 1,
"disponibilidad": "P",
"experiencias": [
{
......@@ -307,7 +307,7 @@
"telefono": "(817) 492-2493",
"fechaNacimiento": "2002-07-30",
"nivelIngles": 5,
"disponibilidad": "P",
"experiencias": [
{
......
......@@ -17,7 +17,6 @@ form = document.querySelector("form");
const depSelect = document.querySelector("#departamentos");
console.log("saddsa", bootstrap)
const modalCargo = bootstrap.Modal.getOrCreateInstance(document.getElementById('cargoForm'))
const modalExperiencia = bootstrap.Modal.getOrCreateInstance(document.getElementById('experienciaForm'))
const modalTecnologia = bootstrap.Modal.getOrCreateInstance(document.getElementById('tecnologiaForm'))
const modalEstudio = bootstrap.Modal.getOrCreateInstance(document.getElementById('estudioForm'))
......@@ -415,84 +414,6 @@ function eliminarEstudio(index) {
//eliminar en html
document.getElementById("est-"+index).remove()
}
/*------------Cargos----------------------------------------*/
function agregarFieldCargo(){
//recoger del form
const pairs = {};
const formcar = document.querySelector("[name=cargo-form]");
const formData = new FormData(formcar);
//Validacion
let returnFlag = false;
let requiredValues = ["nombre"]
formData.forEach((value, key)=>{
if(requiredValues.includes(key)
&& value==="" && returnFlag == false){
console.log(key, value)
returnFlag = true;
}
});
if(returnFlag===true){
let message = "Rellene "
for(let i=0;i<requiredValues.length;i++){
message+=", "+requiredValues[i];
}
message += " como minimo."
alert(message);
return;
}
for (const [name, value] of formData){
pairs[name] = value
}
console.log(pairs)
for(let i=0;i<cont_cargo;i++){
if(postulaciones[i]!==null){
if(postulaciones[i]["id"]===pairs["cargo-id"]){
alert("Ya has agregado ese cargo!")
//cont_cargo--;
return;
}
}
}
postulaciones[cont_cargo]={}
postulaciones[cont_cargo]["id"]=pairs["cargo-id"]
//postulaciones[cont_cargo]["cargo"]=pairs["cargo-id"]=="-1"?{nombre: pairs["cargo-nombre"]}:{id: pairs["cargo-id"],nombre:document.querySelector('[name=cargo-id] > option[value="'+pairs["cargo-id"]+'"]').innerHTML}
console.log(postulaciones)
formcar.reset();
//imprimir lista actualizada
const div = document.querySelector("#cargos")
const div1 = document.createElement('div');
let content1=''
for (let index = 0; index < postulaciones.length; index++) {
const car = postulaciones[index];
if(car==null) continue;
content1 += `
<div class="col-auto" id="car-${index}" style="text-transform: uppercase;">
${document.querySelector('[name=cargo-id] > option[value="'+car.id+'"]').innerHTML} &nbsp;<i class="bi bi-trash-fill pointer" onclick="eliminarCargoPostulante(event)"></i>
</div>
`
}
//content1 += "</ul>"
div.innerHTML = content1
//div.innerHTML = '';
//div.appendChild(div1);
cont_cargo++;
document.querySelector("#no-valid-cargo").style.display = "none";
modalCargo.hide()
}
function eliminarCargoPostulante(event) {
//eliminar del array
postulaciones[event.target.parentElement.id.split("-")[1]]=null
//eliminar en html
event.target.parentElement.remove()
}
/*--------------Referencias----------------------------- */
function agregarFieldReferencia(event){
......
......@@ -106,15 +106,6 @@
<hr>
<div class="row">
<div class="col-sm-3">
<h6 class="mb-0">Disponbilidad</h6>
</div>
<div class="col-sm-9 text-secondary">
${postulante.disponibilidad.getDescripcion()}
</div>
</div>
<hr>
<div class="row">
<div class="col-sm-3">
<h6 class="mb-0">Estado</h6>
</div>
<div class="col-sm-9 text-secondary">
......
......@@ -104,15 +104,7 @@
</div>
</div>
<hr>
<div class="row">
<div class="col-sm-3">
<h6 class="mb-0">Disponbilidad</h6>
</div>
<div class="col-sm-9 text-secondary">
${postulante.disponibilidad.getDescripcion()}
</div>
</div>
<hr>
<div class="row">
<div class="col-sm-3">
<h6 class="mb-0">Estado</h6>
......
......@@ -122,8 +122,8 @@
<br>
<div class="inputs mb-3 col-md-4"> <label for="nivelIngles" class="form-label"> Nivel de ingles</label>
<select name="nivelIngles" id="nivelIngles" class="content-select">
<div class="inputs mb-3 col-md-6"> <label for="nivelIngles" class="form-label"> Nivel de ingles</label>
<select name="nivelIngles" id="nivelIngles" >
<option value="1" selected>Conocimiento de ingles muy basico</option>
<option value="2" >Comprendo algunas cosas y puedo leer con la ayuda del traductor</option>
<option value="3" >Puedo entender todo lo que leo</option>
......@@ -132,18 +132,11 @@
</select>
</div>
<div class="inputs mb-3 col-md-4">
<label for="disponibilidad" class="form-label"> Disponibilidad</label>
<select name="disponibilidad" id="disponibilidad" class="content-select">
<c:forEach items="${disponibilidades}" var="disponibilidad">
<option value="${disponibilidad.getCode()}">${disponibilidad.getDescripcion()}</option>
</c:forEach>
</select> </div>
<div class="inputs mb-3 col-md-4">
<div class="inputs mb-3 col-md-6">
<label for="estadoCivil" class="form-label"> Estado Civil</label>
<select name="estadoCivil" id="estadoCivil" class="content-select">
<select name="estadoCivil" id="estadoCivil">
<c:forEach items="${estadosCiviles}" var="estadoCivil">
<option value="${estadoCivil.getDescripcion()}">${estadoCivil.getDescripcion()}</option>
</c:forEach>
......@@ -155,7 +148,7 @@
<div class="row w-100 gy-2 mx-auto">
<div class="col-12 px-0">
<h4 class="text-start">Cargos <i class="bi bi-plus-square pointer" data-bs-toggle="modal" data-bs-target="#cargoForm"></i></h4>
<h4 class="text-start">Cargos </h4>
</div>
<div class="col-12">
<div class="mt-3 gap-2 row" id="cargos">
......@@ -283,36 +276,6 @@
</div>
</div>
</form>
<!---------------------------------------Modal de Cargos disponibles---------------------------------------------------------------->
<div class="modal fade" id="cargoForm" tabindex="-1" role="dialog" aria-labelledby="cargoForm" aria-hidden="true" >
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLabel" >Cargos Disponibles</h5>
<button type="button" class="close" data-bs-dismiss="modal" aria-label="Close" style="color:#21130d;">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<form name="cargo-form" class="needs-validation" novalidate>
<label for="cargo-nombre" class="form-label">Cargo</label>
<div class="input-group mb-3">
<select class="form-select" name="cargo-id" aria-label="Default select example" required>
<c:forEach items="${CargosDisponibles}" var="convocatoria">
<option value="${convocatoria.getId()}">${convocatoria.getCargo().getNombre()}</option>
</c:forEach>>
</select>
</div>
</form>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Cerrar</button>
<button type="button" class="btn btn-primary" onclick="agregarFieldCargo()">Agregar</button>
</div>
</div>
</div>
</div>
<!-------------------------------------------------------------------------------------------------------------------------->
<!--Modal de Experiencia-->
......
......@@ -26,7 +26,7 @@
<thead>
<tr class="">
<th scope="col">Estado</th>
<th scope="col">Disponbilidad</th>
<th scope="col">Nivel de ingles</th>
<th scope="col">Institucion Educativa</th>
<th scope="col">Tecnologias</th>
......@@ -45,14 +45,6 @@
</c:forEach>
</td>
<td>
<select class="form-select form-select-sm " name="dispo" id="dispo">
<option value="">Seleccione</option>
<c:forEach items="${disponibilidades}" var="disponibilidad">
<option value="${disponibilidad}" ${param.dispo == disponibilidad ? "selected" : ""}>${disponibilidad.getDescripcion()}</option>
</c:forEach>
</select>
</td>
<td>
<select class="form-select form-select-sm " name="lvlEng" id="lvlEng">
<option value="">Seleccione</option>
<c:forEach var = "lvl" begin = "1" end = "5">
......@@ -136,14 +128,7 @@
<label class="form-label" for="dispo">Disponbilidad</label>
</div>
<div class="col-auto col-md-8">
<select class="form-select form-select-sm " name="dispo" id="dispo">
<option value="">Seleccione una opcion</option>
<c:forEach items="${disponibilidades}" var="disponibilidad">
<option value="${disponibilidad}" ${param.dispo == disponibilidad ? "selected" : ""}>${disponibilidad.getDescripcion()}</option>
</c:forEach>
</select>
</div>
</div>
</div>
<div class="col">
......@@ -287,7 +272,6 @@
<tr>
<th scope="col">#</th>
<th scope="col">Nombre</th>
<th scope="col">Disponibilidad</th>
<th scope="col">Nivel de Ingles</th>
<th scope="col">Experiencia</th>
<th scope="col">Tecnologias</th>
......@@ -299,7 +283,6 @@
<tr>
<th scope="row">${staPost.index + 1}</th>
<td>${postulante.nombre} ${postulante.apellido}</td>
<td>${postulante.disponibilidad.getDescripcion()}</td>
<td>${postulante.nivelIngles}</td>
<td><c:choose>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment