diff --git a/curriculumsearch/src/main/java/com/roshka/controller/PostulanteController.java b/curriculumsearch/src/main/java/com/roshka/controller/PostulanteController.java index b7bc621..11e3b5d 100644 --- a/curriculumsearch/src/main/java/com/roshka/controller/PostulanteController.java +++ b/curriculumsearch/src/main/java/com/roshka/controller/PostulanteController.java @@ -5,9 +5,15 @@ import java.util.List; import javax.validation.ConstraintViolationException; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; import com.roshka.modelo.Disponibilidad; -import com.roshka.modelo.Modalidad; +import com.roshka.modelo.EstadoCivil; +import com.roshka.modelo.Nacionalidad; import com.roshka.modelo.Postulante; +import com.roshka.modelo.TipoExperiencia; +import com.roshka.repositorio.CiudadRepository; +import com.roshka.repositorio.DepartamentoRepository; import com.roshka.repositorio.ExperienciaRepository; import com.roshka.repositorio.PostulanteRepository; import com.roshka.repositorio.TecnologiaRepository; @@ -32,13 +38,16 @@ public class PostulanteController { @Autowired ExperienciaRepository expRepo; + + @Autowired + CiudadRepository ciuRepo; + + @Autowired + DepartamentoRepository depRepo; + @RequestMapping("/") public String index() { - List j= post.personasConExperienciaMayor(30); - for (Postulante postulante : j) { - System.out.println(postulante.getNombre()); - - } + return "index"; } @@ -54,8 +63,19 @@ public class PostulanteController { @RequestMapping("/postulante") public String getFormPostulante(Model model){ model.addAttribute("tecnologias", tecRepo.findAll()); - model.addAttribute("modalidades", Modalidad.values()); model.addAttribute("disponibilidades", Disponibilidad.values()); + //TODO: + model.addAttribute("estadosCiviles", EstadoCivil.values()); + model.addAttribute("nacionalidades", Nacionalidad.values()); + model.addAttribute("tiposExperencia", TipoExperiencia.values()); + try { + model.addAttribute("ciudades", new ObjectMapper().writeValueAsString(ciuRepo.findAll())); + } catch (JsonProcessingException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + model.addAttribute("departamentos", depRepo.findAll()); + return "postulante-form"; } diff --git a/curriculumsearch/src/main/java/com/roshka/modelo/Ciudad.java b/curriculumsearch/src/main/java/com/roshka/modelo/Ciudad.java index b19ada8..9ddced7 100644 --- a/curriculumsearch/src/main/java/com/roshka/modelo/Ciudad.java +++ b/curriculumsearch/src/main/java/com/roshka/modelo/Ciudad.java @@ -12,6 +12,8 @@ import javax.persistence.ManyToOne; import javax.persistence.Table; +import com.fasterxml.jackson.annotation.JsonBackReference; + @Entity @Table(name="ciudad") public class Ciudad{ @@ -34,6 +36,7 @@ public class Ciudad{ @ManyToOne(targetEntity = Departamento.class,fetch = FetchType.EAGER) @JoinColumn(name="departamento_id",insertable = false, updatable = false) + @JsonBackReference private Departamento departamento; diff --git a/curriculumsearch/src/main/java/com/roshka/modelo/Departamento.java b/curriculumsearch/src/main/java/com/roshka/modelo/Departamento.java index da1d0f6..6297df1 100644 --- a/curriculumsearch/src/main/java/com/roshka/modelo/Departamento.java +++ b/curriculumsearch/src/main/java/com/roshka/modelo/Departamento.java @@ -9,6 +9,8 @@ import javax.persistence.Id; import javax.persistence.OneToMany; import javax.persistence.Table; +import com.fasterxml.jackson.annotation.JsonManagedReference; + @Entity @Table(name="departamento") public class Departamento { @@ -18,6 +20,7 @@ public class Departamento { private String nombre; @OneToMany(mappedBy = "departamento",cascade = CascadeType.ALL) + @JsonManagedReference private List ciudad; diff --git a/curriculumsearch/src/main/java/com/roshka/modelo/EstadoCivil.java b/curriculumsearch/src/main/java/com/roshka/modelo/EstadoCivil.java new file mode 100644 index 0000000..6435060 --- /dev/null +++ b/curriculumsearch/src/main/java/com/roshka/modelo/EstadoCivil.java @@ -0,0 +1,17 @@ +package com.roshka.modelo; + +import com.fasterxml.jackson.annotation.JsonValue; + +public enum EstadoCivil { + SOLTERO("Soltero"),CONCUBINADO("Concubinado"),CASADO("Casado"),VIUDO("Viudo"),DIVORCIADO("Divorciado"); + private String descripcion; + + private EstadoCivil(String descripcion) { + this.descripcion = descripcion; + } + + @JsonValue + public String getDescripcion() { + return descripcion; + } +} diff --git a/curriculumsearch/src/main/java/com/roshka/modelo/Experiencia.java b/curriculumsearch/src/main/java/com/roshka/modelo/Experiencia.java index 6aa2b16..00d3368 100644 --- a/curriculumsearch/src/main/java/com/roshka/modelo/Experiencia.java +++ b/curriculumsearch/src/main/java/com/roshka/modelo/Experiencia.java @@ -53,8 +53,38 @@ public class Experiencia { @JoinColumn private Postulante postulante; - @ManyToOne + @Column(name = "tipo_experiencia") + @NotNull private TipoExperiencia tipoExperiencia; + + @Column(name = "descripcion") + @NotBlank + private String descripcion; + + public String getDescripcion() { + return descripcion; + } + public void setDescripcion(String descripcion) { + this.descripcion = descripcion; + } + + + public Date getFechaDesde() { + return fechaDesde; + } + public String getMotivoSalida() { + return motivoSalida; + } + public TipoExperiencia getTipoExperiencia() { + return tipoExperiencia; + } + + public void setMotivoSalida(String motivoSalida) { + this.motivoSalida = motivoSalida; + } + public void setTipoExperiencia(TipoExperiencia tipoExperiencia) { + this.tipoExperiencia = tipoExperiencia; + } public long getId() { diff --git a/curriculumsearch/src/main/java/com/roshka/modelo/ExperienciaReconocimiento.java b/curriculumsearch/src/main/java/com/roshka/modelo/ExperienciaReconocimiento.java deleted file mode 100644 index 1cb47a8..0000000 --- a/curriculumsearch/src/main/java/com/roshka/modelo/ExperienciaReconocimiento.java +++ /dev/null @@ -1,50 +0,0 @@ -package com.roshka.modelo; - -import javax.persistence.*; - -import com.fasterxml.jackson.annotation.JsonBackReference; - -@Entity -@Table(name = "experiencia_reconocimiento") -public class ExperienciaReconocimiento { - @Id - @GeneratedValue(strategy = GenerationType.AUTO) - @Column(name="id") - private long id; - - @ManyToOne(optional = false) - @JoinColumn - @JsonBackReference - private Experiencia experiencia; - - @Column(name="nombre") - private String nombre; - - @Column(name="certificado") - private String certificado; - - public long getId() { - return id; - } - public void setId(long id) { - this.id = id; - } - public Experiencia getExperiencia() { - return experiencia; - } - public void setExperiencia(Experiencia experiencia) { - this.experiencia = experiencia; - } - public String getCertificado() { - return certificado; - } - public String getNombre() { - return nombre; - } - public void setCertificado(String certificado) { - this.certificado = certificado; - } - public void setNombre(String nombre) { - this.nombre = nombre; - } -} diff --git a/curriculumsearch/src/main/java/com/roshka/modelo/ModalidadConverter.java b/curriculumsearch/src/main/java/com/roshka/modelo/ModalidadConverter.java deleted file mode 100644 index abba857..0000000 --- a/curriculumsearch/src/main/java/com/roshka/modelo/ModalidadConverter.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.roshka.modelo; - -import java.util.Arrays; - -import javax.persistence.AttributeConverter; -import javax.persistence.Converter; - -@Converter(autoApply = true) -public class ModalidadConverter implements AttributeConverter { - - @Override - public String convertToDatabaseColumn(Modalidad modalidad) { - if (modalidad == null) { - return null; - } - return modalidad.getCode(); - } - - @Override - public Modalidad convertToEntityAttribute(String code) { - if (code == null) { - return null; - } - - return Arrays.stream(Modalidad.values()) - .filter(c -> c.getCode().equals(code)) - .findFirst() - .orElseThrow(IllegalArgumentException::new); - } -} diff --git a/curriculumsearch/src/main/java/com/roshka/modelo/Modalidad.java b/curriculumsearch/src/main/java/com/roshka/modelo/Nacionalidad.java similarity index 62% rename from curriculumsearch/src/main/java/com/roshka/modelo/Modalidad.java rename to curriculumsearch/src/main/java/com/roshka/modelo/Nacionalidad.java index b2a500f..3b62edc 100644 --- a/curriculumsearch/src/main/java/com/roshka/modelo/Modalidad.java +++ b/curriculumsearch/src/main/java/com/roshka/modelo/Nacionalidad.java @@ -2,22 +2,16 @@ package com.roshka.modelo; import com.fasterxml.jackson.annotation.JsonValue; -public enum Modalidad { - PRESENCIAL("P","Presencial"), SEMIPRESENCIAL("S","Semi Presencial"), REMOTO("R","Remoto"); +public enum Nacionalidad { + PY("Paraguayo"),EX("Extranjero"); - private String code; private String descripcion; - private Modalidad(String code, String descripcion) { - this.code = code; + private Nacionalidad(String descripcion) { this.descripcion = descripcion; } @JsonValue - public String getCode() { - return code; - } - public String getDescripcion() { return descripcion; } diff --git a/curriculumsearch/src/main/java/com/roshka/modelo/Postulante.java b/curriculumsearch/src/main/java/com/roshka/modelo/Postulante.java index ec0912b..55a5847 100644 --- a/curriculumsearch/src/main/java/com/roshka/modelo/Postulante.java +++ b/curriculumsearch/src/main/java/com/roshka/modelo/Postulante.java @@ -68,11 +68,11 @@ public class Postulante { @Column(name="estado_civil") @NotNull - private String estadoCivil; + private EstadoCivil estadoCivil; @Column(name="nacionalidad", length = 2) @NotNull - private String nacionalidad; + private Nacionalidad nacionalidad; @Column(name = "tipo_documento", length = 2) @NotBlank(message = "este campo debe estar completo") @@ -212,23 +212,23 @@ public class Postulante { public void setCiudadId(Long ciudadId) { this.ciudadId = ciudadId; } - public void setEstadoCivil(String estadoCivil) { + public void setEstadoCivil(EstadoCivil estadoCivil) { this.estadoCivil = estadoCivil; } public void setTipoDocumento(String tipoDocumento) { this.tipoDocumento = tipoDocumento; } - public String getEstadoCivil() { + public EstadoCivil getEstadoCivil() { return estadoCivil; } public String getTipoDocumento() { return tipoDocumento; } - public String getNacionalidad() { + public Nacionalidad getNacionalidad() { return nacionalidad; } - public void setNacionalidad(String nacionalidad) { + public void setNacionalidad(Nacionalidad nacionalidad) { this.nacionalidad = nacionalidad; } diff --git a/curriculumsearch/src/main/java/com/roshka/modelo/TipoExperiencia.java b/curriculumsearch/src/main/java/com/roshka/modelo/TipoExperiencia.java index 25c5dd3..8d1c8fb 100644 --- a/curriculumsearch/src/main/java/com/roshka/modelo/TipoExperiencia.java +++ b/curriculumsearch/src/main/java/com/roshka/modelo/TipoExperiencia.java @@ -1,43 +1,20 @@ package com.roshka.modelo; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; +import com.fasterxml.jackson.annotation.JsonValue; -import javax.persistence.Table; +public enum TipoExperiencia { + TRABAJO_NORMAL("Trabajo Normal"), PASANTIA("Pasantia"); -@Entity -@Table(name = "tipo_experiencia") -public class TipoExperiencia { - - @Id - @GeneratedValue(strategy = GenerationType.AUTO) - @Column(name="id") - private long id; - - @Column(name = "descripcion") private String descripcion; - - - public long getId() { - return id; - } - - public void setId(long id) { - this.id = id; + private TipoExperiencia(String descripcion){ + this.descripcion = descripcion; } + @JsonValue public String getDescripcion() { return descripcion; } - public void setDescripcion(String descripcion) { - this.descripcion = descripcion; - } - - } diff --git a/curriculumsearch/src/main/java/com/roshka/repositorio/ExperienciaReconocimientoRepository.java b/curriculumsearch/src/main/java/com/roshka/repositorio/ExperienciaReconocimientoRepository.java deleted file mode 100644 index 1c8d9df..0000000 --- a/curriculumsearch/src/main/java/com/roshka/repositorio/ExperienciaReconocimientoRepository.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.roshka.repositorio; - -import org.springframework.data.jpa.repository.JpaRepository; - -import com.roshka.modelo.ExperienciaReconocimiento; - - -public interface ExperienciaReconocimientoRepository extends JpaRepository { - - -} diff --git a/curriculumsearch/src/main/resources/json/postulante.json b/curriculumsearch/src/main/resources/json/postulante.json index 47c7a0c..c60bff8 100644 --- a/curriculumsearch/src/main/resources/json/postulante.json +++ b/curriculumsearch/src/main/resources/json/postulante.json @@ -1,8 +1,8 @@ [ { - "resumen": "In irure aliquip qui cillum veniam sint amet amet sint ex proident anim mollit.", - "nacionalidad":"py", - "estadoCivil":"SOLTERO", + "resumen": "In irure aliquip qui cillum veniam sint amet amet sint ex proident anim mollit.", + "nacionalidad":"Paraguayo", + "estadoCivil":"Soltero", "tipoDocumento":"ci", "nombre": "Taylor", "apellido": "Obrien", @@ -19,16 +19,11 @@ "institucion": "Fanfare", "fechaDesde": "2014-09-10", "fechaHasta": "2016-01-01", + "tipoExperiencia":"Trabajo Normal", "cargo": "dba", "descripcion": "Enim qui Lorem ut magna.", "nombreReferencia": "Marissa", - "telefonoReferencia": "(804) 471-2089", - "reconocimientos": [ - { - "nombre": "ganador de x", - "certificado": "cert" - } - ] + "telefonoReferencia": "(804) 471-2089" } ], "estudios": [ @@ -69,8 +64,8 @@ }, { "resumen": "Do nostrud aliqua adipisicing in sunt aute id do elit ut dolor ad aliquip.", - "nacionalidad":"py", - "estadoCivil":"SOLTERO", + "nacionalidad":"Paraguayo", + "estadoCivil":"Soltero", "tipoDocumento":"ci", "nombre": "Hopkins", "apellido": "Parks", @@ -90,13 +85,8 @@ "cargo": "developer frontend", "descripcion": "Consequat fugiat qui sint deserunt ullamco.", "nombreReferencia": "Iva", - "telefonoReferencia": "(947) 580-2363", - "reconocimientos": [ - { - "nombre": "ganador de x", - "certificado": "cert" - } - ] + "tipoExperiencia":"Trabajo Normal", + "telefonoReferencia": "(947) 580-2363" } ], "estudios": [ @@ -125,8 +115,8 @@ }, { "resumen": "Occaecat non cupidatat amet reprehenderit consectetur ullamco et.", - "nacionalidad":"py", - "estadoCivil":"SOLTERO", + "nacionalidad":"Paraguayo", + "estadoCivil":"Soltero", "tipoDocumento":"ci", "nombre": "Alejandra", "apellido": "Riggs", @@ -144,15 +134,10 @@ "fechaDesde": "2014-08-26", "fechaHasta": "2016-01-01", "cargo": "dba", + "tipoExperiencia":"Trabajo Normal", "descripcion": "Aute culpa ea mollit adipisicing dolore dolore amet adipisicing occaecat commodo enim cillum.", "nombreReferencia": "Rose", - "telefonoReferencia": "(853) 471-2006", - "reconocimientos": [ - { - "nombre": "mejor alumno", - "certificado": "cert" - } - ] + "telefonoReferencia": "(853) 471-2006" } ], "estudios": [ @@ -181,8 +166,8 @@ }, { "resumen": "Qui ullamco excepteur velit ad ullamco id id nisi irure dolore cupidatat mollit ullamco veniam.", - "nacionalidad":"py", - "estadoCivil":"SOLTERO", + "nacionalidad":"Paraguayo", + "estadoCivil":"Soltero", "tipoDocumento":"ci", "nombre": "Angelina", "apellido": "Wallace", @@ -203,12 +188,7 @@ "descripcion": "Aliquip occaecat minim dolor enim commodo.", "nombreReferencia": "Elba", "telefonoReferencia": "(881) 568-2597", - "reconocimientos": [ - { - "nombre": "ganador de x", - "certificado": "cert" - } - ] + "tipoExperiencia":"Trabajo Normal" } ], "estudios": [ @@ -237,8 +217,8 @@ }, { "resumen": "Deserunt tempor ut et eiusmod et labore Lorem.", - "nacionalidad":"py", - "estadoCivil":"SOLTERO", + "nacionalidad":"Paraguayo", + "estadoCivil":"Soltero", "tipoDocumento":"ci", "nombre": "Rivas", "apellido": "Owens", @@ -259,12 +239,7 @@ "descripcion": "Dolore nulla deserunt fugiat est reprehenderit tempor qui excepteur.", "nombreReferencia": "Crawford", "telefonoReferencia": "(903) 568-2045", - "reconocimientos": [ - { - "nombre": "ganador de x", - "certificado": "cert" - } - ] + "tipoExperiencia":"Trabajo Normal" } ], "estudios": [ @@ -293,8 +268,8 @@ }, { "resumen": "Aliqua est adipisicing do exercitation sit laborum aliquip aliqua adipisicing enim aute.", - "nacionalidad":"py", - "estadoCivil":"SOLTERO", + "nacionalidad":"Paraguayo", + "estadoCivil":"Soltero", "tipoDocumento":"ci", "nombre": "Estelle", "apellido": "Gamble", @@ -315,12 +290,7 @@ "descripcion": "Do do est ad ea pariatur aliquip sit ipsum in duis laborum velit magna.", "nombreReferencia": "Schultz", "telefonoReferencia": "(903) 420-3902", - "reconocimientos": [ - { - "nombre": "mejor alumno", - "certificado": "cert" - } - ] + "tipoExperiencia":"Trabajo Normal" } ], "estudios": [ @@ -349,8 +319,8 @@ }, { "resumen": "Officia eiusmod ut reprehenderit tempor consequat elit amet ex voluptate aute anim do.", - "nacionalidad":"py", - "estadoCivil":"SOLTERO", + "nacionalidad":"Paraguayo", + "estadoCivil":"Soltero", "tipoDocumento":"ci", "nombre": "Mariana", "apellido": "Ratliff", @@ -371,12 +341,8 @@ "descripcion": "Anim labore anim veniam deserunt ex aute.", "nombreReferencia": "Francesca", "telefonoReferencia": "(961) 420-2150", - "reconocimientos": [ - { - "nombre": "ganador de x", - "certificado": "cert" - } - ] + "tipoExperiencia":"Trabajo Normal" + } ], "estudios": [ diff --git a/curriculumsearch/src/main/resources/static/main.js b/curriculumsearch/src/main/resources/static/main.js index 357ce62..0eb3df2 100644 --- a/curriculumsearch/src/main/resources/static/main.js +++ b/curriculumsearch/src/main/resources/static/main.js @@ -253,6 +253,27 @@ function eliminarEstudio(event) { - - - +//evento para cambio de ciudad segun departamento +const depSelect = document.querySelector("#departamentos"); +depSelect.addEventListener("change",evt => listarCiudades(evt.target.value)) +listarCiudades(depSelect.value); +//variable ciudades esta declarada en el jsp +/** + * Listar todas las ciudades en el select de ciudades + * @param {*} depId + */ +function listarCiudades(depId){ + const ciuAmostrar = ciudades.filter(c=>c.departamentoId==depId); + const ciudad = document.querySelector("select[name=ciudadId]"); + const frag = document.createDocumentFragment(); + for (const ciu of ciuAmostrar) { + const opt = document.createElement("option"); + opt.value = ciu.id; + opt.innerHTML = ciu.nombre; + opt.setAttribute("data-departamentoId",ciu.departamentoId); + frag.appendChild(opt) + } + ciudad.replaceChildren(frag); + + +} diff --git a/curriculumsearch/src/main/webapp/jsp/postulante-form.jsp b/curriculumsearch/src/main/webapp/jsp/postulante-form.jsp index 1e95353..07eb3b6 100644 --- a/curriculumsearch/src/main/webapp/jsp/postulante-form.jsp +++ b/curriculumsearch/src/main/webapp/jsp/postulante-form.jsp @@ -171,7 +171,23 @@ Luce Bien! + +
+ +
+
+ + +
+ Luce Bien! +
+
@@ -181,13 +197,23 @@
-
- - -
- Luce Bien! -
+
+ +
+ +
+ + +
@@ -225,10 +251,10 @@
- - + + @@ -316,35 +342,22 @@
+ +
+ + +
+
+ + +
+ -
- -
- -
-
- -
-
- -
-
-
-
- -
-
- -
-
-
-
- -
-
- -
-
@@ -460,6 +473,10 @@ + \ No newline at end of file