Commit 196c6893 by Cesar Giulano Gonzalez Maqueda

Merge con joel

parents 19be8b2c cc771cb7
...@@ -6,9 +6,13 @@ import java.util.List; ...@@ -6,9 +6,13 @@ import java.util.List;
import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import com.roshka.modelo.Ciudad;
import com.roshka.modelo.Departamento;
import com.roshka.modelo.Postulante; import com.roshka.modelo.Postulante;
import com.roshka.modelo.PostulanteTecnologia; import com.roshka.modelo.PostulanteTecnologia;
import com.roshka.modelo.Tecnologia; import com.roshka.modelo.Tecnologia;
import com.roshka.repositorio.CiudadRepository;
import com.roshka.repositorio.DepartamentoRepository;
import com.roshka.repositorio.PostulanteRepository; import com.roshka.repositorio.PostulanteRepository;
import com.roshka.repositorio.TecnologiaRepository; import com.roshka.repositorio.TecnologiaRepository;
...@@ -29,16 +33,27 @@ public class CurriculumsearchApplication { ...@@ -29,16 +33,27 @@ public class CurriculumsearchApplication {
} }
@Bean @Bean
CommandLineRunner runner(PostulanteRepository postRepo,TecnologiaRepository tecRepo) { CommandLineRunner runner(PostulanteRepository postRepo,TecnologiaRepository tecRepo,DepartamentoRepository depR, CiudadRepository ciudR) {
return args -> { return args -> {
// read json and write to db
ObjectMapper mapper = new ObjectMapper();
TypeReference<List<Postulante>> typeReference = new TypeReference<List<Postulante>>(){};
InputStream inputStream = TypeReference.class.getResourceAsStream("/json/postulante.json");
try { try {
// read json and write to db
ObjectMapper mapper = new ObjectMapper();
TypeReference<List<Departamento>> typeReference1 = new TypeReference<List<Departamento>>(){};
InputStream inputStream = TypeReference.class.getResourceAsStream("/json/Departamento.json");
List<Departamento> departamento= mapper.readValue(inputStream,typeReference1);
depR.saveAll(departamento);
System.out.println("Departamentos Saved!");
TypeReference<List<Ciudad>> typeReference2 = new TypeReference<List<Ciudad>>(){};
inputStream = TypeReference.class.getResourceAsStream("/json/Ciudad.json");
List<Ciudad> ciudades= mapper.readValue(inputStream,typeReference2);
ciudR.saveAll(ciudades);
System.out.println("Cuidad Saved!");
TypeReference<List<Postulante>> typeReference = new TypeReference<List<Postulante>>(){};
inputStream = TypeReference.class.getResourceAsStream("/json/postulante.json");
List<Postulante> postulantes = mapper.readValue(inputStream,typeReference); List<Postulante> postulantes = mapper.readValue(inputStream,typeReference);
postRepo.saveAll(postulantes); postRepo.saveAll(postulantes);
System.out.println("postulantes Saved!"); System.out.println("postulantes Saved!");
} catch (IOException e){ } catch (IOException e){
System.out.println("Unable to save tecnologias: " + e.getMessage()); System.out.println("Unable to save tecnologias: " + e.getMessage());
} }
......
...@@ -6,6 +6,15 @@ import java.util.List; ...@@ -6,6 +6,15 @@ import java.util.List;
import javax.validation.ConstraintViolationException; import javax.validation.ConstraintViolationException;
import com.roshka.modelo.*; 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;
import com.roshka.modelo.TipoExperiencia;
import com.roshka.repositorio.CiudadRepository;
import com.roshka.repositorio.DepartamentoRepository;
import com.roshka.repositorio.ExperienciaRepository; import com.roshka.repositorio.ExperienciaRepository;
import com.roshka.repositorio.InstitucionRepository; import com.roshka.repositorio.InstitucionRepository;
import com.roshka.repositorio.PostulanteRepository; import com.roshka.repositorio.PostulanteRepository;
...@@ -27,17 +36,24 @@ public class PostulanteController { ...@@ -27,17 +36,24 @@ public class PostulanteController {
TecnologiaRepository tecRepo; TecnologiaRepository tecRepo;
ExperienciaRepository expRepo; ExperienciaRepository expRepo;
InstitucionRepository institucionRepository; InstitucionRepository institucionRepository;
DepartamentoRepository depRepo;
CiudadRepository ciuRepo;
@Autowired @Autowired
public PostulanteController(PostulanteRepository post, TecnologiaRepository tecRepo, ExperienciaRepository expRepo, InstitucionRepository institucionRepository) { public PostulanteController(PostulanteRepository post, TecnologiaRepository tecRepo, ExperienciaRepository expRepo, InstitucionRepository institucionRepository, DepartamentoRepository depRepo, CiudadRepository ciuRepo) {
this.post = post; this.post = post;
this.tecRepo = tecRepo; this.tecRepo = tecRepo;
this.expRepo = expRepo; this.expRepo = expRepo;
this.institucionRepository = institucionRepository; this.institucionRepository = institucionRepository;
this.depRepo = depRepo;
this.ciuRepo = ciuRepo;
} }
@RequestMapping("/") @RequestMapping("/")
public String index() { public String index() {
return "index"; return "index";
} }
...@@ -53,10 +69,20 @@ public class PostulanteController { ...@@ -53,10 +69,20 @@ public class PostulanteController {
@RequestMapping("/postulante") @RequestMapping("/postulante")
public String getFormPostulante(Model model){ public String getFormPostulante(Model model){
model.addAttribute("tecnologias", tecRepo.findAll()); model.addAttribute("tecnologias", tecRepo.findAll());
model.addAttribute("modalidades", Modalidad.values());
model.addAttribute("disponibilidades", Disponibilidad.values()); model.addAttribute("disponibilidades", Disponibilidad.values());
model.addAttribute("tiposDeEstudio", TipoDeEstudio.values()); model.addAttribute("tiposDeEstudio", TipoDeEstudio.values());
model.addAttribute("estadosEstudio", EstadoEstudio.values()); model.addAttribute("estadosEstudio", EstadoEstudio.values());
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"; return "postulante-form";
} }
......
package com.roshka.modelo;
import java.util.List;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.validation.constraints.NotBlank;
import com.fasterxml.jackson.annotation.JsonManagedReference;
@Entity
@Table(name = "cargo")
public class Cargo {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
@NotBlank
@Column(name = "nombre")
private String nombre;
@OneToMany(mappedBy = "cargo")
@JsonManagedReference
private List<ConvocatoriaCargo> convocatorias;
public long getId() {
return id;
}
public String getNombre() {
return nombre;
}
public void setId(long id) {
this.id = id;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public List<ConvocatoriaCargo> getConvocatorias() {
return convocatorias;
}
public void setConvocatorias(List<ConvocatoriaCargo> convocatorias) {
this.convocatorias = convocatorias;
}
}
package com.roshka.modelo;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import com.fasterxml.jackson.annotation.JsonBackReference;
@Entity
@Table(name="ciudad")
public class Ciudad{
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
public Long id;
@Column(name="nombre")
public String nombre;
@Column(name="departamento_id")
private Long departamentoId;
public Long getDepartamentoId() {
return this.departamentoId;
}
public void setDepartamentoId(Long departamentoId) {
this.departamentoId = departamentoId;
}
@ManyToOne(targetEntity = Departamento.class,fetch = FetchType.EAGER)
@JoinColumn(name="departamento_id",insertable = false, updatable = false)
@JsonBackReference
private Departamento departamento;
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;
}
public Departamento getDepartamento() {
return this.departamento;
}
public void setDepartamento(Departamento departamento) {
this.departamento = departamento;
}
}
package com.roshka.modelo;
import java.util.Date;
import java.util.List;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import com.fasterxml.jackson.annotation.JsonBackReference;
import com.roshka.utils.Helper;
@Entity
@Table(name = "convocatoria_cargo")
public class ConvocatoriaCargo {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
@ManyToOne()
@JoinColumn
@JsonBackReference
private Cargo cargo;
@Column(name = "fecha_inicio")
private Date fechaInicio;
@Column(name = "fecha_fin")
private Date fechaFin;
@Column(name = "cupos")
private int cupos;
@ManyToMany(mappedBy = "postulaciones")
private List<Postulante> postulantes;
public long getId() {
return id;
}
public Cargo getCargo() {
return cargo;
}
public int getCupos() {
return cupos;
}
public Date getFechaFin() {
return fechaFin;
}
public Date getFechaInicio() {
return fechaInicio;
}
public void setId(long id) {
this.id = id;
}
public void setCargo(Cargo cargo) {
this.cargo = cargo;
}
public void setCupos(int cupos) {
this.cupos = cupos;
}
public void setFechaFin(Date fechaFin) {
this.fechaFin = fechaFin;
}
public void setFechaInicio(Date fechaInicio) {
this.fechaInicio = fechaInicio;
}
public void setFechaFin(String fechaFin) {
this.fechaFin = Helper.convertirFecha(fechaFin);
}
public void setFechaInicio(String fechaInicio) {
this.fechaInicio = Helper.convertirFecha(fechaInicio);
}
public List<Postulante> getPostulantes() {
return postulantes;
}
public void setPostulantes(List<Postulante> postulantes) {
this.postulantes = postulantes;
}
}
package com.roshka.modelo;
import java.util.List;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
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 {
@Id
private Long id;
@Column(name="nombre")
private String nombre;
@OneToMany(mappedBy = "departamento",cascade = CascadeType.ALL)
@JsonManagedReference
private List<Ciudad> ciudad;
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;
}
public List<Ciudad> getCiudad() {
return this.ciudad;
}
public void setCiudad(List<Ciudad> ciudad) {
this.ciudad = ciudad;
}
}
\ No newline at end of file
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;
}
}
...@@ -24,7 +24,7 @@ public class Estudio { ...@@ -24,7 +24,7 @@ public class Estudio {
private TipoDeEstudio tipoDeEstudio; private TipoDeEstudio tipoDeEstudio;
@NotNull(message = "Este campo no puede estar vacio") @NotNull(message = "Este campo no puede estar vacio")
@ManyToOne(fetch = FetchType.EAGER) @ManyToOne(cascade = CascadeType.PERSIST, fetch = FetchType.EAGER)
@JsonBackReference @JsonBackReference
private Institucion institucion; private Institucion institucion;
......
...@@ -45,18 +45,49 @@ public class Experiencia { ...@@ -45,18 +45,49 @@ public class Experiencia {
@NotBlank(message = "Este campo no puede estar vacio") @NotBlank(message = "Este campo no puede estar vacio")
private String cargo; private String cargo;
@Column(name = "descripcion") @Column(name="motivo_salida")
private String descripcion; private String motivoSalida;
@JsonBackReference(value = "experiencia-postulante") @JsonBackReference(value = "experiencia-postulante")
@ManyToOne(optional = false) @ManyToOne(optional = false)
@JoinColumn @JoinColumn
private Postulante postulante; private Postulante postulante;
@JsonManagedReference(value = "experienciareconocimiento-experiencia") @Column(name = "tipo_experiencia")
@OneToMany(mappedBy = "experiencia",cascade = CascadeType.ALL) @NotNull
private List<ExperienciaReconocimiento> reconocimientos; 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() { public long getId() {
return id; return id;
} }
...@@ -105,16 +136,5 @@ public class Experiencia { ...@@ -105,16 +136,5 @@ public class Experiencia {
public Postulante getPostulante() { public Postulante getPostulante() {
return postulante; return postulante;
} }
public String getDescripcion() {
return descripcion;
}
public void setDescripcion(String descripcion) {
this.descripcion = descripcion;
}
public void setReconocimientos(List<ExperienciaReconocimiento> reconocimientos) {
this.reconocimientos = reconocimientos;
}
public List<ExperienciaReconocimiento> getReconocimientos() {
return reconocimientos;
}
} }
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(value = "experienciareconocimiento-experiencia")
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;
}
}
package com.roshka.modelo;
import java.util.Arrays;
import javax.persistence.AttributeConverter;
import javax.persistence.Converter;
@Converter(autoApply = true)
public class ModalidadConverter implements AttributeConverter<Modalidad, String> {
@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);
}
}
...@@ -2,22 +2,16 @@ package com.roshka.modelo; ...@@ -2,22 +2,16 @@ package com.roshka.modelo;
import com.fasterxml.jackson.annotation.JsonValue; import com.fasterxml.jackson.annotation.JsonValue;
public enum Modalidad { public enum Nacionalidad {
PRESENCIAL("P","Presencial"), SEMIPRESENCIAL("S","Semi Presencial"), REMOTO("R","Remoto"); PY("Paraguayo"),EX("Extranjero");
private String code;
private String descripcion; private String descripcion;
private Modalidad(String code, String descripcion) { private Nacionalidad(String descripcion) {
this.code = code;
this.descripcion = descripcion; this.descripcion = descripcion;
} }
@JsonValue @JsonValue
public String getCode() {
return code;
}
public String getDescripcion() { public String getDescripcion() {
return descripcion; return descripcion;
} }
......
...@@ -3,6 +3,7 @@ package com.roshka.modelo; ...@@ -3,6 +3,7 @@ package com.roshka.modelo;
import javax.persistence.*; import javax.persistence.*;
import javax.validation.constraints.*; import javax.validation.constraints.*;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonManagedReference; import com.fasterxml.jackson.annotation.JsonManagedReference;
import com.roshka.utils.Helper; import com.roshka.utils.Helper;
...@@ -39,10 +40,11 @@ public class Postulante { ...@@ -39,10 +40,11 @@ public class Postulante {
@Email(message = "Formato incorrecto de correo") @Email(message = "Formato incorrecto de correo")
private String correo; private String correo;
@Column(name = "ciudad") @ManyToOne(targetEntity = Ciudad.class,fetch = FetchType.EAGER)
@NotBlank(message = "Este campo no puede estar vacio") @JoinColumn(name="ciudad_id",insertable = false, updatable = false)
@Size(max = 120) private Ciudad ciudad;
private String ciudad; @Column(name="ciudad_id")
private Long ciudadId;
@Column(name = "telefono") @Column(name = "telefono")
@NotBlank(message = "Este campo no puede estar vacio") @NotBlank(message = "Este campo no puede estar vacio")
...@@ -64,9 +66,18 @@ public class Postulante { ...@@ -64,9 +66,18 @@ public class Postulante {
@Column(name = "curriculum") @Column(name = "curriculum")
private String curriculum; private String curriculum;
@Column(name = "modalidad", length = 2) @Column(name="estado_civil")
@NotNull
private EstadoCivil estadoCivil;
@Column(name="nacionalidad", length = 2)
@NotNull @NotNull
private Modalidad modalidad; private Nacionalidad nacionalidad;
@Column(name = "tipo_documento", length = 2)
@NotBlank(message = "este campo debe estar completo")
private String tipoDocumento;
@Column(name = "disponibilidad", length = 2) @Column(name = "disponibilidad", length = 2)
private Disponibilidad disponibilidad; private Disponibilidad disponibilidad;
...@@ -83,6 +94,18 @@ public class Postulante { ...@@ -83,6 +94,18 @@ public class Postulante {
@OneToMany(mappedBy = "postulante",cascade = CascadeType.ALL) @OneToMany(mappedBy = "postulante",cascade = CascadeType.ALL)
private List<Estudio> estudios; private List<Estudio> estudios;
@JsonManagedReference
@OneToMany(mappedBy = "postulante",cascade = CascadeType.ALL)
private List<ReferenciaPersonal> referencias;
@ManyToMany(cascade = CascadeType.ALL)
@JoinTable(uniqueConstraints = @UniqueConstraint(columnNames = {"postulante_id","convocatoria_cargo_id"}),
joinColumns = @JoinColumn(name="postulante_id", referencedColumnName="id"),
inverseJoinColumns= @JoinColumn(name="convocatoria_cargo_id", referencedColumnName="id")
)
@JsonIgnore
private List<ConvocatoriaCargo> postulaciones;
public long getId() { public long getId() {
return id; return id;
...@@ -124,14 +147,6 @@ public class Postulante { ...@@ -124,14 +147,6 @@ public class Postulante {
this.correo = correo; this.correo = correo;
} }
public String getCiudad() {
return ciudad;
}
public void setCiudad(String ciudad) {
this.ciudad = ciudad;
}
public String getTelefono() { public String getTelefono() {
return telefono; return telefono;
} }
...@@ -176,16 +191,45 @@ public class Postulante { ...@@ -176,16 +191,45 @@ public class Postulante {
this.curriculum = curriculum; this.curriculum = curriculum;
} }
public Modalidad getModalidad() {
return modalidad;
public Disponibilidad getDisponibilidad() {
return disponibilidad;
} }
public void setModalidad(Modalidad modalidad) { public Ciudad getCiudad() {
this.modalidad = modalidad; return this.ciudad;
} }
public Disponibilidad getDisponibilidad() { public void setCiudad(Ciudad ciudad) {
return disponibilidad; this.ciudad = ciudad;
}
public Long getCiudadId() {
return this.ciudadId;
}
public void setCiudadId(Long ciudadId) {
this.ciudadId = ciudadId;
}
public void setEstadoCivil(EstadoCivil estadoCivil) {
this.estadoCivil = estadoCivil;
}
public void setTipoDocumento(String tipoDocumento) {
this.tipoDocumento = tipoDocumento;
}
public EstadoCivil getEstadoCivil() {
return estadoCivil;
}
public String getTipoDocumento() {
return tipoDocumento;
}
public Nacionalidad getNacionalidad() {
return nacionalidad;
}
public void setNacionalidad(Nacionalidad nacionalidad) {
this.nacionalidad = nacionalidad;
} }
public void setDisponibilidad(Disponibilidad disponibilidad) { public void setDisponibilidad(Disponibilidad disponibilidad) {
...@@ -211,4 +255,18 @@ public class Postulante { ...@@ -211,4 +255,18 @@ public class Postulante {
public void setExperiencias(List<Experiencia> experiencias) { public void setExperiencias(List<Experiencia> experiencias) {
this.experiencias = experiencias; this.experiencias = experiencias;
} }
public List<ConvocatoriaCargo> getPostulaciones() {
return postulaciones;
}
public void setPostulaciones(List<ConvocatoriaCargo> postulaciones) {
this.postulaciones = postulaciones;
}
public void setReferencias(List<ReferenciaPersonal> referencias) {
this.referencias = referencias;
}
public List<ReferenciaPersonal> getReferencias() {
return referencias;
}
} }
...@@ -12,7 +12,7 @@ import javax.persistence.Table; ...@@ -12,7 +12,7 @@ import javax.persistence.Table;
import javax.persistence.UniqueConstraint; import javax.persistence.UniqueConstraint;
import javax.validation.constraints.Max; import javax.validation.constraints.Max;
import javax.validation.constraints.Min; import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank;
import com.fasterxml.jackson.annotation.JsonBackReference; import com.fasterxml.jackson.annotation.JsonBackReference;
@Entity @Entity
...@@ -37,6 +37,7 @@ public class PostulanteTecnologia { ...@@ -37,6 +37,7 @@ public class PostulanteTecnologia {
@JoinColumn @JoinColumn
@JsonBackReference(value = "postulantetecnologia-postulante") @JsonBackReference(value = "postulantetecnologia-postulante")
private Postulante postulante; private Postulante postulante;
public long getId() { public long getId() {
return id; return id;
} }
......
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 javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.validation.constraints.NotBlank;
import com.fasterxml.jackson.annotation.JsonBackReference;
@Entity
@Table(name = "referencia_personal")
public class ReferenciaPersonal {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@NotBlank
@Column(name = "nombre")
private String nombre;
@NotBlank
@Column(name = "telefono")
private String telefono;
@NotBlank
@Column(name = "relacion")
private String relacion;
@ManyToOne(optional = false)
@JoinColumn
@JsonBackReference
private Postulante postulante;
public Long getId() {
return id;
}
public String getNombre() {
return nombre;
}
public String getRelacion() {
return relacion;
}
public String getTelefono() {
return telefono;
}
public Postulante getPostulante() {
return postulante;
}
public void setId(Long id) {
this.id = id;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public void setRelacion(String relacion) {
this.relacion = relacion;
}
public void setTelefono(String telefono) {
this.telefono = telefono;
}
public void setPostulante(Postulante postulante) {
this.postulante = postulante;
}
}
...@@ -7,7 +7,7 @@ import javax.persistence.GenerationType; ...@@ -7,7 +7,7 @@ import javax.persistence.GenerationType;
import javax.persistence.Id; import javax.persistence.Id;
import javax.persistence.Table; import javax.persistence.Table;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
import java.util.Locale;
@Entity @Entity
@Table(name="tecnologia") @Table(name="tecnologia")
......
package com.roshka.modelo;
import com.fasterxml.jackson.annotation.JsonValue;
public enum TipoExperiencia {
TRABAJO_NORMAL("Trabajo Normal"), PASANTIA("Pasantia");
private String descripcion;
private TipoExperiencia(String descripcion){
this.descripcion = descripcion;
}
@JsonValue
public String getDescripcion() {
return descripcion;
}
}
package com.roshka.repositorio; package com.roshka.repositorio;
import org.springframework.data.jpa.repository.JpaRepository; import com.roshka.modelo.Ciudad;
import com.roshka.modelo.ExperienciaReconocimiento;
import org.springframework.data.jpa.repository.JpaRepository;
public interface ExperienciaReconocimientoRepository extends JpaRepository<ExperienciaReconocimiento,Long> { public interface CiudadRepository extends JpaRepository<Ciudad,Long> {
} }
package com.roshka.repositorio;
import com.roshka.modelo.Departamento;
import org.springframework.data.jpa.repository.JpaRepository;
public interface DepartamentoRepository extends JpaRepository<Departamento,Long> {
}
...@@ -6,7 +6,7 @@ import org.springframework.data.jpa.repository.JpaRepository; ...@@ -6,7 +6,7 @@ import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query; import org.springframework.data.jpa.repository.Query;
import com.roshka.modelo.Postulante; import com.roshka.modelo.Postulante;
import com.roshka.modelo.PostulanteTecnologia;
public interface PostulanteRepository extends JpaRepository<Postulante,Long> { public interface PostulanteRepository extends JpaRepository<Postulante,Long> {
......
package com.roshka.repositorio; package com.roshka.repositorio;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import com.roshka.modelo.PostulanteTecnologia; import com.roshka.modelo.PostulanteTecnologia;
......
[
{
"id": 0,
"nombre": "ASUNCION"
},
{
"id": 1,
"nombre": "CONCEPCION"
},
{
"id": 2,
"nombre": "SAN PEDRO"
},
{
"id": 3,
"nombre": "CORDILLERA"
},
{
"id": 4,
"nombre": "GUAIRA"
},
{
"id": 5,
"nombre": "CAAGUAZU"
},
{
"id": 6,
"nombre": "CAAZAPA"
},
{
"id": 7,
"nombre": "ITAPUA"
},
{
"id": 8,
"nombre": "MISIONES"
},
{
"id": 9,
"nombre": "PARAGUARI"
},
{
"id": 10,
"nombre": "ALTO PARANA"
},
{
"id": 11,
"nombre": "CENTRAL"
},
{
"id": 12,
"nombre": "NEEMBUCU"
},
{
"id": 13,
"nombre": "AMAMBAY"
},
{
"id": 14,
"nombre": "CANINDEYU"
},
{
"id": 15,
"nombre": "PRESIDENTE HAYES"
},
{
"id": 16,
"nombre": "BOQUERON"
},
{
"id": 17,
"nombre": "ALTO PARAGUAY"
}
]
\ No newline at end of file
...@@ -315,6 +315,27 @@ function eliminarEstudio(event) { ...@@ -315,6 +315,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);
}
...@@ -171,7 +171,23 @@ ...@@ -171,7 +171,23 @@
Luce Bien! Luce Bien!
</div> </div>
</div> </div>
<div class="inputs mb-3 col-md-6">
<label for="nacionalidad" class="form-label"> Nacionalidad</label>
<select name="nacionalidad" id="nacionalidad" class="bg-light">
<c:forEach items="${nacionalidades}" var="nacionalidad">
<option value="${nacionalidad.getDescripcion()}">${nacionalidad.getDescripcion()}</option>
</c:forEach>
</select> </div>
<div class="inputs mb-3 col-md-6">
<label for="tipoDocumento" class="form-label">Tipo de documento</label>
<input type="text" name="tipoDocumento" class="form-control " id="tipoDocumento" required>
<div class="valid-feedback">
Luce Bien!
</div>
</div>
<div class="inputs mb-3 col-md-6"> <div class="inputs mb-3 col-md-6">
<label for="ci" class="form-label">Cedula de identidad</label> <label for="ci" class="form-label">Cedula de identidad</label>
...@@ -181,13 +197,23 @@ ...@@ -181,13 +197,23 @@
</div> </div>
</div> </div>
<div class="inputs mb-3 col-md-6"> <div class="inputs mb-3 col-md-6">
<label form="ciudad" class="form-label">Ciudad</label> <label for="departamentos" class="form-label"> Departamentos</label>
<input type="text" name="ciudad" class="form-control " id="ciudad" required> <select id="departamentos" class="bg-light">
<div class="valid-feedback"> <c:forEach items="${departamentos}" var="departamentos">
Luce Bien! <option value="${departamentos.getId()}">${departamentos.getNombre()}</option>
</div> </c:forEach>
</select>
</div> </div>
<div class="inputs mb-3 col-md-6">
<label for="ciudad" class="form-label"> Ciudad</label>
<select name="ciudadId" id="ciudad" class="bg-light">
</select>
</div>
<div class="inputs mb-3 col-md-6"> <div class="inputs mb-3 col-md-6">
<label for="telefono" class="form-label">Telefono</label> <label for="telefono" class="form-label">Telefono</label>
<input type="number" name="telefono" class="form-control " id="telefono" required> <input type="number" name="telefono" class="form-control " id="telefono" required>
...@@ -225,10 +251,10 @@ ...@@ -225,10 +251,10 @@
</select> </div> </select> </div>
<div class="inputs mb-3 col-md-6"> <div class="inputs mb-3 col-md-6">
<label for="modalidad" class="form-label"> Modalidad</label> <label for="estadoCivil" class="form-label"> Estado Civil</label>
<select name="modalidad" id="modalidad" class="bg-light"> <select name="estadoCivil" id="estadoCivil" class="bg-light">
<c:forEach items="${modalidades}" var="modalidad"> <c:forEach items="${estadosCiviles}" var="estadoCivil">
<option value="${modalidad.getCode()}">${modalidad.getDescripcion()}</option> <option value="${estadoCivil.getDescripcion()}">${estadoCivil.getDescripcion()}</option>
</c:forEach> </c:forEach>
...@@ -316,35 +342,22 @@ ...@@ -316,35 +342,22 @@
<label for="refTel" class="form-label">Telefono de la Referencia</label> <label for="refTel" class="form-label">Telefono de la Referencia</label>
<input type="text" class="form-control " name="telefonoReferencia" id="refTel" > <input type="text" class="form-control " name="telefonoReferencia" id="refTel" >
</div> </div>
<div class="inputs">
<label for="motivoSalida" class="form-label">Motivo de Salida</label>
<textarea class="form-control " name="motivoSalida" id="motivoSalida" ></textarea>
</div>
<div class="inputs">
<label for="tipoExperiencia" class="form-label"> Tipo de Experiencia</label>
<select name="tipoExperiencia" id="tipoExperiencia" class="bg-light">
<c:forEach items="${tiposExperencia}" var="tipoExperiencia">
<option value="${tipoExperiencia.getDescripcion()}">${tipoExperiencia.getDescripcion()}</option>
</c:forEach>
</select>
</div>
<div class="inputs">
<label class="form-label">Reconocimientos</label>
</div>
<div class="row mb-3">
<div class="inputs col">
<input type="text" class="form-control" name="rec-nombre-0" placeholder="Titulo del reconocimiento" aria-label="First name">
</div>
<div class=" inputs col">
<input type="text" class="form-control" name="rec-certificado-0" placeholder="Adjuntar archivo" aria-label="Last name">
</div>
</div>
<div class="row mb-3">
<div class="inputs col">
<input type="text" class="form-control" name="rec-nombre-1" placeholder="Titulo del reconocimiento" aria-label="First name">
</div>
<div class="inputs col">
<input type="text" class="form-control" name="rec-certificado-1" placeholder="Adjuntar archivo" aria-label="Last name">
</div>
</div>
<div class="row mb-3">
<div class="inputs col">
<input type="text" class="form-control" name="rec-nombre-2" placeholder="Titulo del reconocimiento" aria-label="First name">
</div>
<div class="inputs col">
<input type="text" class="form-control" name="rec-certificado-2" placeholder="Adjuntar archivo" aria-label="Last name">
</div>
</div>
</form> </form>
</div> </div>
...@@ -462,6 +475,10 @@ ...@@ -462,6 +475,10 @@
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script> <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous"></script> <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous"></script>
<script>
var ciudades = ${ciudades};
</script>
<script src="./main.js"></script> <script src="./main.js"></script>
</body> </body>
</html> </html>
\ No newline at end of file
...@@ -41,7 +41,6 @@ ...@@ -41,7 +41,6 @@
<tr> <tr>
<th scope="col">#</th> <th scope="col">#</th>
<th scope="col">Nombre</th> <th scope="col">Nombre</th>
<th scope="col">Modalidad</th>
<th scope="col">Disponibilidad</th> <th scope="col">Disponibilidad</th>
<th scope="col">Nivel de Ingles</th> <th scope="col">Nivel de Ingles</th>
<th scope="col">Experiencia</th> <th scope="col">Experiencia</th>
...@@ -53,7 +52,6 @@ ...@@ -53,7 +52,6 @@
<tr> <tr>
<th scope="row">${staPost.index + 1}</th> <th scope="row">${staPost.index + 1}</th>
<td>${postulante.nombre} ${postulante.apellido}</td> <td>${postulante.nombre} ${postulante.apellido}</td>
<td>${postulante.modalidad.getDescripcion()}</td>
<td>${postulante.disponibilidad.getDescripcion()}</td> <td>${postulante.disponibilidad.getDescripcion()}</td>
<td>${postulante.nivelIngles}</td> <td>${postulante.nivelIngles}</td>
<td>0</td> <td>0</td>
......
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