Commit 41c32e63 by Joaquin Elias Baranda Ayala

Solucion a error de Estado Civil

parents 26f4ac42 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;
}
......
......@@ -36,11 +36,16 @@ public class CargoController {
public String menuCargos(Model model,@RequestParam(required = false) String nombre,@RequestParam(defaultValue = "0")Integer nroPagina) {
final Integer CANTIDAD_POR_PAGINA = 10;
Pageable page = PageRequest.of(nroPagina,CANTIDAD_POR_PAGINA,Sort.by("id"));
Page<Cargo> CargoPag=cargoRepo.findAllCargo(page);
List<Cargo> cargo = CargoPag.getContent();
if(nombre == null || nombre.trim().isEmpty()) {
Page<Cargo> CargoPag=cargoRepo.findAll(page);
model.addAttribute("cargos", CargoPag.getContent());
model.addAttribute("pages", CargoPag.getTotalPages());
if(nombre == null || nombre.trim().isEmpty()) model.addAttribute("cargos", cargo);
else model.addAttribute("cargos", cargoRepo.findByNombreContainingIgnoreCase(nombre));
}
else {
Page<Cargo> CargoPag=cargoRepo.findByNombreContainingIgnoreCase(nombre,page);
model.addAttribute("pages", CargoPag.getTotalPages());
model.addAttribute("cargos", CargoPag.getContent());
}
return "cargos";
}
......
......@@ -18,6 +18,10 @@ import org.hibernate.type.IntegerType;
import org.hibernate.type.LongType;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.MessageSource;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
......@@ -43,12 +47,18 @@ public class ConvocatoriaController {
@RequestMapping("/convocatorias")
public String menuConvocatorias(Model model,RedirectAttributes redirectAttrs,
@RequestParam(required = false) Long cargoId,
@RequestParam(required = false) Integer isOpen//1: true, 0: false
@RequestParam(required = false) EstadoConvocatoria estado,//1: true, 0: false
@RequestParam(defaultValue = "0")Integer nroPagina
) {
final Integer CANTIDAD_POR_PAGINA = 10;
Pageable page = PageRequest.of(nroPagina,CANTIDAD_POR_PAGINA,Sort.by("id"));
model.addAttribute("cargos", cargoRepo.findAll());
Page<ConvocatoriaCargo> convoPag=convoRepo.findByCargoAndEstado(cargoId,estado,page);
model.addAttribute("convocatorias", convoPag.getContent());
model.addAttribute("pages", convoPag.getTotalPages());
model.addAttribute("estados", EstadoConvocatoria.values());
model.addAttribute("convocatorias", convoRepo.f1ndByCargoAndEstado(new TypedParameterValue(LongType.INSTANCE, cargoId), new Date(), new TypedParameterValue(IntegerType.INSTANCE, isOpen)));
//model.addAttribute("convocatorias",cargoId==null? convoRepo.findAll() : convoRepo.findByCargoId(cargoId));
return "convocatorias";
}
......
......@@ -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;
......@@ -29,6 +28,8 @@ import org.hibernate.jpa.TypedParameterValue;
import org.hibernate.type.IntegerType;
import org.hibernate.type.LongType;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Sort;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
......@@ -77,13 +78,13 @@ 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());
model.addAttribute("nacionalidades", Nacionalidad.values());
model.addAttribute("tiposExperencia", TipoExperiencia.values());
model.addAttribute("CargosDisponibles", convoRepo.f1ndByCargoAndEstado(new TypedParameterValue(LongType.INSTANCE, null), new Date(), new TypedParameterValue(IntegerType.INSTANCE, 1)));
model.addAttribute("CargosDisponibles",
convoRepo.findByCargoAndEstado(null, EstadoConvocatoria.abierto, PageRequest.of(0,Integer.MAX_VALUE,Sort.by("id"))).getContent());
try {
model.addAttribute("ciudades", new ObjectMapper().writeValueAsString(ciuRepo.findAll()));
} catch (JsonProcessingException er) {
......
......@@ -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,
......@@ -100,10 +98,9 @@ public class PostulanteRRHHController {
@RequestParam(required = false)Long convId,
@RequestParam(defaultValue = "0")Integer nroPagina
) throws IOException {
final Integer CANTIDAD_POR_PAGINA = 5;
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());
......@@ -120,7 +117,7 @@ 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);
lvlEng, lvlTec, tecId, instId,cargoId,page,estado,convId);
model.addAttribute("numeroOcurrencias", postulantesPag.getTotalElements());
List<Postulante> postulantes = postulantesPag.getContent();
List<PostulanteListaDTO> postulantesDTO = new ArrayList<>();
......@@ -133,7 +130,7 @@ public class PostulanteRRHHController {
expTotal += Helper.getMonthsDifference(experiencia.getFechaDesde(), experiencia.getFechaHasta());
}
if(expInMonths != null && expInMonths > expTotal) continue;
postulantesDTO.add(new PostulanteListaDTO(postulante.getId(), postulante.getNombre(), postulante.getApellido(), postulante.getDisponibilidad(), postulante.getNivelIngles(), expTotal, postulante.getTecnologias(),postulante.getEstadoPostulante(),postulante.getPostulaciones()));
postulantesDTO.add(new PostulanteListaDTO(postulante.getId(), postulante.getNombre(), postulante.getApellido(), postulante.getNivelIngles(), expTotal, postulante.getTecnologias(),postulante.getEstadoPostulante(),postulante.getPostulaciones()));
}
model.addAttribute("pages", postulantesPag.getTotalPages());
......@@ -151,7 +148,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,
......@@ -165,7 +161,7 @@ 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);
lvlEng, lvlTec, tecId, instId,cargoId,page,estado,convId);
List<Postulante> postulantes = postulantesPag.getContent();
List<PostulanteListaDTO> postulantesDTO = new ArrayList<>();
......@@ -177,7 +173,7 @@ public class PostulanteRRHHController {
expTotal += Helper.getMonthsDifference(experiencia.getFechaDesde(), experiencia.getFechaHasta());
}
if(expInMonths != null && expInMonths > expTotal) continue;
postulantesDTO.add(new PostulanteListaDTO(postulante.getId(), postulante.getNombre(), postulante.getApellido(), postulante.getDisponibilidad(), postulante.getNivelIngles(), expTotal, postulante.getTecnologias(),postulante.getEstadoPostulante(),postulante.getPostulaciones()));
postulantesDTO.add(new PostulanteListaDTO(postulante.getId(), postulante.getNombre(), postulante.getApellido(), postulante.getNivelIngles(), expTotal, postulante.getTecnologias(),postulante.getEstadoPostulante(),postulante.getPostulaciones()));
}
response.setContentType("application/octet-stream");
......
......@@ -47,11 +47,17 @@ public String addtecnologiaView(Model model,@PathVariable(required = false) Long
public String menuTecnologias(Model model,@RequestParam(required = false) String nombre,@RequestParam(defaultValue = "0")Integer nroPagina) {
final Integer CANTIDAD_POR_PAGINA = 10;
Pageable page = PageRequest.of(nroPagina,CANTIDAD_POR_PAGINA,Sort.by("id"));
if(nombre == null || nombre.trim().isEmpty()) {
Page<Tecnologia> tecnologiaPag=tecRepo.findAllTecnologia(page);
List<Tecnologia> tecnologia = tecnologiaPag.getContent();
model.addAttribute("tecnologias", tecnologiaPag.getContent());
model.addAttribute("pages", tecnologiaPag.getTotalPages());
}
else {
Page<Tecnologia> tecnologiaPag=tecRepo.findByNombreContainingIgnoreCase(nombre,page);
model.addAttribute("pages", tecnologiaPag.getTotalPages());
if(nombre == null || nombre.trim().isEmpty()) model.addAttribute("tecnologias", tecnologia);
else model.addAttribute("tecnologias", tecRepo.findByNombreContainingIgnoreCase(nombre));
model.addAttribute("tecnologias", tecnologiaPag.getContent());
}
return "tecnologias";
}
......
......@@ -26,22 +26,6 @@ public class Cargo {
@Column(name = "nombre")
private String nombre;
public Long getId() {
return this.id;
}
public void setId(Long id) {
this.id = id;
}
public String getNombre() {
return this.nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
@OneToMany(mappedBy = "cargo")
@JsonManagedReference
private List<ConvocatoriaCargo> convocatorias;
......
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);
}
}
......@@ -3,7 +3,7 @@ package com.roshka.modelo;
import com.fasterxml.jackson.annotation.JsonValue;
public enum EstadoCivil {
SOLTERO("Soltero/a"),CONCUBINADO("Concubinado/a"),CASADO("Casado/a"),VIUDO("Viudo/a"),DIVORCIADO("Divorciado/a");
SOLTERO("Soltero"),CONCUBINADO("Concubinado"),CASADO("Casado"),VIUDO("Viudo"),DIVORCIADO("Divorciado");
private String descripcion;
private EstadoCivil(String descripcion) {
......
......@@ -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;
......
......@@ -10,7 +10,7 @@ import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
public interface CargoRepository extends JpaRepository<Cargo,Long>{
public List<Cargo> findByNombreContainingIgnoreCase(String nombre);
public Page<Cargo> findByNombreContainingIgnoreCase(String nombre, Pageable pageable);
public boolean existsByNombreIgnoreCase(String nombre);
......
......@@ -4,8 +4,11 @@ import java.util.Date;
import java.util.List;
import com.roshka.modelo.ConvocatoriaCargo;
import com.roshka.modelo.EstadoConvocatoria;
import org.hibernate.jpa.TypedParameterValue;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
......@@ -15,8 +18,13 @@ public interface ConvocatoriaRepository extends JpaRepository<ConvocatoriaCargo,
public List<ConvocatoriaCargo> findByCargoId(Long cargoId);
//@Query(value="selec x from ConvocatoriaCargo x where (x.fechaFinal > ?1)",nativeQuery = true)
//public List<ConvocatoriaCargo> findConvocatoriaCargoByCargo(Date fechaFinal);
@Query("select c from ConvocatoriaCargo c where ( ?1 is null and ?3 is null) or ( ( ( ((c.fechaFin > ?2 or c.fechaFin=null) and ?3 = 1) or ((c.fechaFin < ?2 ) and ?3 = 0)) or ?3 is null ) and (c.cargoId = ?1 or ?1 is null) )")
public List<ConvocatoriaCargo> f1ndByCargoAndEstado(TypedParameterValue cargoId, Date fecha, TypedParameterValue isOpen);
/* @Query("select c from ConvocatoriaCargo c where ( ?1 is null and ?3 is null) or ( ( ( ((c.fechaFin > ?2 or c.fechaFin=null) and ?3 = 1) or ((c.fechaFin < ?2 ) and ?3 = 0)) or ?3 is null ) and (c.cargoId = ?1 or ?1 is null) )")
public Page<ConvocatoriaCargo> f1ndByCargoAndEstado(TypedParameterValue cargoId, Date fecha, TypedParameterValue isOpen, Pageable page); */
@Query("select c from ConvocatoriaCargo c "+
"where (c.cargoId = ?1 or ?1 is null) and "+
"(c.estado = ?2 or ?2 is null)")
public Page<ConvocatoriaCargo> findByCargoAndEstado(Long cargoId, EstadoConvocatoria estado, Pageable page);
@Query("SELECT c FROM ConvocatoriaCargo c WHERE (cargoId=?1)")
public List<ConvocatoriaCargo> filtrarConvocatoriasPorCargo(Long cargoId);
......
......@@ -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,15 +54,15 @@ 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 ) ")
public Page<Postulante> postulantesMultiFiltro(TypedParameterValue nombre, Disponibilidad disponibilidad, Long nivelInges, Long nivel, Long tecnoId, Long instId,Long cargoId, Pageable pageable, EstadoPostulante estado, Long convo);
"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 ) ")
public Page<Postulante> postulantesMultiFiltro(TypedParameterValue nombre, Long nivelInges, Long nivel, Long tecnoId, Long instId,Long cargoId, Pageable pageable, EstadoPostulante estado, Long convo);
@Transactional
@Modifying
......
......@@ -11,7 +11,7 @@ import com.roshka.modelo.Tecnologia;
public interface TecnologiaRepository extends JpaRepository<Tecnologia,Long> {
public List<Tecnologia> findByNombreContainingIgnoreCase(String nombre);
public Page<Tecnologia> findByNombreContainingIgnoreCase(String nombre, Pageable pageable);
public boolean existsByNombreIgnoreCase(String nombre);
......
......@@ -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'))
......@@ -108,7 +107,7 @@ function validarfecha(fechaDesde, fechaHasta){
return "la fecha desde no puede ser mayor a la fecha actual" ;
}
if(fechaHasta =! null && fechaDesde>fechaHasta){
if(fechaHasta =! null && fechaHasta.trim().length >0 && fechaDesde>fechaHasta){
return "la fecha desde no puede ser mayor a la fecha hasta";
}
......@@ -223,7 +222,7 @@ function agregarFieldExpierncia(event){
let pos_rec;
let returnFlag = false;
let requiredValues = ["institucion", "cargo", "fechaDesde", "descripcion"]
let requiredValues = ["institucion", "cargo", "fechaDesde", "descripcion","nombreReferencia","telefonoReferencia"]
formData.forEach((value, key)=>{
if(requiredValues.includes(key)
......@@ -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){
......
......@@ -9,16 +9,25 @@ contentType="text/html;charset=UTF-8" language="java" %>
<h2>Lista de cargos</h2>
<div>
<form>
<label for="cargos">Nombre:</label>
<div class="row justify-content-start gy-2">
<div class="col-auto">
<input
class="form-control"
placeholder="Nombre"
type="text"
name="nombre"
id="nombre"
value="${param.nombre}"
/>
<input type="submit" value="Buscar" />
</div>
<div class="col-auto">
<input type="submit" class="btn btn-primary" value="Buscar" />
</div>
</div>
</form>
<a href="/cargo">Agregar Nuevo Cargo</a>
</div>
<div class="card text-dark bg-light mt-3">
......@@ -48,7 +57,6 @@ contentType="text/html;charset=UTF-8" language="java" %>
</table>
</div>
</div>
</div>
<div class="card-footer">
<div>
<nav aria-label="Page navigation example">
......@@ -62,19 +70,11 @@ contentType="text/html;charset=UTF-8" language="java" %>
</div>
</div>
</div>
</div>
</layout:put>
<layout:put block="scripts" type="APPEND">
<script>
function buscarPagina(nro){
nro--
const aBuscar = 'nroPagina='+nro
if(!location.search) location.search = "?"+aBuscar
const inicial = location.search.search(aBuscar);
if(inicial==-1){//si no se encuentra y hay otros queries
location.search = "&"+aBuscar
}
location.search.replace('nroPagina=',aBuscar)
}
</script>
</layout:put>
</layout:extends>
......@@ -5,29 +5,64 @@
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<layout:extends name="layouts/base.jsp">
<layout:put block="cssDeclaracion" type="APPEND"></layout:put>
<layout:put block="cssDeclaracion" type="APPEND">
<style>
label {
width: auto;
}
</style>
</layout:put>
<layout:put block="contents" type="REPLACE">
<h2>Lista de convocatorias</h2>
<div>
<form>
<label for="cargos">Cargos:</label>
<select name="cargoId" id="cargos">
<div class="row row-cols-2 gy-2">
<div class="col-auto">
<div class="row">
<div class="col-auto">
<label class="form-label" for="cargos">Cargos:</label>
</div>
<div class="col">
<select class="form-select form-select-sm" name="cargoId" id="cargos">
<option value="">Todos los cargos</option>
<c:forEach items="${cargos}" var="cargo">
<option value="${cargo.id}" ${param.cargoId == cargo.id ? "selected" : ""} >${cargo.nombre}</option>
</c:forEach>
</select>
Estado:
<input type="radio" id="cualquiera" name="isOpen" checked value="">
<label for="abierto">Cualquiera</label><br>
<input type="radio" id="abierto" name="isOpen" value="1">
<label for="abierto">Abierto</label><br>
<input type="radio" id="cerrado" name="isOpen" value="0">
<label for="cerrado">Cerrado</label><br>
<input type="submit" value="Buscar">
</div>
</div>
</div>
<div class="col-auto">
<label for="form-check-label">Estado: </label>
<div class="form-check form-check-inline">
<input class="form-check-input" type="radio" id="cualquiera" name="estado" checked value="">
<label class="form-check-label" for="cualquiera">Cualquiera</label><br>
</div>
<c:forEach var="estado" items="${estados}">
<div class="form-check form-check-inline">
<input class="form-check-input" type="radio" id="${estado}" name="estado" value="${estado}">
<label class="form-check-label" for="abierto">${estado}</label><br>
</div>
</c:forEach>
</div>
<div class="col-auto">
<input type="submit" class="btn btn-primary btn-sm" value="Buscar">
</div>
</div>
</form>
</div>
<a href="/convocatoria">Agregar Nueva Convocatoria</a>
<c:if test="${SUCCESS_MESSAGE != null}">
<div id="status_message" style="color: brown;" >${SUCCESS_MESSAGE}</div>
</c:if>
......@@ -55,7 +90,11 @@
<td><fmt:formatDate value="${convocatoria.getFechaInicio()}" pattern="dd-MM-yyyy" /></td>
<td><fmt:formatDate value="${convocatoria.getFechaFin()}" pattern="dd-MM-yyyy" /></td>
<td><a href="/postulantes?convId=${convocatoria.id}">Ver postulantes</a></td>
<td><button onclick=window.location.href="/convocatoria/${convocatoria.id}">Cerrar convocatoria</button></td>
<td>
<c:if test="${convocatoria.getEstado() != 'cerrado'}">
<a class="btn btn-secondary" href="/convocatoria/${convocatoria.id}">Cerrar convocatoria</a>
</c:if>
</td>
</tr>
</c:forEach>
......@@ -65,6 +104,17 @@
</table>
</div>
</div>
<div class="card-footer">
<div>
<nav aria-label="Page navigation example">
<ul class="pagination">
<c:forEach begin="1" end="${pages}" var="nro">
<li class="page-item ${(param.nroPagina == null and nro == 1) or param.nroPagina == nro-1 ? 'active' : ''}"><a class="page-link" href="javascript:buscarPagina(${nro})">${nro}</a></li>
</c:forEach>
</ul>
</nav>
</div>
</div>
</div>
</layout:put>
......
......@@ -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>
......
......@@ -78,6 +78,29 @@
</div>
<layout:block name="scripts">
<script>
function buscarPagina(nro){
nro--
const queries = location.search.split("&");
let existe = false;
if(location.search.length == 0 ) location.search = "?nroPagina="+nro;
let fullquery = "";
for (const query of queries) {
let [key, value] = query.split("=");
if(key.includes('nroPagina')){
fullquery += key + "=" + nro + "&";
existe = true;
}
else{
fullquery += key + "=" + value + "&";
}
}
if(!existe) fullquery += "nroPagina" + "=" + nro + "&";
location.search = fullquery.substring(0,fullquery.length-1);
}
</script>
</layout:block>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-ka7Sk0Gln4gmtz2MlQnikT1wXgYsOg+OMhuP+IlRH9sENBO0LRn5q+8nbTov4+1p" crossorigin="anonymous"></script>
......
......@@ -132,14 +132,8 @@
</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">
<label for="estadoCivil" class="form-label"> Estado civil</label>
......@@ -149,13 +143,25 @@
</c:forEach>
</select>
</div>
-->
<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">
<option value='Soltero' selected>Soltero/a</option>
<option value='Concubinado'>Concubinado/a</option>
<option value='Casado'>Casado/a</option>
<option value='Viudo'>Viudo/a</option>
<option value='Divorciado'>Divorciado/a</option>
</select>
</div>
<!-- Button Agregar Cargo al que postulas -->
<hr>
<div class="mb-3 col-md-12">
<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 +289,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>
......@@ -368,17 +351,7 @@
}
function buscarPagina(nro){
nro--
const aBuscar = 'nroPagina='+nro
if(!location.search) location.search = aBuscar
const inicial = location.search.search(aBuscar);
if(inicial==-1){//si no se encuentra y hay otros queries
location.search = "&"+aBuscar;
}
location.search.replace('nroPagina=',aBuscar)
console.log(location.search)
}
const tecId = document.querySelector("#tecId");
const lvlTec = document.querySelector("#lvlTec");
tecId.addEventListener('change',habilitarLvlTec);
......
......@@ -9,11 +9,26 @@
<div>
<form>
<label for="tecnologias">Nombre:</label>
<input type="text" name="nombre" id="nombre" value="${param.nombre}"/>
<input type="submit" value="Buscar">
<div class="row justify-content-start gy-2">
<div class="col-auto">
<input
class="form-control"
placeholder="Nombre"
type="text"
name="nombre"
id="nombre"
value="${param.nombre}"
/>
</div>
<div class="col-auto">
<input type="submit" class="btn btn-primary" value="Buscar" />
</div>
</div>
</form>
<a href="/tecnologia">Agregar Nueva Tecnologia</a>
</div>
<div class="card text-dark bg-light mt-3">
......@@ -61,17 +76,6 @@
</layout:put>
<layout:put block="scripts" type="APPEND">
<script>
function buscarPagina(nro){
nro--
const aBuscar = 'nroPagina='+nro
if(!location.search) location.search = "?"+aBuscar
const inicial = location.search.search(aBuscar);
if(inicial==-1){//si no se encuentra y hay otros queries
location.search = "&"+aBuscar
}
location.search.replace('nroPagina=',aBuscar)
}
</script>
</layout:put>
</layout:extends>
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