diff --git a/curriculumsearch/src/main/java/com/roshka/controller/ConvocatoriaController.java b/curriculumsearch/src/main/java/com/roshka/controller/ConvocatoriaController.java index 5e4cc89..ac852d7 100644 --- a/curriculumsearch/src/main/java/com/roshka/controller/ConvocatoriaController.java +++ b/curriculumsearch/src/main/java/com/roshka/controller/ConvocatoriaController.java @@ -5,6 +5,8 @@ import java.util.Date; import com.roshka.modelo.Cargo; import com.roshka.modelo.ConvocatoriaCargo; +import com.roshka.modelo.EstadoConvocatoria; +import com.roshka.modelo.EstadoConvocatoriaConverter; import com.roshka.repositorio.CargoRepository; import com.roshka.repositorio.ConvocatoriaRepository; @@ -47,15 +49,30 @@ public class ConvocatoriaController { //model.addAttribute("convocatorias",cargoId==null? convoRepo.findAll() : convoRepo.findByCargoId(cargoId)); return "convocatorias"; } + @RequestMapping("/convocatoria") + public String formConvocatoria(Model model) { + model.addAttribute("cargos", cargoRepo.findAll()); + model.addAttribute("convocatoria", new ConvocatoriaCargo()); + return "convocatoria-form"; + } + + @PostMapping("/convocatoria") + public String guardarConvocatoria(@ModelAttribute ConvocatoriaCargo convocatoria, BindingResult result) { + if(result.hasErrors()); + convocatoria.setFechaInicio(new Date()); + convocatoria.setEstado(EstadoConvocatoria.abierto); + convoRepo.save(convocatoria); + System.out.println(convocatoria.getFechaInicio()); + return "redirect:/convocatorias"; + } - @RequestMapping(path = {"/convocatoria","/convocatoria/{id}"}) + /* @RequestMapping("/convocatoria/{id}") public String formConvocatoria(Model model,@PathVariable(required = false) Long id) { model.addAttribute("cargos", cargoRepo.findAll()); if(id == null){ model.addAttribute("convocatoria", new ConvocatoriaCargo()); model.addAttribute("listaConvocatoria", convoRepo.findAll()); - } else { ConvocatoriaCargo cc = convoRepo.getById(id); @@ -67,12 +84,17 @@ public class ConvocatoriaController { } return "convocatoria-form"; - } + }*/ - @PostMapping(path = {"/convocatoria","/convocatoria/{id}"}) + @RequestMapping("/convocatoria/{id}") public String guardarConvocatoria(@ModelAttribute ConvocatoriaCargo convocatoria, BindingResult result, @PathVariable(required = false) Long id,Model model) { if(result.hasErrors()); if(id != null) convocatoria.setId(id); + convocatoria=convoRepo.findByIdConvocatoriaCargo(id); + convocatoria.setEstado(EstadoConvocatoria.cerrado); + convocatoria.setFechaFin(new Date()); + convoRepo.save(convocatoria); + /*if(id != null) convocatoria.setId(id); //System.out.println(convoRepo.filtrarConvocatoriasPorCargo(convocatoria.getCargoId())); for(ConvocatoriaCargo c: convoRepo.filtrarConvocatoriasPorCargo(convocatoria.getCargoId())){ @@ -91,7 +113,7 @@ public class ConvocatoriaController { break; } - } + }*/ return "redirect:/convocatorias"; diff --git a/curriculumsearch/src/main/java/com/roshka/modelo/ConvocatoriaCargo.java b/curriculumsearch/src/main/java/com/roshka/modelo/ConvocatoriaCargo.java index bbcbe43..2b1cb22 100644 --- a/curriculumsearch/src/main/java/com/roshka/modelo/ConvocatoriaCargo.java +++ b/curriculumsearch/src/main/java/com/roshka/modelo/ConvocatoriaCargo.java @@ -36,6 +36,9 @@ public class ConvocatoriaCargo { @Column(name = "cargo_id") private Long cargoId; + + @Column(name = "estado") + private EstadoConvocatoria estado; @Column(name = "fecha_inicio") private Date fechaInicio; @@ -43,8 +46,6 @@ public class ConvocatoriaCargo { @Column(name = "fecha_fin") private Date fechaFin; - @Column(name = "cupos") - private int cupos; //para deserializar desde el form como string @Transient @@ -104,4 +105,28 @@ public class ConvocatoriaCargo { setFechaInicio(fechaInicioS); } + public Long getId() { + return this.id; + } + + public void setId(Long id) { + this.id = id; + } + + public Cargo getCargo() { + return this.cargo; + } + + public void setCargo(Cargo cargo) { + this.cargo = cargo; + } + + public EstadoConvocatoria getEstado() { + return this.estado; + } + + public void setEstado(EstadoConvocatoria estado) { + this.estado = estado; + } + } diff --git a/curriculumsearch/src/main/java/com/roshka/modelo/EstadoConvocatoria.java b/curriculumsearch/src/main/java/com/roshka/modelo/EstadoConvocatoria.java new file mode 100644 index 0000000..f6d930a --- /dev/null +++ b/curriculumsearch/src/main/java/com/roshka/modelo/EstadoConvocatoria.java @@ -0,0 +1,12 @@ +package com.roshka.modelo; + +public enum EstadoConvocatoria { + abierto("abierto"), cerrado("cerrado"); + private String descripcion; + private EstadoConvocatoria(String descripcion){ + this.descripcion = descripcion; + } + public String getDescripcion() { + return descripcion; + } +} diff --git a/curriculumsearch/src/main/java/com/roshka/modelo/EstadoConvocatoriaConverter.java b/curriculumsearch/src/main/java/com/roshka/modelo/EstadoConvocatoriaConverter.java new file mode 100644 index 0000000..ea921a5 --- /dev/null +++ b/curriculumsearch/src/main/java/com/roshka/modelo/EstadoConvocatoriaConverter.java @@ -0,0 +1,33 @@ +package com.roshka.modelo; +import java.util.Arrays; +import javax.persistence.AttributeConverter; +import javax.persistence.Converter; + +@Converter(autoApply = true) +public class EstadoConvocatoriaConverter implements AttributeConverter, org.springframework.core.convert.converter.Converter { + @Override + public String convertToDatabaseColumn(EstadoConvocatoria modalidad) { + if (modalidad == null) { + return null; + } + return modalidad.getDescripcion(); + } + + + @Override + public EstadoConvocatoria convert(String arg0) { + return convertToEntityAttribute(arg0); + } + + @Override + public EstadoConvocatoria convertToEntityAttribute(String estado) { + if (estado == null) { + return null; + } + + return Arrays.stream(EstadoConvocatoria.values()) + .filter(c -> c.getDescripcion().equals(estado)) + .findFirst() + .orElseThrow(IllegalArgumentException::new); + } +} diff --git a/curriculumsearch/src/main/java/com/roshka/repositorio/ConvocatoriaRepository.java b/curriculumsearch/src/main/java/com/roshka/repositorio/ConvocatoriaRepository.java index 685ccbd..726a7ae 100644 --- a/curriculumsearch/src/main/java/com/roshka/repositorio/ConvocatoriaRepository.java +++ b/curriculumsearch/src/main/java/com/roshka/repositorio/ConvocatoriaRepository.java @@ -10,10 +10,12 @@ import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; public interface ConvocatoriaRepository extends JpaRepository { + @Query(value = "SELECT c FROM ConvocatoriaCargo c WHERE c.id=?1") + public ConvocatoriaCargo findByIdConvocatoriaCargo(Long id); public List findByCargoId(Long cargoId); //@Query(value="selec x from ConvocatoriaCargo x where (x.fechaFinal > ?1)",nativeQuery = true) //public List findConvocatoriaCargoByCargo(Date fechaFinal); - @Query("select c from ConvocatoriaCargo c where ( ?1 is null and ?3 is null) or ( ( ( (c.fechaFin > ?2 and ?3 = 1) or (c.fechaFin < ?2 and ?3 = 0)) or ?3 is null ) and (c.cargoId = ?1 or ?1 is null) )") + @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 f1ndByCargoAndEstado(TypedParameterValue cargoId, Date fecha, TypedParameterValue isOpen); @Query("SELECT c FROM ConvocatoriaCargo c WHERE (cargoId=?1)") public List filtrarConvocatoriasPorCargo(Long cargoId); diff --git a/curriculumsearch/src/main/resources/json/convocatoria.json b/curriculumsearch/src/main/resources/json/convocatoria.json index b931ede..1cc1418 100644 --- a/curriculumsearch/src/main/resources/json/convocatoria.json +++ b/curriculumsearch/src/main/resources/json/convocatoria.json @@ -2,15 +2,15 @@ { "id": 1, "cargoId": 1, + "estado":0, "fechaInicio": "2021-11-01", - "fechaFin": "2021-11-30", - "cupos": 20 + "fechaFin": "2021-11-30" }, { "id": 2, "cargoId": 2, + "estado":0, "fechaInicio": "2021-11-01", - "fechaFin": "2021-11-30", - "cupos": 20 + "fechaFin": "2021-11-30" } ] \ No newline at end of file diff --git a/curriculumsearch/src/main/webapp/jsp/convocatoria-form.jsp b/curriculumsearch/src/main/webapp/jsp/convocatoria-form.jsp index d162b69..bea8210 100644 --- a/curriculumsearch/src/main/webapp/jsp/convocatoria-form.jsp +++ b/curriculumsearch/src/main/webapp/jsp/convocatoria-form.jsp @@ -9,25 +9,6 @@
- Fecha inicial - -
- Esta fecha ya existe -
- -
-
- Fecha Fin - -
- Esta fecha ya existe -
-
-
- Cupos: - -
-
Cargo @@ -35,7 +16,7 @@
- +
diff --git a/curriculumsearch/src/main/webapp/jsp/convocatorias.jsp b/curriculumsearch/src/main/webapp/jsp/convocatorias.jsp index 1dc3a0f..9ad2bdb 100644 --- a/curriculumsearch/src/main/webapp/jsp/convocatorias.jsp +++ b/curriculumsearch/src/main/webapp/jsp/convocatorias.jsp @@ -32,9 +32,9 @@ # Cargo - Fecha Desde - Fecha Hasta - Vacantes + Estado + Fecha Abierta + Fecha Cerrada @@ -43,11 +43,11 @@ ${sta.index+1} ${convocatoria.getCargo().getNombre()} + ${convocatoria.getEstado().getDescripcion()} ${convocatoria.getFechaInicio().toString().split(" ")[0]} ${convocatoria.getFechaFin().toString().split(" ")[0]} - ${convocatoria.getCupos()} Ver Postulantes - Editar + @@ -59,6 +59,11 @@ - +