Commit 2f3104ce by willgonzz

merge con joel-001

parents bf2489ad 36107160
...@@ -56,6 +56,7 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter { ...@@ -56,6 +56,7 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
.mvcMatchers("/tecnologia*").authenticated() .mvcMatchers("/tecnologia*").authenticated()
.mvcMatchers("/postulantes","/postulantes/**").authenticated() .mvcMatchers("/postulantes","/postulantes/**").authenticated()
.mvcMatchers("/edit-user-data").authenticated() .mvcMatchers("/edit-user-data").authenticated()
.mvcMatchers("/postulantesExcel*").authenticated()
.anyRequest().permitAll() .anyRequest().permitAll()
.and() .and()
.formLogin() .formLogin()
......
...@@ -36,11 +36,16 @@ public class CargoController { ...@@ -36,11 +36,16 @@ public class CargoController {
public String menuCargos(Model model,@RequestParam(required = false) String nombre,@RequestParam(defaultValue = "0")Integer nroPagina) { public String menuCargos(Model model,@RequestParam(required = false) String nombre,@RequestParam(defaultValue = "0")Integer nroPagina) {
final Integer CANTIDAD_POR_PAGINA = 10; final Integer CANTIDAD_POR_PAGINA = 10;
Pageable page = PageRequest.of(nroPagina,CANTIDAD_POR_PAGINA,Sort.by("id")); Pageable page = PageRequest.of(nroPagina,CANTIDAD_POR_PAGINA,Sort.by("id"));
Page<Cargo> CargoPag=cargoRepo.findAllCargo(page); if(nombre == null || nombre.trim().isEmpty()) {
List<Cargo> cargo = CargoPag.getContent(); Page<Cargo> CargoPag=cargoRepo.findAll(page);
model.addAttribute("cargos", CargoPag.getContent());
model.addAttribute("pages", CargoPag.getTotalPages()); model.addAttribute("pages", CargoPag.getTotalPages());
if(nombre == null || nombre.trim().isEmpty()) model.addAttribute("cargos", cargo); }
else model.addAttribute("cargos", cargoRepo.findByNombreContainingIgnoreCase(nombre)); else {
Page<Cargo> CargoPag=cargoRepo.findByNombreContainingIgnoreCase(nombre,page);
model.addAttribute("pages", CargoPag.getTotalPages());
model.addAttribute("cargos", CargoPag.getContent());
}
return "cargos"; return "cargos";
} }
......
...@@ -18,6 +18,10 @@ import org.hibernate.type.IntegerType; ...@@ -18,6 +18,10 @@ import org.hibernate.type.IntegerType;
import org.hibernate.type.LongType; import org.hibernate.type.LongType;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.MessageSource; import org.springframework.context.MessageSource;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import org.springframework.ui.Model; import org.springframework.ui.Model;
import org.springframework.validation.BindingResult; import org.springframework.validation.BindingResult;
...@@ -43,12 +47,18 @@ public class ConvocatoriaController { ...@@ -43,12 +47,18 @@ public class ConvocatoriaController {
@RequestMapping("/convocatorias") @RequestMapping("/convocatorias")
public String menuConvocatorias(Model model,RedirectAttributes redirectAttrs, public String menuConvocatorias(Model model,RedirectAttributes redirectAttrs,
@RequestParam(required = false) Long cargoId, @RequestParam(required = false) Long cargoId,
@RequestParam(required = false) Integer isOpen//1: true, 0: false @RequestParam(required = false) EstadoConvocatoria estado,//1: true, 0: false
@RequestParam(defaultValue = "0")Integer nroPagina
) { ) {
final Integer CANTIDAD_POR_PAGINA = 10;
Pageable page = PageRequest.of(nroPagina,CANTIDAD_POR_PAGINA,Sort.by("id"));
model.addAttribute("cargos", cargoRepo.findAll()); model.addAttribute("cargos", cargoRepo.findAll());
Page<ConvocatoriaCargo> convoPag=convoRepo.findByCargoAndEstado(cargoId,estado,page);
model.addAttribute("convocatorias", convoPag.getContent());
model.addAttribute("pages", convoPag.getTotalPages());
model.addAttribute("estados", EstadoConvocatoria.values());
model.addAttribute("convocatorias", convoRepo.f1ndByCargoAndEstado(new TypedParameterValue(LongType.INSTANCE, cargoId), new Date(), new TypedParameterValue(IntegerType.INSTANCE, isOpen)));
//model.addAttribute("convocatorias",cargoId==null? convoRepo.findAll() : convoRepo.findByCargoId(cargoId)); //model.addAttribute("convocatorias",cargoId==null? convoRepo.findAll() : convoRepo.findByCargoId(cargoId));
return "convocatorias"; return "convocatorias";
} }
......
...@@ -29,6 +29,8 @@ import org.hibernate.jpa.TypedParameterValue; ...@@ -29,6 +29,8 @@ import org.hibernate.jpa.TypedParameterValue;
import org.hibernate.type.IntegerType; import org.hibernate.type.IntegerType;
import org.hibernate.type.LongType; import org.hibernate.type.LongType;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Sort;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
...@@ -83,7 +85,8 @@ public class PostulanteController { ...@@ -83,7 +85,8 @@ public class PostulanteController {
model.addAttribute("estadosCiviles", EstadoCivil.values()); model.addAttribute("estadosCiviles", EstadoCivil.values());
model.addAttribute("nacionalidades", Nacionalidad.values()); model.addAttribute("nacionalidades", Nacionalidad.values());
model.addAttribute("tiposExperencia", TipoExperiencia.values()); model.addAttribute("tiposExperencia", TipoExperiencia.values());
model.addAttribute("CargosDisponibles", convoRepo.f1ndByCargoAndEstado(new TypedParameterValue(LongType.INSTANCE, null), new Date(), new TypedParameterValue(IntegerType.INSTANCE, 1))); model.addAttribute("CargosDisponibles",
convoRepo.findByCargoAndEstado(null, EstadoConvocatoria.abierto, PageRequest.of(0,Integer.MAX_VALUE,Sort.by("id"))).getContent());
try { try {
model.addAttribute("ciudades", new ObjectMapper().writeValueAsString(ciuRepo.findAll())); model.addAttribute("ciudades", new ObjectMapper().writeValueAsString(ciuRepo.findAll()));
} catch (JsonProcessingException er) { } catch (JsonProcessingException er) {
......
...@@ -100,7 +100,7 @@ public class PostulanteRRHHController { ...@@ -100,7 +100,7 @@ public class PostulanteRRHHController {
@RequestParam(required = false)Long convId, @RequestParam(required = false)Long convId,
@RequestParam(defaultValue = "0")Integer nroPagina @RequestParam(defaultValue = "0")Integer nroPagina
) throws IOException { ) throws IOException {
final Integer CANTIDAD_POR_PAGINA = 5; final Integer CANTIDAD_POR_PAGINA = 10;
Pageable page = PageRequest.of(nroPagina,CANTIDAD_POR_PAGINA,Sort.by("id")); Pageable page = PageRequest.of(nroPagina,CANTIDAD_POR_PAGINA,Sort.by("id"));
model.addAttribute("tecnologias", tecRepo.findAll()); model.addAttribute("tecnologias", tecRepo.findAll());
model.addAttribute("disponibilidades", Disponibilidad.values()); model.addAttribute("disponibilidades", Disponibilidad.values());
...@@ -189,7 +189,7 @@ public class PostulanteRRHHController { ...@@ -189,7 +189,7 @@ public class PostulanteRRHHController {
response.setHeader(headerKey, headerValue); response.setHeader(headerKey, headerValue);
HashMap<String, String> filtros = new HashMap<String, String>(); HashMap<String, String> filtros = new HashMap<String, String>();
filtros.put("nombre", nombre.equals("") ? "-":nombre); filtros.put("nombre", nombre == null ? "-":nombre);
filtros.put("nivelIngles", lvlEng == null ? "-" : lvlEng.toString()); filtros.put("nivelIngles", lvlEng == null ? "-" : lvlEng.toString());
filtros.put("tecnologia", tecId == null ? "-" : tecRepo.findById(tecId).get().getNombre()); filtros.put("tecnologia", tecId == null ? "-" : tecRepo.findById(tecId).get().getNombre());
filtros.put("nivelTecnologia", lvlTec == null ? "-" : lvlTec.toString()); filtros.put("nivelTecnologia", lvlTec == null ? "-" : lvlTec.toString());
...@@ -197,6 +197,7 @@ public class PostulanteRRHHController { ...@@ -197,6 +197,7 @@ public class PostulanteRRHHController {
filtros.put("estado", estado == null ? "-" : estado.getEstado()); filtros.put("estado", estado == null ? "-" : estado.getEstado());
filtros.put("experienciaEnMeses", expInMonths == null ? "-" : expInMonths.toString()); filtros.put("experienciaEnMeses", expInMonths == null ? "-" : expInMonths.toString());
filtros.put("convocatoria", convId == null ? "-" : cargoRepo.findById(convId).get().getCargo().getNombre()); filtros.put("convocatoria", convId == null ? "-" : cargoRepo.findById(convId).get().getCargo().getNombre());
filtros.put("convocatoriaFecha", convId == null ? "-" : cargoRepo.findById(convId).get().getFechaInicio().toString());
PostulantesExcelExporter excelExporter = new PostulantesExcelExporter(postulantesDTO, filtros); PostulantesExcelExporter excelExporter = new PostulantesExcelExporter(postulantesDTO, filtros);
......
...@@ -47,11 +47,17 @@ public String addtecnologiaView(Model model,@PathVariable(required = false) Long ...@@ -47,11 +47,17 @@ public String addtecnologiaView(Model model,@PathVariable(required = false) Long
public String menuTecnologias(Model model,@RequestParam(required = false) String nombre,@RequestParam(defaultValue = "0")Integer nroPagina) { public String menuTecnologias(Model model,@RequestParam(required = false) String nombre,@RequestParam(defaultValue = "0")Integer nroPagina) {
final Integer CANTIDAD_POR_PAGINA = 10; final Integer CANTIDAD_POR_PAGINA = 10;
Pageable page = PageRequest.of(nroPagina,CANTIDAD_POR_PAGINA,Sort.by("id")); Pageable page = PageRequest.of(nroPagina,CANTIDAD_POR_PAGINA,Sort.by("id"));
if(nombre == null || nombre.trim().isEmpty()) {
Page<Tecnologia> tecnologiaPag=tecRepo.findAllTecnologia(page); Page<Tecnologia> tecnologiaPag=tecRepo.findAllTecnologia(page);
List<Tecnologia> tecnologia = tecnologiaPag.getContent(); model.addAttribute("tecnologias", tecnologiaPag.getContent());
model.addAttribute("pages", tecnologiaPag.getTotalPages());
}
else {
Page<Tecnologia> tecnologiaPag=tecRepo.findByNombreContainingIgnoreCase(nombre,page);
model.addAttribute("pages", tecnologiaPag.getTotalPages()); model.addAttribute("pages", tecnologiaPag.getTotalPages());
if(nombre == null || nombre.trim().isEmpty()) model.addAttribute("tecnologias", tecnologia); model.addAttribute("tecnologias", tecnologiaPag.getContent());
else model.addAttribute("tecnologias", tecRepo.findByNombreContainingIgnoreCase(nombre)); }
return "tecnologias"; return "tecnologias";
} }
......
...@@ -26,22 +26,6 @@ public class Cargo { ...@@ -26,22 +26,6 @@ public class Cargo {
@Column(name = "nombre") @Column(name = "nombre")
private String nombre; private String nombre;
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;
}
@OneToMany(mappedBy = "cargo") @OneToMany(mappedBy = "cargo")
@JsonManagedReference @JsonManagedReference
private List<ConvocatoriaCargo> convocatorias; private List<ConvocatoriaCargo> convocatorias;
......
...@@ -12,7 +12,6 @@ import javax.persistence.JoinColumn; ...@@ -12,7 +12,6 @@ import javax.persistence.JoinColumn;
import javax.persistence.ManyToMany; import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne; import javax.persistence.ManyToOne;
import javax.persistence.Table; import javax.persistence.Table;
import javax.persistence.Transient;
import com.fasterxml.jackson.annotation.JsonBackReference; import com.fasterxml.jackson.annotation.JsonBackReference;
import com.fasterxml.jackson.annotation.JsonIdentityInfo; import com.fasterxml.jackson.annotation.JsonIdentityInfo;
...@@ -46,15 +45,6 @@ public class ConvocatoriaCargo { ...@@ -46,15 +45,6 @@ public class ConvocatoriaCargo {
@Column(name = "fecha_fin") @Column(name = "fecha_fin")
private Date fechaFin; private Date fechaFin;
//para deserializar desde el form como string
@Transient
private String fechaFinS;
//para deserializar desde el form como string
@Transient
private String fechaInicioS;
@ManyToMany(mappedBy = "postulaciones") @ManyToMany(mappedBy = "postulaciones")
private List<Postulante> postulantes; private List<Postulante> postulantes;
...@@ -90,20 +80,7 @@ public class ConvocatoriaCargo { ...@@ -90,20 +80,7 @@ public class ConvocatoriaCargo {
public void setCargoId(Long cargoId) { public void setCargoId(Long cargoId) {
this.cargoId = cargoId; this.cargoId = cargoId;
} }
public String getFechaFinS() {
return fechaFinS;
}
public String getFechaInicioS() {
return fechaInicioS;
}
public void setFechaFinS(String fechaFinS) {
this.fechaFinS = fechaFinS;
setFechaFin(fechaFinS);
}
public void setFechaInicioS(String fechaInicioS) {
this.fechaInicioS = fechaInicioS;
setFechaInicio(fechaInicioS);
}
public Long getId() { public Long getId() {
return this.id; return this.id;
...@@ -129,4 +106,6 @@ public class ConvocatoriaCargo { ...@@ -129,4 +106,6 @@ public class ConvocatoriaCargo {
this.estado = estado; this.estado = estado;
} }
} }
...@@ -10,7 +10,7 @@ import org.springframework.data.jpa.repository.JpaRepository; ...@@ -10,7 +10,7 @@ import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query; import org.springframework.data.jpa.repository.Query;
public interface CargoRepository extends JpaRepository<Cargo,Long>{ public interface CargoRepository extends JpaRepository<Cargo,Long>{
public List<Cargo> findByNombreContainingIgnoreCase(String nombre); public Page<Cargo> findByNombreContainingIgnoreCase(String nombre, Pageable pageable);
public boolean existsByNombreIgnoreCase(String nombre); public boolean existsByNombreIgnoreCase(String nombre);
......
...@@ -4,8 +4,11 @@ import java.util.Date; ...@@ -4,8 +4,11 @@ import java.util.Date;
import java.util.List; import java.util.List;
import com.roshka.modelo.ConvocatoriaCargo; import com.roshka.modelo.ConvocatoriaCargo;
import com.roshka.modelo.EstadoConvocatoria;
import org.hibernate.jpa.TypedParameterValue; import org.hibernate.jpa.TypedParameterValue;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query; import org.springframework.data.jpa.repository.Query;
...@@ -15,8 +18,13 @@ public interface ConvocatoriaRepository extends JpaRepository<ConvocatoriaCargo, ...@@ -15,8 +18,13 @@ public interface ConvocatoriaRepository extends JpaRepository<ConvocatoriaCargo,
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 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) )") /* @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 Page<ConvocatoriaCargo> f1ndByCargoAndEstado(TypedParameterValue cargoId, Date fecha, TypedParameterValue isOpen, Pageable page); */
@Query("select c from ConvocatoriaCargo c "+
"where (c.cargoId = ?1 or ?1 is null) and "+
"(c.estado = ?2 or ?2 is null)")
public Page<ConvocatoriaCargo> findByCargoAndEstado(Long cargoId, EstadoConvocatoria estado, Pageable page);
@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);
......
...@@ -11,7 +11,7 @@ import com.roshka.modelo.Tecnologia; ...@@ -11,7 +11,7 @@ import com.roshka.modelo.Tecnologia;
public interface TecnologiaRepository extends JpaRepository<Tecnologia,Long> { public interface TecnologiaRepository extends JpaRepository<Tecnologia,Long> {
public List<Tecnologia> findByNombreContainingIgnoreCase(String nombre); public Page<Tecnologia> findByNombreContainingIgnoreCase(String nombre, Pageable pageable);
public boolean existsByNombreIgnoreCase(String nombre); public boolean existsByNombreIgnoreCase(String nombre);
......
...@@ -47,6 +47,7 @@ public class Helper { ...@@ -47,6 +47,7 @@ public class Helper {
} }
public static LocalDate convertToLocalDateViaSqlDate(Date dateToConvert) { public static LocalDate convertToLocalDateViaSqlDate(Date dateToConvert) {
if(dateToConvert == null) return null;
return new java.sql.Date(dateToConvert.getTime()).toLocalDate(); return new java.sql.Date(dateToConvert.getTime()).toLocalDate();
} }
......
...@@ -59,34 +59,16 @@ public class PostulantesExcelExporter { ...@@ -59,34 +59,16 @@ public class PostulantesExcelExporter {
createCell(row, 5, "Institucion", style); createCell(row, 5, "Institucion", style);
createCell(row, 6, "Estado", style); createCell(row, 6, "Estado", style);
createCell(row, 7, "Convocatoria", style); createCell(row, 7, "Convocatoria", style);
createCell(row, 8, "Fecha Inicio Convocatoria", style);
row = sheet.createRow(6); row = sheet.createRow(6);
style = workbook.createCellStyle();
font = workbook.createFont();
font.setBold(true);
font.setFontHeight(14);
style.setFont(font);
createCell(row, 0, "Nombre", style); createCell(row, 0, "Nombre", style);
createCell(row, 1, "Nivel de Ingles", style); createCell(row, 1, "Nivel de Ingles", style);
createCell(row, 2, "Experiencia", style); createCell(row, 2, "Experiencia", style);
createCell(row, 3, "Tecnologias", style); createCell(row, 3, "Tecnologias", style);
createCell(row, 4, "Estado", style); createCell(row, 4, "Estado", style);
row = sheet.createRow(4);
font.setBold(false);
font.setFontHeight(12);
style.setFont(font);
createCell(row, 0, filtros.get("nombre"), style);
createCell(row, 1, filtros.get("nivelIngles"), style);
createCell(row, 2, filtros.get("experienciaEnMeses"), style);
createCell(row, 3, filtros.get("tecnologia"), style);
createCell(row, 4, filtros.get("nivelTecnologia"), style);
createCell(row, 5, filtros.get("institucion"), style);
createCell(row, 6, filtros.get("estado"), style);
createCell(row, 7, filtros.get("convocatoria"), style);
} }
private void createCell(Row row, int columnCount, Object value, CellStyle style) { private void createCell(Row row, int columnCount, Object value, CellStyle style) {
...@@ -126,6 +108,17 @@ public class PostulantesExcelExporter { ...@@ -126,6 +108,17 @@ public class PostulantesExcelExporter {
createCell(row, columnCount++, user.getEstado().getEstado(), style); createCell(row, columnCount++, user.getEstado().getEstado(), style);
tecno.delete(0, tecno.length()-1); tecno.delete(0, tecno.length()-1);
} }
Row row = sheet.createRow(4);
createCell(row, 0, filtros.get("nombre"), style);
createCell(row, 1, filtros.get("nivelIngles"), style);
createCell(row, 2, filtros.get("experienciaEnMeses"), style);
createCell(row, 3, filtros.get("tecnologia"), style);
createCell(row, 4, filtros.get("nivelTecnologia"), style);
createCell(row, 5, filtros.get("institucion"), style);
createCell(row, 6, filtros.get("estado"), style);
createCell(row, 7, filtros.get("convocatoria"), style);
createCell(row, 8, filtros.get("convocatoriaFecha"), style);
} }
public void export(HttpServletResponse response) throws IOException { public void export(HttpServletResponse response) throws IOException {
......
...@@ -6,5 +6,17 @@ ...@@ -6,5 +6,17 @@
{ {
"id": 2, "id": 2,
"nombre": "dev php" "nombre": "dev php"
},
{
"id": 3,
"nombre": "dev python"
},
{
"id": 4,
"nombre": "dev c"
},
{
"id": 5,
"nombre": "dev android"
} }
] ]
\ No newline at end of file
...@@ -3,14 +3,30 @@ ...@@ -3,14 +3,30 @@
"id": 1, "id": 1,
"cargoId": 1, "cargoId": 1,
"estado":0, "estado":0,
"fechaInicio": "2021-11-01", "fechaInicio": "2021-11-01"
"fechaFin": "2021-11-30"
}, },
{ {
"id": 2, "id": 2,
"cargoId": 2, "cargoId": 2,
"estado":0, "estado":0,
"fechaInicio": "2021-11-01", "fechaInicio": "2021-11-01"
"fechaFin": "2021-11-30" },
{
"id": 3,
"cargoId": 3,
"estado":0,
"fechaInicio": "2021-11-01"
},
{
"id": 4,
"cargoId": 4,
"estado":0,
"fechaInicio": "2021-11-01"
},
{
"id": 5,
"cargoId": 5,
"estado":0,
"fechaInicio": "2021-11-01"
} }
] ]
\ No newline at end of file
...@@ -61,7 +61,7 @@ ...@@ -61,7 +61,7 @@
{ {
"direccion": "Do nostrud aliqua adipisicing in sunt aute id do elit ut dolor ad aliquip.", "direccion": "Do nostrud aliqua adipisicing in sunt aute id do elit ut dolor ad aliquip.",
"nacionalidad": "Paraguaya", "nacionalidad": "Paraguaya",
"postulaciones": [{ "id": 1 }], "postulaciones": [{ "id": 2 }],
"estadoCivil": "Soltero", "estadoCivil": "Soltero",
"tipoDocumento": "CI", "tipoDocumento": "CI",
"nombre": "Hopkins", "nombre": "Hopkins",
...@@ -108,7 +108,7 @@ ...@@ -108,7 +108,7 @@
{ {
"direccion": "Occaecat non cupidatat amet reprehenderit consectetur ullamco et.", "direccion": "Occaecat non cupidatat amet reprehenderit consectetur ullamco et.",
"nacionalidad": "Paraguaya", "nacionalidad": "Paraguaya",
"postulaciones": [{ "id": 1 }], "postulaciones": [{ "id": 3 }],
"estadoCivil": "Soltero", "estadoCivil": "Soltero",
"tipoDocumento": "CI", "tipoDocumento": "CI",
"nombre": "Alejandra", "nombre": "Alejandra",
...@@ -155,7 +155,7 @@ ...@@ -155,7 +155,7 @@
{ {
"direccion": "Qui ullamco excepteur velit ad ullamco id id nisi irure dolore cupidatat mollit ullamco veniam.", "direccion": "Qui ullamco excepteur velit ad ullamco id id nisi irure dolore cupidatat mollit ullamco veniam.",
"nacionalidad": "Paraguaya", "nacionalidad": "Paraguaya",
"postulaciones": [{ "id": 1 }], "postulaciones": [{ "id": 4 }],
"estadoCivil": "Soltero", "estadoCivil": "Soltero",
"tipoDocumento": "CI", "tipoDocumento": "CI",
"nombre": "Angelina", "nombre": "Angelina",
...@@ -202,7 +202,7 @@ ...@@ -202,7 +202,7 @@
{ {
"direccion": "Deserunt tempor ut et eiusmod et labore Lorem.", "direccion": "Deserunt tempor ut et eiusmod et labore Lorem.",
"nacionalidad": "Paraguaya", "nacionalidad": "Paraguaya",
"postulaciones": [{ "id": 1 }], "postulaciones": [{ "id": 5 }],
"estadoCivil": "Soltero", "estadoCivil": "Soltero",
"tipoDocumento": "CI", "tipoDocumento": "CI",
"nombre": "Rivas", "nombre": "Rivas",
...@@ -249,7 +249,7 @@ ...@@ -249,7 +249,7 @@
{ {
"direccion": "Aliqua est adipisicing do exercitation sit laborum aliquip aliqua adipisicing enim aute.", "direccion": "Aliqua est adipisicing do exercitation sit laborum aliquip aliqua adipisicing enim aute.",
"nacionalidad": "Paraguaya", "nacionalidad": "Paraguaya",
"postulaciones": [{ "id": 1 }], "postulaciones": [{ "id": 3 }],
"estadoCivil": "Soltero", "estadoCivil": "Soltero",
"tipoDocumento": "CI", "tipoDocumento": "CI",
"nombre": "Estelle", "nombre": "Estelle",
...@@ -296,7 +296,7 @@ ...@@ -296,7 +296,7 @@
{ {
"direccion": "Officia eiusmod ut reprehenderit tempor consequat elit amet ex voluptate aute anim do.", "direccion": "Officia eiusmod ut reprehenderit tempor consequat elit amet ex voluptate aute anim do.",
"nacionalidad": "Paraguaya", "nacionalidad": "Paraguaya",
"postulaciones": [{ "id": 1 }], "postulaciones": [{ "id": 4 }],
"estadoCivil": "Soltero", "estadoCivil": "Soltero",
"tipoDocumento": "CI", "tipoDocumento": "CI",
"nombre": "Mariana", "nombre": "Mariana",
......
...@@ -12,9 +12,9 @@ function listarConvocatorias(id){ ...@@ -12,9 +12,9 @@ function listarConvocatorias(id){
const opt = document.createElement("option"); const opt = document.createElement("option");
opt.value = conv.id; opt.value = conv.id;
if(conv.fechaFin!=null){ if(conv.fechaFin!=null){
opt.innerHTML ="Desde :"+new Date(conv.fechaInicio)+"-"+" Hasta :"+new Date(conv.fechaFin); opt.innerHTML ="Desde :"+new Date(conv.fechaInicio).toISOString().slice(0,10)+"-"+" Hasta :"+new Date(conv.fechaFin).toISOString().slice(0,10);
}else{ }else{
opt.innerHTML ="Desde :"+new Date(conv.fechaInicio) opt.innerHTML ="Desde :"+new Date(conv.fechaInicio).toISOString().slice(0,10)
} }
opt.setAttribute("data-CargoId",conv.cargoId); opt.setAttribute("data-CargoId",conv.cargoId);
frag.appendChild(opt) frag.appendChild(opt)
......
...@@ -108,7 +108,7 @@ function validarfecha(fechaDesde, fechaHasta){ ...@@ -108,7 +108,7 @@ function validarfecha(fechaDesde, fechaHasta){
return "la fecha desde no puede ser mayor a la fecha actual" ; return "la fecha desde no puede ser mayor a la fecha actual" ;
} }
if(fechaHasta =! null && fechaDesde>fechaHasta){ if(fechaHasta =! null && fechaHasta.trim().length >0 && fechaDesde>fechaHasta){
return "la fecha desde no puede ser mayor a la fecha hasta"; return "la fecha desde no puede ser mayor a la fecha hasta";
} }
...@@ -223,7 +223,7 @@ function agregarFieldExpierncia(event){ ...@@ -223,7 +223,7 @@ function agregarFieldExpierncia(event){
let pos_rec; let pos_rec;
let returnFlag = false; let returnFlag = false;
let requiredValues = ["institucion", "cargo", "fechaDesde", "descripcion"] let requiredValues = ["institucion", "cargo", "fechaDesde", "descripcion","nombreReferencia","telefonoReferencia"]
formData.forEach((value, key)=>{ formData.forEach((value, key)=>{
if(requiredValues.includes(key) if(requiredValues.includes(key)
......
...@@ -9,16 +9,25 @@ contentType="text/html;charset=UTF-8" language="java" %> ...@@ -9,16 +9,25 @@ contentType="text/html;charset=UTF-8" language="java" %>
<h2>Lista de cargos</h2> <h2>Lista de cargos</h2>
<div> <div>
<form> <form>
<label for="cargos">Nombre:</label> <div class="row justify-content-start gy-2">
<div class="col-auto">
<input <input
class="form-control"
placeholder="Nombre"
type="text" type="text"
name="nombre" name="nombre"
id="nombre" id="nombre"
value="${param.nombre}" value="${param.nombre}"
/> />
<input type="submit" value="Buscar" />
</div>
<div class="col-auto">
<input type="submit" class="btn btn-primary" value="Buscar" />
</div>
</div>
</form> </form>
<a href="/cargo">Agregar Nuevo Cargo</a>
</div> </div>
<div class="card text-dark bg-light mt-3"> <div class="card text-dark bg-light mt-3">
...@@ -48,7 +57,6 @@ contentType="text/html;charset=UTF-8" language="java" %> ...@@ -48,7 +57,6 @@ contentType="text/html;charset=UTF-8" language="java" %>
</table> </table>
</div> </div>
</div> </div>
</div>
<div class="card-footer"> <div class="card-footer">
<div> <div>
<nav aria-label="Page navigation example"> <nav aria-label="Page navigation example">
...@@ -62,19 +70,11 @@ contentType="text/html;charset=UTF-8" language="java" %> ...@@ -62,19 +70,11 @@ contentType="text/html;charset=UTF-8" language="java" %>
</div> </div>
</div> </div>
</div> </div>
</div>
</layout:put> </layout:put>
<layout:put block="scripts" type="APPEND"> <layout:put block="scripts" type="APPEND">
<script> <script>
function buscarPagina(nro){
nro--
const aBuscar = 'nroPagina='+nro
if(!location.search) location.search = "?"+aBuscar
const inicial = location.search.search(aBuscar);
if(inicial==-1){//si no se encuentra y hay otros queries
location.search = "&"+aBuscar
}
location.search.replace('nroPagina=',aBuscar)
}
</script> </script>
</layout:put> </layout:put>
</layout:extends> </layout:extends>
...@@ -5,32 +5,66 @@ ...@@ -5,32 +5,66 @@
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<layout:extends name="layouts/base.jsp"> <layout:extends name="layouts/base.jsp">
<layout:put block="cssDeclaracion" type="APPEND"></layout:put> <layout:put block="cssDeclaracion" type="APPEND">
<style>
label {
width: auto;
}
</style>
</layout:put>
<layout:put block="contents" type="REPLACE"> <layout:put block="contents" type="REPLACE">
<h2>Lista de convocatorias</h2> <h2>Lista de convocatorias</h2>
<div> <div>
<form> <form>
<label for="cargos">Cargos:</label> <div class="row row-cols-2 gy-2">
<select name="cargoId" id="cargos">
<div class="col-auto">
<div class="row">
<div class="col-auto">
<label class="form-label" for="cargos">Cargos:</label>
</div>
<div class="col">
<select class="form-select form-select-sm" name="cargoId" id="cargos">
<option value="">Todos los cargos</option> <option value="">Todos los cargos</option>
<c:forEach items="${cargos}" var="cargo"> <c:forEach items="${cargos}" var="cargo">
<option value="${cargo.id}" ${param.cargoId == cargo.id ? "selected" : ""} >${cargo.nombre}</option> <option value="${cargo.id}" ${param.cargoId == cargo.id ? "selected" : ""} >${cargo.nombre}</option>
</c:forEach> </c:forEach>
</select> </select>
Estado: </div>
<input type="radio" id="cualquiera" name="isOpen" checked value=""> </div>
<label for="abierto">Cualquiera</label><br> </div>
<input type="radio" id="abierto" name="isOpen" value="1"> <div class="col-auto">
<label for="abierto">Abierto</label><br>
<input type="radio" id="cerrado" name="isOpen" value="0"> <label for="form-check-label">Estado: </label>
<label for="cerrado">Cerrado</label><br> <div class="form-check form-check-inline">
<input type="submit" value="Buscar">
<input class="form-check-input" type="radio" id="cualquiera" name="estado" checked value="">
<label class="form-check-label" for="cualquiera">Cualquiera</label><br>
</div>
<c:forEach var="estado" items="${estados}">
<div class="form-check form-check-inline">
<input class="form-check-input" type="radio" id="${estado}" name="estado" value="${estado}">
<label class="form-check-label" for="abierto">${estado}</label><br>
</div>
</c:forEach>
</div>
<div class="col-auto">
<input type="submit" class="btn btn-primary btn-sm" value="Buscar">
</div>
</div>
</form> </form>
</div> </div>
<a href="/convocatoria">Agregar Nueva Convocatoria</a>
<c:if test="${SUCCESS_MESSAGE != null}"> <c:if test="${SUCCESS_MESSAGE != null}">
<div id="status_message" style="color: brown;">${SUCCESS_MESSAGE}</div> <div id="status_message" style="color: brown;" >${SUCCESS_MESSAGE}</div>
</c:if> </c:if>
<div class="card text-dark bg-light mt-3"> <div class="card text-dark bg-light mt-3">
...@@ -56,7 +90,11 @@ ...@@ -56,7 +90,11 @@
<td><fmt:formatDate value="${convocatoria.getFechaInicio()}" pattern="dd-MM-yyyy" /></td> <td><fmt:formatDate value="${convocatoria.getFechaInicio()}" pattern="dd-MM-yyyy" /></td>
<td><fmt:formatDate value="${convocatoria.getFechaFin()}" pattern="dd-MM-yyyy" /></td> <td><fmt:formatDate value="${convocatoria.getFechaFin()}" pattern="dd-MM-yyyy" /></td>
<td><a href="/postulantes?convId=${convocatoria.id}">Ver postulantes</a></td> <td><a href="/postulantes?convId=${convocatoria.id}">Ver postulantes</a></td>
<td><button onclick=window.location.href="/convocatoria/${convocatoria.id}">Cerrar convocatoria</button></td> <td>
<c:if test="${convocatoria.getEstado() != 'cerrado'}">
<a class="btn btn-secondary" href="/convocatoria/${convocatoria.id}">Cerrar convocatoria</a>
</c:if>
</td>
</tr> </tr>
</c:forEach> </c:forEach>
...@@ -66,6 +104,17 @@ ...@@ -66,6 +104,17 @@
</table> </table>
</div> </div>
</div> </div>
<div class="card-footer">
<div>
<nav aria-label="Page navigation example">
<ul class="pagination">
<c:forEach begin="1" end="${pages}" var="nro">
<li class="page-item ${(param.nroPagina == null and nro == 1) or param.nroPagina == nro-1 ? 'active' : ''}"><a class="page-link" href="javascript:buscarPagina(${nro})">${nro}</a></li>
</c:forEach>
</ul>
</nav>
</div>
</div>
</div> </div>
</layout:put> </layout:put>
......
...@@ -78,6 +78,29 @@ ...@@ -78,6 +78,29 @@
</div> </div>
<layout:block name="scripts"> <layout:block name="scripts">
<script>
function buscarPagina(nro){
nro--
const queries = location.search.split("&");
let existe = false;
if(location.search.length == 0 ) location.search = "?nroPagina="+nro;
let fullquery = "";
for (const query of queries) {
let [key, value] = query.split("=");
if(key.includes('nroPagina')){
fullquery += key + "=" + nro + "&";
existe = true;
}
else{
fullquery += key + "=" + value + "&";
}
}
if(!existe) fullquery += "nroPagina" + "=" + nro + "&";
location.search = fullquery.substring(0,fullquery.length-1);
}
</script>
</layout:block> </layout:block>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-ka7Sk0Gln4gmtz2MlQnikT1wXgYsOg+OMhuP+IlRH9sENBO0LRn5q+8nbTov4+1p" crossorigin="anonymous"></script> <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-ka7Sk0Gln4gmtz2MlQnikT1wXgYsOg+OMhuP+IlRH9sENBO0LRn5q+8nbTov4+1p" crossorigin="anonymous"></script>
......
...@@ -358,11 +358,11 @@ ...@@ -358,11 +358,11 @@
</div> </div>
<div class="inputs"> <div class="inputs">
<label for="refNombre" class="form-label">Nombre de la Referencia</label> <label for="refNombre" class="form-label">Nombre de la Referencia</label>
<input placeholder="&#xf007; Ingrese el nombre de su referencia" type="text" class="form-control FA " name="nombreReferencia" id="refNombre" > <input placeholder="&#xf007; Ingrese el nombre de su referencia" type="text" class="form-control FA " name="nombreReferencia" id="refNombre" required>
</div> </div>
<div class="inputs"> <div class="inputs">
<label for="refTel" class="form-label">Telefono de la Referencia</label> <label for="refTel" class="form-label">Telefono de la Referencia</label>
<input placeholder="&#xf095; Ingrese el telefono de su referencia" type="number" class="form-control FA" name="telefonoReferencia" id="refTel" > <input placeholder="&#xf095; Ingrese el telefono de su referencia" type="number" class="form-control FA" name="telefonoReferencia" id="refTel" required>
</div> </div>
<div class="inputs"> <div class="inputs">
......
...@@ -368,17 +368,7 @@ ...@@ -368,17 +368,7 @@
} }
function buscarPagina(nro){
nro--
const aBuscar = 'nroPagina='+nro
if(!location.search) location.search = aBuscar
const inicial = location.search.search(aBuscar);
if(inicial==-1){//si no se encuentra y hay otros queries
location.search = "&"+aBuscar;
}
location.search.replace('nroPagina=',aBuscar)
console.log(location.search)
}
const tecId = document.querySelector("#tecId"); const tecId = document.querySelector("#tecId");
const lvlTec = document.querySelector("#lvlTec"); const lvlTec = document.querySelector("#lvlTec");
tecId.addEventListener('change',habilitarLvlTec); tecId.addEventListener('change',habilitarLvlTec);
......
...@@ -9,11 +9,26 @@ ...@@ -9,11 +9,26 @@
<div> <div>
<form> <form>
<label for="tecnologias">Nombre:</label> <div class="row justify-content-start gy-2">
<input type="text" name="nombre" id="nombre" value="${param.nombre}"/> <div class="col-auto">
<input type="submit" value="Buscar"> <input
class="form-control"
placeholder="Nombre"
type="text"
name="nombre"
id="nombre"
value="${param.nombre}"
/>
</div>
<div class="col-auto">
<input type="submit" class="btn btn-primary" value="Buscar" />
</div>
</div>
</form> </form>
<a href="/tecnologia">Agregar Nueva Tecnologia</a>
</div> </div>
<div class="card text-dark bg-light mt-3"> <div class="card text-dark bg-light mt-3">
...@@ -61,17 +76,6 @@ ...@@ -61,17 +76,6 @@
</layout:put> </layout:put>
<layout:put block="scripts" type="APPEND"> <layout:put block="scripts" type="APPEND">
<script>
function buscarPagina(nro){
nro--
const aBuscar = 'nroPagina='+nro
if(!location.search) location.search = "?"+aBuscar
const inicial = location.search.search(aBuscar);
if(inicial==-1){//si no se encuentra y hay otros queries
location.search = "&"+aBuscar
}
location.search.replace('nroPagina=',aBuscar)
}
</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