Commit c5d9d805 by willgonzz

Estado para ConvocatoriaCargo

parent ffb9bbee
...@@ -5,6 +5,8 @@ import java.util.Date; ...@@ -5,6 +5,8 @@ import java.util.Date;
import com.roshka.modelo.Cargo; import com.roshka.modelo.Cargo;
import com.roshka.modelo.ConvocatoriaCargo; import com.roshka.modelo.ConvocatoriaCargo;
import com.roshka.modelo.EstadoConvocatoria;
import com.roshka.modelo.EstadoConvocatoriaConverter;
import com.roshka.repositorio.CargoRepository; import com.roshka.repositorio.CargoRepository;
import com.roshka.repositorio.ConvocatoriaRepository; import com.roshka.repositorio.ConvocatoriaRepository;
...@@ -47,15 +49,30 @@ public class ConvocatoriaController { ...@@ -47,15 +49,30 @@ public class ConvocatoriaController {
//model.addAttribute("convocatorias",cargoId==null? convoRepo.findAll() : convoRepo.findByCargoId(cargoId)); //model.addAttribute("convocatorias",cargoId==null? convoRepo.findAll() : convoRepo.findByCargoId(cargoId));
return "convocatorias"; 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) { public String formConvocatoria(Model model,@PathVariable(required = false) Long id) {
model.addAttribute("cargos", cargoRepo.findAll()); model.addAttribute("cargos", cargoRepo.findAll());
if(id == null){ if(id == null){
model.addAttribute("convocatoria", new ConvocatoriaCargo()); model.addAttribute("convocatoria", new ConvocatoriaCargo());
model.addAttribute("listaConvocatoria", convoRepo.findAll()); model.addAttribute("listaConvocatoria", convoRepo.findAll());
} }
else { else {
ConvocatoriaCargo cc = convoRepo.getById(id); ConvocatoriaCargo cc = convoRepo.getById(id);
...@@ -67,12 +84,17 @@ public class ConvocatoriaController { ...@@ -67,12 +84,17 @@ public class ConvocatoriaController {
} }
return "convocatoria-form"; 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) { public String guardarConvocatoria(@ModelAttribute ConvocatoriaCargo convocatoria, BindingResult result, @PathVariable(required = false) Long id,Model model) {
if(result.hasErrors()); if(result.hasErrors());
if(id != null) convocatoria.setId(id); 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())); //System.out.println(convoRepo.filtrarConvocatoriasPorCargo(convocatoria.getCargoId()));
for(ConvocatoriaCargo c: convoRepo.filtrarConvocatoriasPorCargo(convocatoria.getCargoId())){ for(ConvocatoriaCargo c: convoRepo.filtrarConvocatoriasPorCargo(convocatoria.getCargoId())){
...@@ -91,7 +113,7 @@ public class ConvocatoriaController { ...@@ -91,7 +113,7 @@ public class ConvocatoriaController {
break; break;
} }
} }*/
return "redirect:/convocatorias"; return "redirect:/convocatorias";
......
...@@ -36,6 +36,9 @@ public class ConvocatoriaCargo { ...@@ -36,6 +36,9 @@ public class ConvocatoriaCargo {
@Column(name = "cargo_id") @Column(name = "cargo_id")
private Long cargoId; private Long cargoId;
@Column(name = "estado")
private EstadoConvocatoria estado;
@Column(name = "fecha_inicio") @Column(name = "fecha_inicio")
private Date fechaInicio; private Date fechaInicio;
...@@ -43,8 +46,6 @@ public class ConvocatoriaCargo { ...@@ -43,8 +46,6 @@ public class ConvocatoriaCargo {
@Column(name = "fecha_fin") @Column(name = "fecha_fin")
private Date fechaFin; private Date fechaFin;
@Column(name = "cupos")
private int cupos;
//para deserializar desde el form como string //para deserializar desde el form como string
@Transient @Transient
...@@ -104,4 +105,28 @@ public class ConvocatoriaCargo { ...@@ -104,4 +105,28 @@ public class ConvocatoriaCargo {
setFechaInicio(fechaInicioS); 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;
}
} }
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;
}
}
package com.roshka.modelo;
import java.util.Arrays;
import javax.persistence.AttributeConverter;
import javax.persistence.Converter;
@Converter(autoApply = true)
public class EstadoConvocatoriaConverter implements AttributeConverter<EstadoConvocatoria, String>, org.springframework.core.convert.converter.Converter<String,EstadoConvocatoria> {
@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);
}
}
...@@ -10,10 +10,12 @@ import org.springframework.data.jpa.repository.JpaRepository; ...@@ -10,10 +10,12 @@ import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query; import org.springframework.data.jpa.repository.Query;
public interface ConvocatoriaRepository extends JpaRepository<ConvocatoriaCargo,Long> { public interface ConvocatoriaRepository extends JpaRepository<ConvocatoriaCargo,Long> {
@Query(value = "SELECT c FROM ConvocatoriaCargo c WHERE c.id=?1")
public ConvocatoriaCargo findByIdConvocatoriaCargo(Long id);
public List<ConvocatoriaCargo> findByCargoId(Long cargoId); public List<ConvocatoriaCargo> findByCargoId(Long cargoId);
//@Query(value="selec x from ConvocatoriaCargo x where (x.fechaFinal > ?1)",nativeQuery = true) //@Query(value="selec x from ConvocatoriaCargo x where (x.fechaFinal > ?1)",nativeQuery = true)
//public List<ConvocatoriaCargo> findConvocatoriaCargoByCargo(Date fechaFinal); //public List<ConvocatoriaCargo> 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<ConvocatoriaCargo> f1ndByCargoAndEstado(TypedParameterValue cargoId, Date fecha, TypedParameterValue isOpen); public List<ConvocatoriaCargo> f1ndByCargoAndEstado(TypedParameterValue cargoId, Date fecha, TypedParameterValue isOpen);
@Query("SELECT c FROM ConvocatoriaCargo c WHERE (cargoId=?1)") @Query("SELECT c FROM ConvocatoriaCargo c WHERE (cargoId=?1)")
public List<ConvocatoriaCargo> filtrarConvocatoriasPorCargo(Long cargoId); public List<ConvocatoriaCargo> filtrarConvocatoriasPorCargo(Long cargoId);
......
...@@ -2,15 +2,15 @@ ...@@ -2,15 +2,15 @@
{ {
"id": 1, "id": 1,
"cargoId": 1, "cargoId": 1,
"estado":0,
"fechaInicio": "2021-11-01", "fechaInicio": "2021-11-01",
"fechaFin": "2021-11-30", "fechaFin": "2021-11-30"
"cupos": 20
}, },
{ {
"id": 2, "id": 2,
"cargoId": 2, "cargoId": 2,
"estado":0,
"fechaInicio": "2021-11-01", "fechaInicio": "2021-11-01",
"fechaFin": "2021-11-30", "fechaFin": "2021-11-30"
"cupos": 20
} }
] ]
\ No newline at end of file
...@@ -9,25 +9,6 @@ ...@@ -9,25 +9,6 @@
<div class="p-3 mb-2 bg-light text-dark bg-transparent "> <div class="p-3 mb-2 bg-light text-dark bg-transparent ">
<form:form action="/convocatoria/${convocatoria.id == null ? '' : convocatoria.id}" method="post" modelAttribute="convocatoria"> <form:form action="/convocatoria/${convocatoria.id == null ? '' : convocatoria.id}" method="post" modelAttribute="convocatoria">
<div class="mb-3 col-3"> <div class="mb-3 col-3">
<form:label path="fechaInicioS" class="form-label ">Fecha inicial</form:label>
<form:input type="date" path="fechaInicioS" required="true" class="form-control ${ existeFecha ? 'is-invalid' : ''}" placeholder="Fecha requerida" requiered="true" />
<div id="validationServerUsernameFeedback1" class="invalid-feedback">
Esta fecha ya existe
</div>
</div>
<div class="mb-3 col-3">
<form:label path="fechaFinS" class="form-label">Fecha Fin</form:label>
<form:input type="date" path="fechaFinS" required="true" class="form-control ${existeFecha ? 'is-invalid': '' }" placeholder="Fecha requerida" requiered="true" />
<div id="validationServerUsernameFeedback2" class="invalid-feedback">
Esta fecha ya existe
</div>
</div>
<div class="mb-3 col-3">
<form:label path="cupos" class="form-label">Cupos:</form:label>
<form:input type="number" class="form-control" path="cupos" required="true"/>
</div>
<div class="mb-3 col-3">
<form:label path="cargoId" class="form-label">Cargo</form:label> <form:label path="cargoId" class="form-label">Cargo</form:label>
<form:select class="form-select" path="cargoId"> <form:select class="form-select" path="cargoId">
<c:forEach items="${cargos}" var="cargo"> <c:forEach items="${cargos}" var="cargo">
...@@ -35,7 +16,7 @@ ...@@ -35,7 +16,7 @@
</c:forEach> </c:forEach>
</form:select> </form:select>
</div> </div>
<button type="submit" class="btn btn-primary">Guardar</button> <button type="submit" class="btn btn-primary">Abrir Convocatoria</button>
</form:form> </form:form>
</div> </div>
</layout:put> </layout:put>
......
...@@ -32,9 +32,9 @@ ...@@ -32,9 +32,9 @@
<tr> <tr>
<th scope="col">#</th> <th scope="col">#</th>
<th scope="col">Cargo</th> <th scope="col">Cargo</th>
<th scope="col">Fecha Desde</th> <th scope="col">Estado</th>
<th scope="col">Fecha Hasta</th> <th scope="col">Fecha Abierta</th>
<th scope="col">Vacantes</th> <th scope="col">Fecha Cerrada</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
...@@ -43,11 +43,11 @@ ...@@ -43,11 +43,11 @@
<tr> <tr>
<th scope="row">${sta.index+1}</th> <th scope="row">${sta.index+1}</th>
<td>${convocatoria.getCargo().getNombre()}</td> <td>${convocatoria.getCargo().getNombre()}</td>
<td>${convocatoria.getEstado().getDescripcion()}</td>
<td>${convocatoria.getFechaInicio().toString().split(" ")[0]}</td> <td>${convocatoria.getFechaInicio().toString().split(" ")[0]}</td>
<td>${convocatoria.getFechaFin().toString().split(" ")[0]}</td> <td>${convocatoria.getFechaFin().toString().split(" ")[0]}</td>
<td>${convocatoria.getCupos()}</td>
<td>Ver Postulantes</td> <td>Ver Postulantes</td>
<td><a href="/convocatoria/${convocatoria.id}">Editar</a></td> <td><button onclick=window.location.href="/convocatoria/${convocatoria.id}">Cerrar convocatoria</button></td>
</tr> </tr>
</c:forEach> </c:forEach>
...@@ -59,6 +59,11 @@ ...@@ -59,6 +59,11 @@
</div> </div>
</layout:put> </layout:put>
<layout:put block="scripts" type="APPEND"> <layout:put block="scripts" type="APPEND">
<script language="JavaScript">
let mostrar=document.querySelector(convocatoria.getFechaFin())
if(mostrar!=null){
}
</script>
</layout:put> </layout:put>
</layout:extends> </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