Creacion de estudio con modelo nuevo

parent 83013cc5
...@@ -5,10 +5,9 @@ import java.util.List; ...@@ -5,10 +5,9 @@ import java.util.List;
import javax.validation.ConstraintViolationException; import javax.validation.ConstraintViolationException;
import com.roshka.modelo.Disponibilidad; import com.roshka.modelo.*;
import com.roshka.modelo.Modalidad;
import com.roshka.modelo.Postulante;
import com.roshka.repositorio.ExperienciaRepository; import com.roshka.repositorio.ExperienciaRepository;
import com.roshka.repositorio.InstitucionRepository;
import com.roshka.repositorio.PostulanteRepository; import com.roshka.repositorio.PostulanteRepository;
import com.roshka.repositorio.TecnologiaRepository; import com.roshka.repositorio.TecnologiaRepository;
...@@ -24,15 +23,18 @@ import org.springframework.web.bind.annotation.*; ...@@ -24,15 +23,18 @@ import org.springframework.web.bind.annotation.*;
@Controller @Controller
public class PostulanteController { public class PostulanteController {
@Autowired PostulanteRepository post;
PostulanteRepository post;
@Autowired
TecnologiaRepository tecRepo; TecnologiaRepository tecRepo;
@Autowired
ExperienciaRepository expRepo; ExperienciaRepository expRepo;
InstitucionRepository institucionRepository;
@Autowired
public PostulanteController(PostulanteRepository post, TecnologiaRepository tecRepo, ExperienciaRepository expRepo, InstitucionRepository institucionRepository) {
this.post = post;
this.tecRepo = tecRepo;
this.expRepo = expRepo;
this.institucionRepository = institucionRepository;
}
@RequestMapping("/") @RequestMapping("/")
public String index() { public String index() {
...@@ -53,11 +55,20 @@ public class PostulanteController { ...@@ -53,11 +55,20 @@ public class PostulanteController {
model.addAttribute("tecnologias", tecRepo.findAll()); model.addAttribute("tecnologias", tecRepo.findAll());
model.addAttribute("modalidades", Modalidad.values()); model.addAttribute("modalidades", Modalidad.values());
model.addAttribute("disponibilidades", Disponibilidad.values()); model.addAttribute("disponibilidades", Disponibilidad.values());
model.addAttribute("tiposDeEstudio", TipoDeEstudio.values());
model.addAttribute("estadosEstudio", EstadoEstudio.values());
return "postulante-form"; return "postulante-form";
} }
@PostMapping(value = "/postulante",consumes = "application/json") @PostMapping(value = "/postulante",consumes = "application/json")
public String guardarPostulante(@RequestBody Postulante postulante){ public String guardarPostulante(@RequestBody Postulante postulante){
System.out.println("hola");
for(Estudio estudio: postulante.getEstudios()){
if(institucionRepository.findByNombre(estudio.getInstitucion().getNombre())==null){
institucionRepository.save(estudio.getInstitucion());
}
}
System.out.println("hola");
post.save(postulante); post.save(postulante);
return "redirect:/"; return "redirect:/";
} }
......
package com.roshka.modelo;
public enum EstadoEstudio {
CURSANDO("Cursando"),
FINALIZADO("Finalizado"),
SUSPENDIDO("Suspendido"),
TESIS("En Proceso de Tesis");
private final String name;
EstadoEstudio(String name){
this.name = name;
}
public String getName(){
return this.name;
}
}
...@@ -19,9 +19,8 @@ public class Estudio { ...@@ -19,9 +19,8 @@ public class Estudio {
@Column(name="id") @Column(name="id")
private long id; private long id;
@ManyToOne(fetch = FetchType.EAGER) @Column(name = "tipo_de_estudio")
@NotNull(message = "Este campo no puede ser null") @NotNull(message = "Este campo no puede ser null")
@JsonBackReference
private TipoDeEstudio tipoDeEstudio; private TipoDeEstudio tipoDeEstudio;
@NotNull(message = "Este campo no puede estar vacio") @NotNull(message = "Este campo no puede estar vacio")
...@@ -29,15 +28,15 @@ public class Estudio { ...@@ -29,15 +28,15 @@ public class Estudio {
@JsonBackReference @JsonBackReference
private Institucion institucion; private Institucion institucion;
@Column(name = "estado")
@NotBlank(message = "Este campo no puede estar vacio")
private String estado;
//Carrera, Bachiller //Carrera, Bachiller
@Column(name="tema_de_estudio") @Column(name="tema_de_estudio")
@NotBlank(message = "Este campo no puede estar vacio") @NotBlank(message = "Este campo no puede estar vacio")
private String temaDeEstudio; private String temaDeEstudio;
@Column(name = "estado")
@NotNull(message = "Este campo no puede estar vacio")
private EstadoEstudio estado;
@Column(name="fecha_desde") @Column(name="fecha_desde")
@NotNull(message = "Este campo no puede estar vacio") @NotNull(message = "Este campo no puede estar vacio")
@Past(message = "Este campo no puede estar en el futuro") @Past(message = "Este campo no puede estar en el futuro")
...@@ -49,7 +48,7 @@ public class Estudio { ...@@ -49,7 +48,7 @@ public class Estudio {
@ManyToOne @ManyToOne
@JoinColumn @JoinColumn
@JsonBackReference @JsonBackReference(value = "estudio-postulante")
private Postulante postulante; private Postulante postulante;
public Postulante getPostulante() { public Postulante getPostulante() {
...@@ -79,7 +78,7 @@ public class Estudio { ...@@ -79,7 +78,7 @@ public class Estudio {
this.institucion = institucion; this.institucion = institucion;
} }
public void setEstado(String estado) { public void setEstado(EstadoEstudio estado) {
this.estado = estado; this.estado = estado;
} }
...@@ -99,7 +98,7 @@ public class Estudio { ...@@ -99,7 +98,7 @@ public class Estudio {
return institucion; return institucion;
} }
public String getEstado() { public EstadoEstudio getEstado() {
return estado; return estado;
} }
......
...@@ -48,12 +48,12 @@ public class Experiencia { ...@@ -48,12 +48,12 @@ public class Experiencia {
@Column(name = "descripcion") @Column(name = "descripcion")
private String descripcion; private String descripcion;
@JsonBackReference @JsonBackReference(value = "experiencia-postulante")
@ManyToOne(optional = false) @ManyToOne(optional = false)
@JoinColumn @JoinColumn
private Postulante postulante; private Postulante postulante;
@JsonManagedReference @JsonManagedReference(value = "experienciareconocimiento-experiencia")
@OneToMany(mappedBy = "experiencia",cascade = CascadeType.ALL) @OneToMany(mappedBy = "experiencia",cascade = CascadeType.ALL)
private List<ExperienciaReconocimiento> reconocimientos; private List<ExperienciaReconocimiento> reconocimientos;
......
...@@ -14,7 +14,7 @@ public class ExperienciaReconocimiento { ...@@ -14,7 +14,7 @@ public class ExperienciaReconocimiento {
@ManyToOne(optional = false) @ManyToOne(optional = false)
@JoinColumn @JoinColumn
@JsonBackReference @JsonBackReference(value = "experienciareconocimiento-experiencia")
private Experiencia experiencia; private Experiencia experiencia;
@Column(name="nombre") @Column(name="nombre")
......
...@@ -10,6 +10,7 @@ import java.util.List; ...@@ -10,6 +10,7 @@ import java.util.List;
@Table(name = "institucion") @Table(name = "institucion")
public class Institucion { public class Institucion {
@Id @Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id") @Column(name = "id")
private long id; private long id;
...@@ -24,4 +25,36 @@ public class Institucion { ...@@ -24,4 +25,36 @@ public class Institucion {
@OneToMany(cascade = CascadeType.PERSIST, mappedBy = "institucion", fetch = FetchType.LAZY) @OneToMany(cascade = CascadeType.PERSIST, mappedBy = "institucion", fetch = FetchType.LAZY)
@JsonManagedReference @JsonManagedReference
private List<Estudio> estudioList; private List<Estudio> estudioList;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public String getSubNombre() {
return subNombre;
}
public void setSubNombre(String subNombre) {
this.subNombre = subNombre;
}
public List<Estudio> getEstudioList() {
return estudioList;
}
public void setEstudioList(List<Estudio> estudioList) {
this.estudioList = estudioList;
}
} }
...@@ -71,15 +71,15 @@ public class Postulante { ...@@ -71,15 +71,15 @@ public class Postulante {
@Column(name = "disponibilidad", length = 2) @Column(name = "disponibilidad", length = 2)
private Disponibilidad disponibilidad; private Disponibilidad disponibilidad;
@JsonManagedReference @JsonManagedReference(value = "postulantetecnologia-postulante")
@OneToMany(mappedBy = "postulante",cascade = CascadeType.ALL) @OneToMany(mappedBy = "postulante",cascade = CascadeType.ALL)
private List<PostulanteTecnologia> tecnologias; private List<PostulanteTecnologia> tecnologias;
@JsonManagedReference @JsonManagedReference(value = "experiencia-postulante")
@OneToMany(mappedBy = "postulante",cascade = CascadeType.ALL) @OneToMany(mappedBy = "postulante",cascade = CascadeType.ALL)
private List<Experiencia> experiencias = new ArrayList<>(); private List<Experiencia> experiencias = new ArrayList<>();
@JsonManagedReference @JsonManagedReference(value = "estudio-postulante")
@OneToMany(mappedBy = "postulante",cascade = CascadeType.ALL) @OneToMany(mappedBy = "postulante",cascade = CascadeType.ALL)
private List<Estudio> estudios; private List<Estudio> estudios;
......
...@@ -35,7 +35,7 @@ public class PostulanteTecnologia { ...@@ -35,7 +35,7 @@ public class PostulanteTecnologia {
@ManyToOne() @ManyToOne()
@JoinColumn @JoinColumn
@JsonBackReference @JsonBackReference(value = "postulantetecnologia-postulante")
private Postulante postulante; private Postulante postulante;
public long getId() { public long getId() {
return id; return id;
......
package com.roshka.modelo; package com.roshka.modelo;
import com.fasterxml.jackson.annotation.JsonManagedReference;
import javax.persistence.*;
import javax.validation.constraints.NotBlank;
import java.util.List;
@Entity public enum TipoDeEstudio {
@Table(name = "tipo_de_estudio") TERCIARIO("Terciario"),
public class TipoDeEstudio { SECUNDARIO("Secundario"),
@Id CURSO("Curso"),
@GeneratedValue(strategy = GenerationType.AUTO) OTRO("Otro");
@Column(name = "id")
private long id;
@Column(name = "nombre") private final String name;
@NotBlank(message = "Este campo no puede estar vacio")
private String nombre;
@OneToMany(cascade = CascadeType.PERSIST, mappedBy = "tipoDeEstudio", fetch = FetchType.LAZY) TipoDeEstudio(String name){
@JsonManagedReference this.name = name;
private List<Estudio> estudioList; }
public String getName(){
return this.name;
}
} }
package com.roshka.repositorio;
import com.roshka.modelo.Institucion;
import org.springframework.data.jpa.repository.JpaRepository;
public interface InstitucionRepository extends JpaRepository<Institucion, Long> {
public Institucion findByNombre(String nombre);
}
...@@ -202,8 +202,8 @@ document.querySelector("#btn-new-tech").addEventListener('click',()=>{document.q ...@@ -202,8 +202,8 @@ document.querySelector("#btn-new-tech").addEventListener('click',()=>{document.q
function agregarFieldEstudio(){ function agregarFieldEstudio(){
//recoger del form //recoger del form
const pairs = {}; let pairs = {};
const formest = document.querySelector("[name=estudio-form"); const formest = document.querySelector("[name=estudio-form]");
const formData = new FormData(formest); const formData = new FormData(formest);
const estudioReconocimiento = [{},{},{}]; const estudioReconocimiento = [{},{},{}];
let pos_rec; let pos_rec;
...@@ -217,6 +217,12 @@ function agregarFieldEstudio(){ ...@@ -217,6 +217,12 @@ function agregarFieldEstudio(){
} }
} }
let nombre = pairs["institucion"]
delete pairs["institucion"]
console.log(pairs)
pairs["institucion"] = { }
pairs["institucion"].nombre = nombre
pairs["institucion"].subNombre = ""
pairs["estudioReconocimiento"] = estudioReconocimiento.filter(rec => rec.nombre); pairs["estudioReconocimiento"] = estudioReconocimiento.filter(rec => rec.nombre);
estudios[cont_estudios] = pairs; estudios[cont_estudios] = pairs;
formest.reset(); formest.reset();
...@@ -230,7 +236,7 @@ function agregarFieldEstudio(){ ...@@ -230,7 +236,7 @@ function agregarFieldEstudio(){
if(est==null) continue; if(est==null) continue;
content += ` content += `
<li id="est-${index}"> <li id="est-${index}">
${est.institucion} ${est.institucion.nombre}
<button type="button" onclick="eliminarEstudio(event)">Eliminar</button> <button type="button" onclick="eliminarEstudio(event)">Eliminar</button>
</li> </li>
......
...@@ -406,41 +406,43 @@ ...@@ -406,41 +406,43 @@
</div> </div>
<div class="modal-body"> <div class="modal-body">
<form name="estudio-form"> <form name="estudio-form">
<label for="tipoDeEstudio" class="form-label">Tipo De Estudio</label>
<input type="text" class="form-control " name="tipoDeEstudio" id="tipoDeEstudio">
<label for="institucion" class="form-label">Institucion</label> <div class="form-group">
<input type="text" class="form-control " name="institucion" id="institucion"> <label for="tipoDeEstudio">Tipo de Estudio</label>
<label for="fechaDesde" class="form-label">Fecha Desde</label> <select name="tipoDeEstudio" id="tipoDeEstudio">
<input type="date" class="form-control " name="fechaDesde" id="fechaDesde" > <option value="-1" selected disabled hidden>Seleccionar</option>
<label for="fechaHasta" class="form-label">Fecha Hasta</label> <c:forEach items="${tiposDeEstudio}" var="tipo">
<input type="date" class="form-control " name="fechaHasta" id="fechaHasta" > <option value="${tipo}">${tipo.name}</option>
<label for="titulo" class="form-label">Titulo</label> </c:forEach>
<input type="text" class="form-control " name="titulo" id="titulo" > </select>
<label class="form-label">Reconocimientos</label>
<div class="row mb-3">
<div class="col">
<input type="text" class="form-control" name="rec-nombre-0" placeholder="Titulo del reconocimiento" aria-label="First name">
</div>
<div class="col">
<input type="text" class="form-control" name="rec-certificado-0" placeholder="Adjuntar archivo" aria-label="Last name">
</div>
</div> </div>
<div class="row mb-3"> <%-- <label for="tipoDeEstudio" class="form-label">Tipo De Estudio</label>--%>
<div class="col"> <%-- <input type="text" class="form-control " name="tipoDeEstudio" id="tipoDeEstudio">--%>
<input type="text" class="form-control" name="rec-nombre-1" placeholder="Titulo del reconocimiento" aria-label="First name"> <div class="form-group">
</div> <label for="institucion" class="form-label">Institucion</label>
<div class="col"> <input type="text" class="form-control" name="institucion" id="institucion">
<input type="text" class="form-control" name="rec-certificado-1" placeholder="Adjuntar archivo" aria-label="Last name">
</div>
</div> </div>
<div class="row mb-3"> <div class="form-group">
<div class="col"> <label for="temaDeEstudio" class="form-label">Carrera/Bachiller/Tema de Curso</label>
<input type="text" class="form-control" name="rec-nombre-2" placeholder="Titulo del reconocimiento" aria-label="First name"> <input type="text" class="form-control" name="temaDeEstudio" id="temaDeEstudio" >
</div> </div>
<div class="col"> <div class="form-group">
<input type="text" class="form-control" name="rec-certificado-2" placeholder="Adjuntar archivo" aria-label="Last name"> <label for="estado">Estado</label>
<select name="estado" id="estado">
<option value="-1" selected disabled hidden>Seleccionar</option>
<c:forEach items="${estadosEstudio}" var="estado">
<option value="${estado}">${estado.name}</option>
</c:forEach>
</select>
</div> </div>
<div class="form-group">
<label for="fechaDesde" class="form-label">Fecha Desde</label>
<input type="date" class="form-control " name="fechaDesde" id="fechaDesde" >
</div>
<div class="form-group">
<label for="fechaHasta" class="form-label">Fecha Hasta</label>
<input type="date" class="form-control " name="fechaHasta" id="fechaHasta" >
</div> </div>
......
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