Commit eb3b4588 by willgonzz

merge con Joel y modificacion de cantidad de elementos por paginas en las listas

parents b549d351 f35018b6
...@@ -68,6 +68,13 @@ ...@@ -68,6 +68,13 @@
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId> <artifactId>spring-boot-starter-security</artifactId>
</dependency> </dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.22</version>
<scope>provided</scope>
</dependency>
<dependency> <dependency>
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId> <artifactId>spring-boot-starter-mail</artifactId>
......
...@@ -34,7 +34,7 @@ public class CargoController { ...@@ -34,7 +34,7 @@ public class CargoController {
@RequestMapping("/cargos") @RequestMapping("/cargos")
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 = 1; 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); Page<Cargo> CargoPag=cargoRepo.findAllCargo(page);
List<Cargo> cargo = CargoPag.getContent(); List<Cargo> cargo = CargoPag.getContent();
......
...@@ -95,13 +95,6 @@ public class PostulanteController { ...@@ -95,13 +95,6 @@ public class PostulanteController {
return "postulante-form"; return "postulante-form";
} }
/* @PostMapping("/uploadCVPostulante")
public String uploadFile(@RequestParam("file") MultipartFile file) {
dbFileRepository.save(storeFile(file));
DBFile dbFile = dbFileRepository.save(storeFile(file));
return "{\"id\": "+dbFile.getId()+"}";
} */
private DBFile createFile(MultipartFile file) { private DBFile createFile(MultipartFile file) {
// Normalize file name // Normalize file name
String fileName = StringUtils.cleanPath(file.getOriginalFilename()); String fileName = StringUtils.cleanPath(file.getOriginalFilename());
......
...@@ -91,7 +91,7 @@ public class PostulanteRRHHController { ...@@ -91,7 +91,7 @@ public class PostulanteRRHHController {
@RequestParam(required = false)Long convId, @RequestParam(required = false)Long convId,
@RequestParam(defaultValue = "0")Integer nroPagina @RequestParam(defaultValue = "0")Integer nroPagina
) { ) {
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());
......
...@@ -45,7 +45,7 @@ public String addtecnologiaView(Model model,@PathVariable(required = false) Long ...@@ -45,7 +45,7 @@ public String addtecnologiaView(Model model,@PathVariable(required = false) Long
@RequestMapping("/tecnologias") @RequestMapping("/tecnologias")
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 = 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"));
Page<Tecnologia> tecnologiaPag=tecRepo.findAllTecnologia(page); Page<Tecnologia> tecnologiaPag=tecRepo.findAllTecnologia(page);
List<Tecnologia> tecnologia = tecnologiaPag.getContent(); List<Tecnologia> tecnologia = tecnologiaPag.getContent();
......
...@@ -13,7 +13,9 @@ import javax.validation.constraints.NotBlank; ...@@ -13,7 +13,9 @@ import javax.validation.constraints.NotBlank;
import com.fasterxml.jackson.annotation.JsonManagedReference; import com.fasterxml.jackson.annotation.JsonManagedReference;
@Entity import lombok.Data;
@Entity @Data
@Table(name = "cargo") @Table(name = "cargo")
public class Cargo { public class Cargo {
@Id @Id
...@@ -28,19 +30,6 @@ public class Cargo { ...@@ -28,19 +30,6 @@ public class Cargo {
@JsonManagedReference @JsonManagedReference
private List<ConvocatoriaCargo> convocatorias; 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() { public List<ConvocatoriaCargo> getConvocatorias() {
return convocatorias; return convocatorias;
} }
......
...@@ -14,8 +14,10 @@ import javax.persistence.Table; ...@@ -14,8 +14,10 @@ import javax.persistence.Table;
import com.fasterxml.jackson.annotation.JsonBackReference; import com.fasterxml.jackson.annotation.JsonBackReference;
import lombok.Data;
@Entity
@Entity @Data
@Table(name="ciudad") @Table(name="ciudad")
public class Ciudad{ public class Ciudad{
@Id @Id
...@@ -40,7 +42,7 @@ public class Ciudad{ ...@@ -40,7 +42,7 @@ public class Ciudad{
@JsonBackReference @JsonBackReference
private Departamento departamento; private Departamento departamento;
/*
public Long getId() { public Long getId() {
return this.id; return this.id;
} }
...@@ -56,7 +58,7 @@ public class Ciudad{ ...@@ -56,7 +58,7 @@ public class Ciudad{
public void setNombre(String nombre) { public void setNombre(String nombre) {
this.nombre = nombre; this.nombre = nombre;
} }
*/
public Departamento getDepartamento() { public Departamento getDepartamento() {
return this.departamento; return this.departamento;
} }
......
...@@ -19,8 +19,10 @@ import com.fasterxml.jackson.annotation.JsonIdentityInfo; ...@@ -19,8 +19,10 @@ import com.fasterxml.jackson.annotation.JsonIdentityInfo;
import com.fasterxml.jackson.annotation.ObjectIdGenerators; import com.fasterxml.jackson.annotation.ObjectIdGenerators;
import com.roshka.utils.Helper; import com.roshka.utils.Helper;
import lombok.Data;
@Entity @Entity
@Table(name = "convocatoria_cargo") @Table(name = "convocatoria_cargo") @Data
@JsonIdentityInfo(generator = ObjectIdGenerators.UUIDGenerator.class, property="@UUID") @JsonIdentityInfo(generator = ObjectIdGenerators.UUIDGenerator.class, property="@UUID")
public class ConvocatoriaCargo { public class ConvocatoriaCargo {
@Id @Id
...@@ -55,30 +57,14 @@ public class ConvocatoriaCargo { ...@@ -55,30 +57,14 @@ public class ConvocatoriaCargo {
@ManyToMany(mappedBy = "postulaciones") @ManyToMany(mappedBy = "postulaciones")
private List<Postulante> postulantes; private List<Postulante> postulantes;
public Long getId() {
return id;
}
public Cargo getCargo() {
return cargo;
}
public int getCupos() {
return cupos;
}
public Date getFechaFin() { public Date getFechaFin() {
return fechaFin; return fechaFin;
} }
public Date getFechaInicio() { public Date getFechaInicio() {
return fechaInicio; 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) { public void setFechaFin(Date fechaFin) {
this.fechaFin = fechaFin; this.fechaFin = fechaFin;
} }
......
...@@ -11,7 +11,9 @@ import javax.persistence.Table; ...@@ -11,7 +11,9 @@ import javax.persistence.Table;
import com.fasterxml.jackson.annotation.JsonManagedReference; import com.fasterxml.jackson.annotation.JsonManagedReference;
@Entity import lombok.Data;
@Entity @Data
@Table(name="departamento") @Table(name="departamento")
public class Departamento { public class Departamento {
@Id @Id
...@@ -26,22 +28,6 @@ public class Departamento { ...@@ -26,22 +28,6 @@ public class 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 List<Ciudad> getCiudad() { public List<Ciudad> getCiudad() {
return this.ciudad; return this.ciudad;
} }
......
...@@ -14,12 +14,14 @@ import com.fasterxml.jackson.annotation.JsonBackReference; ...@@ -14,12 +14,14 @@ import com.fasterxml.jackson.annotation.JsonBackReference;
import com.fasterxml.jackson.annotation.JsonManagedReference; import com.fasterxml.jackson.annotation.JsonManagedReference;
import com.roshka.utils.Helper; import com.roshka.utils.Helper;
import lombok.Data;
import javax.persistence.*; import javax.persistence.*;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import javax.validation.constraints.Past; import javax.validation.constraints.Past;
@Entity @Entity @Data
@Table(name = "experiencia") @Table(name = "experiencia")
public class Experiencia { public class Experiencia {
@Id @Id
...@@ -61,45 +63,17 @@ public class Experiencia { ...@@ -61,45 +63,17 @@ public class Experiencia {
@NotBlank @NotBlank
private String descripcion; private String descripcion;
public String getDescripcion() {
return descripcion;
}
public void setDescripcion(String descripcion) {
this.descripcion = descripcion;
}
public Date getFechaDesde() { public Date getFechaDesde() {
return fechaDesde; return fechaDesde;
} }
public String getMotivoSalida() {
return motivoSalida;
}
public TipoExperiencia getTipoExperiencia() { public TipoExperiencia getTipoExperiencia() {
return tipoExperiencia; return tipoExperiencia;
} }
public void setMotivoSalida(String motivoSalida) {
this.motivoSalida = motivoSalida;
}
public void setTipoExperiencia(TipoExperiencia tipoExperiencia) { public void setTipoExperiencia(TipoExperiencia tipoExperiencia) {
this.tipoExperiencia = tipoExperiencia; this.tipoExperiencia = tipoExperiencia;
} }
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getInstitucion() {
return institucion;
}
public void setInstitucion(String institucion) {
this.institucion = institucion;
}
public void setFechaDesde(String fechaDesde) { public void setFechaDesde(String fechaDesde) {
this.fechaDesde = Helper.convertirFecha(fechaDesde); this.fechaDesde = Helper.convertirFecha(fechaDesde);
} }
...@@ -112,24 +86,6 @@ public class Experiencia { ...@@ -112,24 +86,6 @@ public class Experiencia {
public void setFechaHasta(String fechaHasta) { public void setFechaHasta(String fechaHasta) {
this.fechaHasta = Helper.convertirFecha(fechaHasta); this.fechaHasta = Helper.convertirFecha(fechaHasta);
} }
public String getNombreReferencia() {
return nombreReferencia;
}
public String getTelefonoReferencia() {
return telefonoReferencia;
}
public void setNombreReferencia(String nombreReferencia) {
this.nombreReferencia = nombreReferencia;
}
public void setTelefonoReferencia(String telefonoReferencia) {
this.telefonoReferencia = telefonoReferencia;
}
public String getCargo() {
return cargo;
}
public void setCargo(String cargo) {
this.cargo = cargo;
}
public void setPostulante(Postulante postulante) { public void setPostulante(Postulante postulante) {
this.postulante = postulante; this.postulante = postulante;
} }
......
...@@ -2,11 +2,13 @@ package com.roshka.modelo; ...@@ -2,11 +2,13 @@ package com.roshka.modelo;
import com.fasterxml.jackson.annotation.JsonManagedReference; import com.fasterxml.jackson.annotation.JsonManagedReference;
import lombok.Data;
import javax.persistence.*; import javax.persistence.*;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
import java.util.List; import java.util.List;
@Entity @Entity @Data
@Table(name = "institucion") @Table(name = "institucion")
public class Institucion { public class Institucion {
@Id @Id
...@@ -26,30 +28,6 @@ public class Institucion { ...@@ -26,30 +28,6 @@ public class Institucion {
@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() { public List<Estudio> getEstudioList() {
return estudioList; return estudioList;
} }
......
...@@ -3,7 +3,7 @@ package com.roshka.modelo; ...@@ -3,7 +3,7 @@ package com.roshka.modelo;
import com.fasterxml.jackson.annotation.JsonValue; import com.fasterxml.jackson.annotation.JsonValue;
public enum Nacionalidad { public enum Nacionalidad {
PY("Paraguayo"),EX("Extranjero"); PY("Paraguaya"),EX("Extranjera");
private String descripcion; private String descripcion;
......
...@@ -9,6 +9,8 @@ import com.fasterxml.jackson.annotation.JsonManagedReference; ...@@ -9,6 +9,8 @@ import com.fasterxml.jackson.annotation.JsonManagedReference;
import com.fasterxml.jackson.annotation.ObjectIdGenerators; import com.fasterxml.jackson.annotation.ObjectIdGenerators;
import com.roshka.utils.Helper; import com.roshka.utils.Helper;
import lombok.Data;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
...@@ -17,6 +19,7 @@ import java.util.List; ...@@ -17,6 +19,7 @@ import java.util.List;
@Entity @Entity
@Table(name="postulante") @Table(name="postulante")
@JsonIdentityInfo(generator = ObjectIdGenerators.UUIDGenerator.class, property="@UUID") @JsonIdentityInfo(generator = ObjectIdGenerators.UUIDGenerator.class, property="@UUID")
@Data
public class Postulante { public class Postulante {
@Id @Id
@GeneratedValue(strategy = GenerationType.IDENTITY) @GeneratedValue(strategy = GenerationType.IDENTITY)
...@@ -31,16 +34,19 @@ public class Postulante { ...@@ -31,16 +34,19 @@ public class Postulante {
@Column(name = "apellido") @Column(name = "apellido")
@NotBlank(message = "Este campo no puede estar vacio") @NotBlank(message = "Este campo no puede estar vacio")
@Size(max = 255) @Size(max = 255)
private String apellido; private String apellido;
@Column(name = "nro_document") @Column(name = "nro_document")
@NotBlank(message = "Este campo no puede estar vacio") @NotBlank(message = "Este campo no puede estar vacio")
@Size(max = 120) @Size(max = 120)
private String nroDocument; private String nroDocument;
@Column(name = "correo") @Column(name = "correo")
@NotBlank(message = "Este campo no puede estar vacio") @NotBlank(message = "Este campo no puede estar vacio")
@Email(message = "Formato incorrecto de correo") @Email(message = "Formato incorrecto de correo")
private String correo; private String correo;
@ManyToOne(targetEntity = Ciudad.class,fetch = FetchType.EAGER) @ManyToOne(targetEntity = Ciudad.class,fetch = FetchType.EAGER)
...@@ -119,175 +125,13 @@ public class Postulante { ...@@ -119,175 +125,13 @@ public class Postulante {
private DBFile cvFile; private DBFile cvFile;
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 getApellido() {
return apellido;
}
public void setApellido(String apellido) {
this.apellido = apellido;
}
public void setnroDocument(String nroDocument) {
this.nroDocument = nroDocument;
}
public String getCorreo() {
return correo;
}
public void setCorreo(String correo) {
this.correo = correo;
}
public String getTelefono() {
return telefono;
}
public void setTelefono(String telefono) {
this.telefono = telefono;
}
public Date getFechaNacimiento() {
return fechaNacimiento;
}
public void setFechaNacimiento(Date fechaNacimiento) {
this.fechaNacimiento = fechaNacimiento;
}
public void setFechaNacimiento(String fechaNacimiento) { public void setFechaNacimiento(String fechaNacimiento) {
this.fechaNacimiento = Helper.convertirFecha(fechaNacimiento); this.fechaNacimiento = Helper.convertirFecha(fechaNacimiento);
} }
public String getResumen() {
return resumen;
}
public void setResumen(String resumen) {
this.resumen = resumen;
}
public Long getNivelIngles() {
return nivelIngles;
}
public void setNivelIngles(Long nivelIngles) {
this.nivelIngles = nivelIngles;
}
public Disponibilidad getDisponibilidad() {
return disponibilidad;
}
public Ciudad getCiudad() {
return this.ciudad;
}
public void setCiudad(Ciudad ciudad) {
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(TipoDocumento tipoDocumento) {
this.tipoDocumento = tipoDocumento;
}
public EstadoCivil getEstadoCivil() {
return estadoCivil;
}
public TipoDocumento getTipoDocumento() {
return tipoDocumento;
}
public Nacionalidad getNacionalidad() {
return nacionalidad;
}
public void setNacionalidad(Nacionalidad nacionalidad) {
this.nacionalidad = nacionalidad;
}
public void setDisponibilidad(Disponibilidad disponibilidad) {
this.disponibilidad = disponibilidad;
}
public List<PostulanteTecnologia> getTecnologias() {
return tecnologias;
}
public void setTecnologias(List<PostulanteTecnologia> tecnologias) {
this.tecnologias = tecnologias;
}
public List<Estudio> getEstudios() {
return estudios;
}
public List<Experiencia> getExperiencias() {
return experiencias;
}
public void setEstudios(List<Estudio> estudios) {
this.estudios = estudios;
}
public void setExperiencias(List<Experiencia> 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;
}
public EstadoPostulante getEstadoPostulante() {
return this.estadoPostulante;
}
public void setEstadoPostulante(EstadoPostulante estadoPostulante) {
this.estadoPostulante = estadoPostulante;
}
public String getComentarioRRHH(){
return comentarioRRHH;
}
public void setComentarioRRHH(String comentarioRRHH){
this.comentarioRRHH=comentarioRRHH;
}
public DBFile getCvFile() {
return cvFile;
}
public String getNroDocument() {
return nroDocument;
}
public void setCvFile(DBFile cvFile) {
this.cvFile = cvFile;
}
} }
...@@ -15,7 +15,9 @@ import javax.validation.constraints.Min; ...@@ -15,7 +15,9 @@ import javax.validation.constraints.Min;
import com.fasterxml.jackson.annotation.JsonBackReference; import com.fasterxml.jackson.annotation.JsonBackReference;
@Entity
import lombok.Data;
@Entity @Data
@Table(name="postulante_tecnologia", @Table(name="postulante_tecnologia",
uniqueConstraints=@UniqueConstraint(columnNames={"postulante_id", "tecnologia_id"})) uniqueConstraints=@UniqueConstraint(columnNames={"postulante_id", "tecnologia_id"}))
...@@ -39,18 +41,6 @@ public class PostulanteTecnologia { ...@@ -39,18 +41,6 @@ public class PostulanteTecnologia {
@JsonBackReference(value = "postulantetecnologia-postulante") @JsonBackReference(value = "postulantetecnologia-postulante")
private Postulante postulante; private Postulante postulante;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public Long getNivel() {
return nivel;
}
public void setNivel(Long nivel) {
this.nivel = nivel;
}
public Tecnologia getTecnologia() { public Tecnologia getTecnologia() {
return tecnologia; return tecnologia;
} }
......
...@@ -2,7 +2,9 @@ package com.roshka.modelo; ...@@ -2,7 +2,9 @@ package com.roshka.modelo;
import javax.persistence.*; import javax.persistence.*;
@Entity import lombok.Data;
@Entity @Data
@Table(name = "recursos_humanos_user") @Table(name = "recursos_humanos_user")
public class RRHHUser { public class RRHHUser {
@Id @Id
...@@ -24,51 +26,5 @@ public class RRHHUser { ...@@ -24,51 +26,5 @@ public class RRHHUser {
@Column(name = "reset_password_token") @Column(name = "reset_password_token")
private String resetPasswordToken; private String resetPasswordToken;
public String getResetPasswordToken() {
return resetPasswordToken;
}
public void setResetPasswordToken(String resetPasswordToken) {
this.resetPasswordToken = resetPasswordToken;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
} }
...@@ -5,7 +5,9 @@ import javax.validation.constraints.NotBlank; ...@@ -5,7 +5,9 @@ import javax.validation.constraints.NotBlank;
import com.fasterxml.jackson.annotation.JsonBackReference; import com.fasterxml.jackson.annotation.JsonBackReference;
@Entity import lombok.Data;
@Entity @Data
@Table(name = "referencia_personal") @Table(name = "referencia_personal")
public class ReferenciaPersonal { public class ReferenciaPersonal {
@Id @Id
...@@ -29,42 +31,9 @@ public class ReferenciaPersonal { ...@@ -29,42 +31,9 @@ public class ReferenciaPersonal {
@JsonBackReference @JsonBackReference
private Postulante postulante; 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() { public Postulante getPostulante() {
return postulante; 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) { public void setPostulante(Postulante postulante) {
this.postulante = postulante; this.postulante = postulante;
} }
......
...@@ -8,8 +8,10 @@ import javax.persistence.Id; ...@@ -8,8 +8,10 @@ import javax.persistence.Id;
import javax.persistence.Table; import javax.persistence.Table;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
import lombok.Data;
@Entity
@Entity @Data
@Table(name="tecnologia") @Table(name="tecnologia")
public class Tecnologia { public class Tecnologia {
@GeneratedValue(strategy = GenerationType.IDENTITY) @GeneratedValue(strategy = GenerationType.IDENTITY)
...@@ -21,21 +23,4 @@ public class Tecnologia { ...@@ -21,21 +23,4 @@ public class Tecnologia {
@NotBlank(message = "Este campo no puede estar vacio") @NotBlank(message = "Este campo no puede estar vacio")
private String nombre; private String nombre;
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;
}
} }
[ [
{ {
"resumen": "In irure aliquip qui cillum veniam sint amet amet sint ex proident anim mollit.", "resumen": "In irure aliquip qui cillum veniam sint amet amet sint ex proident anim mollit.",
"nacionalidad": "Paraguayo", "nacionalidad": "Paraguaya",
"postulaciones": [{ "id": 1 }], "postulaciones": [{ "id": 1 }],
"estadoCivil": "Soltero", "estadoCivil": "Soltero",
"tipoDocumento": "CI", "tipoDocumento": "CI",
...@@ -60,7 +60,7 @@ ...@@ -60,7 +60,7 @@
}, },
{ {
"resumen": "Do nostrud aliqua adipisicing in sunt aute id do elit ut dolor ad aliquip.", "resumen": "Do nostrud aliqua adipisicing in sunt aute id do elit ut dolor ad aliquip.",
"nacionalidad": "Paraguayo", "nacionalidad": "Paraguaya",
"postulaciones": [{ "id": 1 }], "postulaciones": [{ "id": 1 }],
"estadoCivil": "Soltero", "estadoCivil": "Soltero",
"tipoDocumento": "CI", "tipoDocumento": "CI",
...@@ -107,7 +107,7 @@ ...@@ -107,7 +107,7 @@
}, },
{ {
"resumen": "Occaecat non cupidatat amet reprehenderit consectetur ullamco et.", "resumen": "Occaecat non cupidatat amet reprehenderit consectetur ullamco et.",
"nacionalidad": "Paraguayo", "nacionalidad": "Paraguaya",
"postulaciones": [{ "id": 1 }], "postulaciones": [{ "id": 1 }],
"estadoCivil": "Soltero", "estadoCivil": "Soltero",
"tipoDocumento": "CI", "tipoDocumento": "CI",
...@@ -154,7 +154,7 @@ ...@@ -154,7 +154,7 @@
}, },
{ {
"resumen": "Qui ullamco excepteur velit ad ullamco id id nisi irure dolore cupidatat mollit ullamco veniam.", "resumen": "Qui ullamco excepteur velit ad ullamco id id nisi irure dolore cupidatat mollit ullamco veniam.",
"nacionalidad": "Paraguayo", "nacionalidad": "Paraguaya",
"postulaciones": [{ "id": 1 }], "postulaciones": [{ "id": 1 }],
"estadoCivil": "Soltero", "estadoCivil": "Soltero",
"tipoDocumento": "CI", "tipoDocumento": "CI",
...@@ -201,7 +201,7 @@ ...@@ -201,7 +201,7 @@
}, },
{ {
"resumen": "Deserunt tempor ut et eiusmod et labore Lorem.", "resumen": "Deserunt tempor ut et eiusmod et labore Lorem.",
"nacionalidad": "Paraguayo", "nacionalidad": "Paraguaya",
"postulaciones": [{ "id": 1 }], "postulaciones": [{ "id": 1 }],
"estadoCivil": "Soltero", "estadoCivil": "Soltero",
"tipoDocumento": "CI", "tipoDocumento": "CI",
...@@ -248,7 +248,7 @@ ...@@ -248,7 +248,7 @@
}, },
{ {
"resumen": "Aliqua est adipisicing do exercitation sit laborum aliquip aliqua adipisicing enim aute.", "resumen": "Aliqua est adipisicing do exercitation sit laborum aliquip aliqua adipisicing enim aute.",
"nacionalidad": "Paraguayo", "nacionalidad": "Paraguaya",
"postulaciones": [{ "id": 1 }], "postulaciones": [{ "id": 1 }],
"estadoCivil": "Soltero", "estadoCivil": "Soltero",
"tipoDocumento": "CI", "tipoDocumento": "CI",
...@@ -295,7 +295,7 @@ ...@@ -295,7 +295,7 @@
}, },
{ {
"resumen": "Officia eiusmod ut reprehenderit tempor consequat elit amet ex voluptate aute anim do.", "resumen": "Officia eiusmod ut reprehenderit tempor consequat elit amet ex voluptate aute anim do.",
"nacionalidad": "Paraguayo", "nacionalidad": "Paraguaya",
"postulaciones": [{ "id": 1 }], "postulaciones": [{ "id": 1 }],
"estadoCivil": "Soltero", "estadoCivil": "Soltero",
"tipoDocumento": "CI", "tipoDocumento": "CI",
......
...@@ -13,7 +13,18 @@ const postulaciones = []; ...@@ -13,7 +13,18 @@ const postulaciones = [];
var cont_referencias=0 ; var cont_referencias=0 ;
const referencias= []; const referencias= [];
form = document.querySelector("form");
const depSelect = document.querySelector("#departamentos");
console.log("saddsa", bootstrap)
const modalCargo = bootstrap.Modal.getOrCreateInstance(document.getElementById('cargoForm'))
const modalExperiencia = bootstrap.Modal.getOrCreateInstance(document.getElementById('experienciaForm'))
const modalTecnologia = bootstrap.Modal.getOrCreateInstance(document.getElementById('tecnologiaForm'))
const modalEstudio = bootstrap.Modal.getOrCreateInstance(document.getElementById('estudioForm'))
const modalReferencia = bootstrap.Modal.getOrCreateInstance(document.getElementById('referenciaForm'))
//variable ciudades esta declarada en el jsp
/*-----------------Definicion de funciones de poblacion de elementos y validaciones----------------------------------------*/
const formValidator = function () { const formValidator = function () {
'use strict' 'use strict'
...@@ -37,114 +48,66 @@ const formValidator = function () { ...@@ -37,114 +48,66 @@ const formValidator = function () {
}, false) }, false)
}) })
} }
function carg(elemento) { function fechasMaxMin(){
var element = document.getElementById('descripcion'); var today = new Date();
if(elemento == "otro"){ var dd = today.getDate()-1;
element.style.display='block'; var mm = today.getMonth() + 1; //January is 0!
}else{ var yyyy = today.getFullYear();
element.style.display='none';
}
}
function agregarFieldExpierncia(event){
//recoger del form
const pairs = {};
const formexp = document.querySelector("[name=experiencia-form]");
formexp.classList.add('was-validated')
const formData = new FormData(formexp);
let error=validarfecha(formData.get("fechaDesde"), formData.get("fechaHasta"))
let appendTo = "Hasta";
if (error) {
if(error.includes("desde")) appendTo = "Desde";
formexp.querySelector(".errorfecha"+appendTo)
formexp['fecha'+appendTo].setCustomValidity(error)
document.querySelector(".errorfecha"+appendTo).innerHTML = error;
console.log(error);
if (dd < 10) {
dd = '0' + dd;
} }
else{
formexp.fechaDesde.setCustomValidity('') if (mm < 10) {
formexp.fechaHasta.setCustomValidity('') mm = '0' + mm;
} }
const reconocimientos = [{},{},{}]; today = yyyy + '-' + mm + '-' + dd;
let pos_rec;
let returnFlag = false;
let requiredValues = ["institucion", "cargo", "fechaDesde"]
formData.forEach((value, key)=>{ let fechaDesdeEstudio = document.querySelector("#fechaDesdeEstudio");
if(requiredValues.includes(key) let fechaDesdeExperiencia = document.querySelector("#fechaDesdeExperiencia");
&& value==="" && returnFlag == false){ let fechaHastaEstudio = document.querySelector("#fechaHastaEstudio");
console.log(key, value) let fechaHastaExperiencia = document.querySelector("#fechaHastaExperiencia");
returnFlag = true; let fechaNacimiento = document.querySelector("#fechaNacimiento");
} let fechas = [fechaDesdeEstudio,fechaDesdeExperiencia,fechaHastaEstudio,fechaHastaExperiencia,fechaNacimiento]
}); fechas.forEach(fch => fch.addEventListener('keydown',()=>false))//no dejar cargar manualmente fechas
if(returnFlag===true){ fechaDesdeEstudio.setAttribute("max", today);
let message = "Rellene " fechaDesdeExperiencia.setAttribute("max", today);
for(let i=0;i<requiredValues.length;i++){ fechaNacimiento.setAttribute("max", today);
message+=", "+requiredValues[i];
}
message += " como minimo."
alert(message);
return;
}
for (const [name, value] of formData){ fechaDesdeExperiencia.addEventListener("change", ()=>{
pos_rec = name.split("-");//rec-nombre-index fechaHastaExperiencia.setAttribute("min", fechaDesdeExperiencia.value)
if (pos_rec.length > 1) { })
reconocimientos[pos_rec[2]][pos_rec[1]] = value fechaDesdeEstudio.addEventListener("change", ()=>{
} fechaHastaEstudio.setAttribute("min", fechaDesdeEstudio.value)
else{ })
pairs[name] = value }
}
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)
} }
pairs["reconocimientos"] = reconocimientos.filter(rec => rec.nombre); ciudad.replaceChildren(frag);
experiencias[cont_experiencia] = pairs;
formexp.reset();
formexp.classList.remove('was-validated')
//imprimir lista actualizada
const div = document.querySelector("#experiencias")
const div1 = document.createElement('div');
let content='';
for (let index = 0; index < experiencias.length; index++) {
const exp = experiencias[index];
if(exp==null) continue;
content += `
<div class="col border border-3" id="exp-${index}">
<h4><center>Experiencia</center></h4>
<label><b>Institucion:</b> ${exp.institucion}</label><br>
<label><b>Fecha Inicio:</b> ${exp.fechaDesde}</label><br>
<label><b>Fecha Fin:</b> ${exp.fechaHasta}</label><br>
<label><b>Referencia:</b> ${exp.nombreReferencia}</label><br>
<label><b>Telefono de la referencia:</b> ${exp.telefonoReferencia}</label><br>
<label><b>Cargo:</b> ${exp.cargo}</label><br>
<label><b>Motivo de salida:</b> ${exp.motivoSalida}</label><br>
<button type="button" class="btn btn-primary" onclick="eliminarExperiencia(event)"> <span class="glyphicon glyphicon-trash"></span>Eliminar</button>
</div>
`
}
//content += "</ul>"
div.innerHTML = content
//div.innerHTML = '';
//div.appendChild(div1);
cont_experiencia++;
} }
function validarfecha(fechaDesde, fechaHasta){ function validarfecha(fechaDesde, fechaHasta){
let fechadehoy= new Date().toISOString().slice(0,10); let fechadehoy= new Date().toISOString().slice(0,10);
if(fechaDesde>fechadehoy ){ if(fechaDesde>fechadehoy ){
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 && fechaHasta>fechadehoy){
return "la fecha hasta no puede ser mayor a la fecha actual" ;
}
if(fechaHasta =! null && fechaDesde>fechaHasta){ if(fechaHasta =! null && 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";
...@@ -152,7 +115,7 @@ function validarfecha(fechaDesde, fechaHasta){ ...@@ -152,7 +115,7 @@ function validarfecha(fechaDesde, fechaHasta){
return false return false
} }
/*--------------------------------------------------------------------*/ /*-----------------Tecnologia----------------------------------------*/
function agregarFieldTecnologia(){ function agregarFieldTecnologia(){
//recoger del form //recoger del form
const pairs = {}; const pairs = {};
...@@ -201,11 +164,11 @@ function agregarFieldTecnologia(){ ...@@ -201,11 +164,11 @@ function agregarFieldTecnologia(){
const tecn = tecnologias[index]; const tecn = tecnologias[index];
if(tecn==null) continue; if(tecn==null) continue;
content1 += ` content1 += `
<div class="col border border-3" id="tecn-${index}"> <div class="col-auto" id="tecn-${index}">
<label>${tecn.tecnologia.nombre}</label><br> ${tecn.tecnologia.nombre} ( ${tecn.nivel} <i class="bi bi-star-fill"></i> ) &nbsp; <i class="bi bi-trash-fill" onclick="eliminarTecnologia(event)"></i>
<label><progress value="${tecn.nivel}" max="5"></progress></label> <br>
<button type="button" class="btn btn-primary" onclick="eliminarTecnologia(event)">Eliminar</button>
<br>
</div> </div>
` `
...@@ -216,147 +179,138 @@ function agregarFieldTecnologia(){ ...@@ -216,147 +179,138 @@ function agregarFieldTecnologia(){
//div.appendChild(div1); //div.appendChild(div1);
cont_tecnologia++; cont_tecnologia++;
document.querySelector("#no-valid-tecno").style.display = "none"; document.querySelector("#no-valid-tecno").style.display = "none";
modalTecnologia.hide()
} }
/*--------------------------------------------------------------------*/
function eliminarExperiencia(event) {
//eliminar del array
experiencias[event.target.parentElement.id.split("-")[1]]=null
//eliminar en html
event.target.parentElement.remove()
}
/*----------------------------------------------------------------- */
function eliminarTecnologia(event) { function eliminarTecnologia(event) {
//eliminar del array //eliminar del array
tecnologias[event.target.parentElement.id.split("-")[1]]=null tecnologias[event.target.parentElement.id.split("-")[1]]=null
//eliminar en html //eliminar en html
event.target.parentElement.remove() event.target.parentElement.remove()
} }
/*----------------------------------------------------------------- */
function serializeJSON (form) {
// Create a new FormData object
const formData = new FormData(form);
if(formData.get('fechaNacimiento')>=new Date().toISOString().slice(0,10)){ /*----------------Experiencia-----------------------------------------*/
form['fechaNacimiento'].setCustomValidity('Fecha de nacimiento debe ser menor que actual') function agregarFieldExpierncia(event){
noValidateFlag = true; //recoger del form
return; const pairs = {};
} const formexp = document.querySelector("[name=experiencia-form]");
else{ formexp.classList.add('was-validated')
form['fechaNacimiento'].setCustomValidity('') const formData = new FormData(formexp);
} let error=validarfecha(formData.get("fechaDesde"), formData.get("fechaHasta"))
let appendTo = "Hasta";
if (error) {
if(error.includes("desde")) appendTo = "Desde";
// Create an object to hold the name/value pairs
const pairs = {};
// Add each name/value pair to the object formexp['fecha'+appendTo].setCustomValidity(error)
for (const [name, value] of formData) { formexp.querySelector(".errorFecha"+appendTo).innerHTML = error;
pairs[name] = value console.log(error);
}
pairs["experiencias"] = experiencias.filter(exp => exp)//eliminacion de nulos
pairs["estudios"] = estudios.filter(est => est)//eliminacion de nulos
pairs["tecnologias"] = tecnologias.filter(tec => tec)//eliminacion de nulos
pairs["postulaciones"] = postulaciones.filter(car => car)//eliminacion de nulos
pairs["referencias"] = referencias.filter(tec => tec)
if(pairs["postulaciones"].length<1){
document.querySelector("#no-valid-cargo").style.display = "block";
noValidateFlag = true;
}else{
document.querySelector("#no-valid-cargo").style.display = "none";
}
console.log(pairs["tecnologias"])
if(pairs["tecnologias"].length<1){
document.querySelector("#no-valid-tecno").style.display = "block";
noValidateFlag = true;
}else{
document.querySelector("#no-valid-tecno").style.display = "none";
} }
if(noValidateFlag){ else{
return; formexp.fechaDesde.setCustomValidity('')
formexp.fechaHasta.setCustomValidity('')
} }
noValidateFlag = false
// Return the JSON string const reconocimientos = [{},{},{}];
return JSON.stringify(pairs, null, 2); let pos_rec;
} let returnFlag = false;
function obtenerCV(){ let requiredValues = ["institucion", "cargo", "fechaDesde"]
let input = document.querySelector('#cvFile')
return input.files[0];
} formData.forEach((value, key)=>{
if(requiredValues.includes(key)
&& value==="" && returnFlag == false){
console.log(key, value)
returnFlag = true;
}
});
async function postData(url = '', data = {}) { if(returnFlag===true){
var token = document.querySelector("meta[name='_csrf']").content; let message = "Rellene "
var headerxs = document.querySelector("meta[name='_csrf_header']").content; for(let i=0;i<requiredValues.length;i++){
// Default options are marked with * message+=", "+requiredValues[i];
let senddata = {
method: 'POST', // *GET, POST, PUT, DELETE, etc.
mode: 'cors', // no-cors, *cors, same-origin
cache: 'no-cache', // *default, no-cache, reload, force-cache, only-if-cached
credentials: 'same-origin', // include, *same-origin, omit
headers: {
//'Content-Type': undefined//'application/json',
// 'Content-Type': 'application/x-www-form-urlencoded',
},
redirect: 'follow', // manual, *follow, error
referrerPolicy: 'no-referrer', // no-referrer, *no-referrer-when-downgrade, origin, origin-when-cross-origin, same-origin, strict-origin, strict-origin-when-cross-origin, unsafe-url
body: data // body data type must match "Content-Type" header
} }
senddata["headers"][headerxs] = token; message += " como minimo."
let response = null //alert(message);
if(!noValidateFlag){ return;
response = await fetch(url, senddata);
} }
return response; // parses JSON response into native JavaScript objects
}
function formatearJsonWithFile(json, file){
formData = new FormData();
formData.append("file", file); for (const [name, value] of formData){
formData.append('postulante', new Blob([json], { pos_rec = name.split("-");//rec-nombre-index
type: "application/json" if (pos_rec.length > 1) {
})); reconocimientos[pos_rec[2]][pos_rec[1]] = value
return formData
}
formValidator()
form = document.querySelector("form");
form.addEventListener("submit",(evt)=>{
// if (!form.checkValidity()) {
// evt.preventDefault()
// evt.stopPropagation()
// }
// form.classList.add('was-validated')
evt.preventDefault();
let formSerialized = serializeJSON(form);
let fileCV = obtenerCV();
if(!noValidateFlag){
postData('work-with-us', formatearJsonWithFile(formSerialized,fileCV))
.then(response => {
if(response.status==200 || response.status==302){
location.replace(response.url);
}else{
console.log(response.text().then(value => console.log(value)))
} }
}); else{
pairs[name] = value
} }
noValidateFlag = false
} );
}
pairs["reconocimientos"] = reconocimientos.filter(rec => rec.nombre);
experiencias[cont_experiencia] = pairs;
formexp.reset();
formexp.classList.remove('was-validated')
//imprimir lista actualizada
const div = document.querySelector("#experiencias")
const div1 = document.createElement('div');
let content='';
for (let index = 0; index < experiencias.length; index++) {
const exp = experiencias[index];
if(exp==null) continue;
content += `
<div class="col border border-3" id="exp-${index}">
<center><h4>Experiencia <i class="bi bi-trash-fill" onclick="eliminarExperiencia(${index})"></i></h4></center>
<label><b>Institucion:</b> ${exp.institucion}</label><br>
<label><b>Fecha Inicio:</b> ${exp.fechaDesde}</label><br>
<label><b>Fecha Fin:</b> ${exp.fechaHasta}</label><br>
<label><b>Referencia:</b> ${exp.nombreReferencia}</label><br>
<label><b>Telefono de la referencia:</b> ${exp.telefonoReferencia}</label><br>
<label><b>Cargo:</b> ${exp.cargo}</label><br>
<label><b>Motivo de salida:</b> ${exp.motivoSalida}</label><br>
//Metodos para Estudios
</div>
`
}
//content += "</ul>"
div.innerHTML = content
//div.innerHTML = '';
//div.appendChild(div1);
cont_experiencia++;
modalExperiencia.hide()
}
function eliminarExperiencia(index) {
//eliminar del array
experiencias[index]=null
//eliminar en html
document.getElementById("exp-"+index).remove()
//event.target.parentElement.remove()
}
/*---------------Estudios---------------------------*/
function agregarFieldEstudio(){ function agregarFieldEstudio(){
//recoger del form //recoger del form
let 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);
formest.classList.add('was-validated')
let error=validarfecha(formData.get("fechaDesde"), formData.get("fechaHasta"))
let appendTo = "Hasta";
if (error) {
if(error.includes("desde")) appendTo = "Desde";
formest['fecha'+appendTo].setCustomValidity(error)
formest.querySelector(".errorFecha"+appendTo).innerHTML = error;
console.log(error);
}
else{
formest.fechaDesde.setCustomValidity('')
formest.fechaHasta.setCustomValidity('')
}
//Validacion //Validacion
let returnFlag = false; let returnFlag = false;
...@@ -377,7 +331,7 @@ function agregarFieldEstudio(){ ...@@ -377,7 +331,7 @@ function agregarFieldEstudio(){
message+=", "+requiredValues[i]; message+=", "+requiredValues[i];
} }
message += " como minimo." message += " como minimo."
alert(message); //alert(message);
return; return;
} }
...@@ -413,14 +367,14 @@ function agregarFieldEstudio(){ ...@@ -413,14 +367,14 @@ function agregarFieldEstudio(){
if(est==null) continue; if(est==null) continue;
content += ` content += `
<div class="col border border-3" id="est-${index}"> <div class="col border border-3" id="est-${index}">
<h4><center>Estudio</center></h4> <center><h4>Estudio <i class="bi bi-trash-fill" onclick="eliminarEstudio(${index})"></i></h4></center>
<label><b>Institucion:</b> ${est.institucion.nombre}</label><br> <label><b>Institucion:</b> ${est.institucion.nombre}</label><br>
<label><b>Tipo de estudio:</b> ${est.tipoDeEstudio}</label><br> <label><b>Tipo de estudio:</b> ${est.tipoDeEstudio}</label><br>
<label><b>Carrera:</b> ${est.temaDeEstudio}</label><br> <label><b>Carrera:</b> ${est.temaDeEstudio}</label><br>
<label><b>Fecha Inicio:</b> ${est.fechaDesde}</label><br> <label><b>Fecha Inicio:</b> ${est.fechaDesde}</label><br>
<label><b>Fecha Fin:</b> ${est.fechaHasta}</label><br> <label><b>Fecha Fin:</b> ${est.fechaHasta}</label><br>
<label><b>Estado:</b> ${est.estado}</label><br> <label><b>Estado:</b> ${est.estado}</label><br>
<button type="button" class="btn btn-primary" onclick="eliminarEstudio(event)">Eliminar</button>
</div> </div>
` `
...@@ -430,20 +384,17 @@ function agregarFieldEstudio(){ ...@@ -430,20 +384,17 @@ function agregarFieldEstudio(){
//div.innerHTML = ''; //div.innerHTML = '';
//div.appendChild(div1); //div.appendChild(div1);
cont_estudios++; cont_estudios++;
formest.classList.remove('was-validated')
modalEstudio.hide()
} }
function eliminarEstudio(index) {
function eliminarEstudio(event) {
//eliminar del array //eliminar del array
estudios[event.target.parentElement.id.split("-")[1]]=null estudios[index]=null
//eliminar en html //eliminar en html
event.target.parentElement.remove() document.getElementById("est-"+index).remove()
} }
/*--------------------------------------------------------------------*/ /*------------Cargos----------------------------------------*/
function agregarFieldCargo(){ function agregarFieldCargo(){
//recoger del form //recoger del form
const pairs = {}; const pairs = {};
...@@ -500,9 +451,9 @@ function agregarFieldCargo(){ ...@@ -500,9 +451,9 @@ function agregarFieldCargo(){
const car = postulaciones[index]; const car = postulaciones[index];
if(car==null) continue; if(car==null) continue;
content1 += ` content1 += `
<div class="col border border-3" id="car-${index}" style="text-transform: uppercase;"> <div class="col-auto" id="car-${index}" style="text-transform: uppercase;">
<label>${document.querySelector('[name=cargo-id] > option[value="'+car.id+'"]').innerHTML}</label><br> ${document.querySelector('[name=cargo-id] > option[value="'+car.id+'"]').innerHTML}<i class="bi bi-trash-fill" onclick="eliminarCargoPostulante(event)"></i>
<button type="button" class="btn btn-primary" onclick="eliminarCargoPostulante(event)">Eliminar</button><br>
</div> </div>
` `
...@@ -513,49 +464,21 @@ function agregarFieldCargo(){ ...@@ -513,49 +464,21 @@ function agregarFieldCargo(){
//div.appendChild(div1); //div.appendChild(div1);
cont_cargo++; cont_cargo++;
document.querySelector("#no-valid-cargo").style.display = "none"; document.querySelector("#no-valid-cargo").style.display = "none";
modalCargo.hide()
} }
/*---------------------------------------------------------------------------------------------------*/
function eliminarCargoPostulante(event) { function eliminarCargoPostulante(event) {
//eliminar del array //eliminar del array
postulaciones[event.target.parentElement.id.split("-")[1]]=null postulaciones[event.target.parentElement.id.split("-")[1]]=null
//eliminar en html //eliminar en html
event.target.parentElement.remove() event.target.parentElement.remove()
} }
/*--------------------------------------------------------------------*/
//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);
}
/*--------------Referencias----------------------------- */
function agregarFieldReferencia(event){ function agregarFieldReferencia(event){
//recoger del form //recoger del form
const pairs = {}; const pairs = {};
const formexp = document.querySelector("[name=referencia-form]"); const formexp = document.querySelector("[name=referencia-form]");
formexp.classList.add('was-validated')
const formData = new FormData(formexp); const formData = new FormData(formexp);
const referenciaPersonal = [{},{},{}]; const referenciaPersonal = [{},{},{}];
let pos_rec; let pos_rec;
...@@ -577,7 +500,7 @@ function agregarFieldReferencia(event){ ...@@ -577,7 +500,7 @@ function agregarFieldReferencia(event){
message+=", "+requiredValues[i]; message+=", "+requiredValues[i];
} }
message += " como minimo." message += " como minimo."
alert(message); //alert(message);
return; return;
} }
...@@ -602,12 +525,13 @@ function agregarFieldReferencia(event){ ...@@ -602,12 +525,13 @@ function agregarFieldReferencia(event){
const exp = referencias[index]; const exp = referencias[index];
if(exp==null) continue; if(exp==null) continue;
content += ` content += `
<div class="col border border-3" id="exp-${index}"> <div class="col border border-3" id="ref-${index}">
<h4><center>Referencia Personal</center></h4> <center><h4>Referencia Personal <i class="bi bi-trash-fill" onclick="eliminarReferencia(${index})"></i></h4></center>
<label><b>Nombre:</b> ${exp.nombre}</label><br> <label><b>Nombre:</b> ${exp.nombre}</label><br>
<label><b>Telefono:</b> ${exp.telefono}</label><br> <label><b>Telefono:</b> ${exp.telefono}</label><br>
<label><b>Relacion:</b> ${exp.relacion}</label><br> <label><b>Relacion:</b> ${exp.relacion}</label><br>
<button type="button" class="btn btn-primary" onclick="eliminarReferencia(event)"> <span class="glyphicon glyphicon-trash"></span>Eliminar</button>
</div> </div>
` `
...@@ -617,71 +541,147 @@ function agregarFieldReferencia(event){ ...@@ -617,71 +541,147 @@ function agregarFieldReferencia(event){
//div.innerHTML = ''; //div.innerHTML = '';
//div.appendChild(div1); //div.appendChild(div1);
cont_referencias++; cont_referencias++;
formexp.classList.remove('was-validated')
modalReferencia.hide()
} }
function eliminarReferencia(index) {
/*----------------------------------------------------------------- */
function eliminarReferencia(event) {
//eliminar del array //eliminar del array
referencias[event.target.parentElement.id.split("-")[1]]=null referencias[index]=null
//eliminar en html //eliminar en html
event.target.parentElement.remove() document.getElementById("ref-"+index).remove()
}
/*--------------Form submit----------------------------- */
function serializeJSON (form) {
// Create a new FormData object
const formData = new FormData(form);
if(formData.get('fechaNacimiento')>=new Date().toISOString().slice(0,10)){
form['fechaNacimiento'].setCustomValidity('Fecha de nacimiento debe ser menor que actual')
noValidateFlag = true;
return;
}
else{
form['fechaNacimiento'].setCustomValidity('')
}
// Create an object to hold the name/value pairs
const pairs = {};
// Add each name/value pair to the object
for (const [name, value] of formData) {
pairs[name] = value
}
pairs["experiencias"] = experiencias.filter(exp => exp)//eliminacion de nulos
pairs["estudios"] = estudios.filter(est => est)//eliminacion de nulos
pairs["tecnologias"] = tecnologias.filter(tec => tec)//eliminacion de nulos
pairs["postulaciones"] = postulaciones.filter(car => car)//eliminacion de nulos
pairs["referencias"] = referencias.filter(tec => tec)
if(pairs["postulaciones"].length<1){
document.querySelector("#no-valid-cargo").style.display = "block";
noValidateFlag = true;
}else{
document.querySelector("#no-valid-cargo").style.display = "none";
}
console.log(pairs["tecnologias"])
if(pairs["tecnologias"].length<1){
document.querySelector("#no-valid-tecno").style.display = "block";
noValidateFlag = true;
}else{
document.querySelector("#no-valid-tecno").style.display = "none";
}
if(noValidateFlag){
return;
}
noValidateFlag = false
// Return the JSON string
return JSON.stringify(pairs, null, 2);
}
function obtenerCV(){
let input = document.querySelector('#cvFile')
return input.files[0];
} }
/*----------------------------------------------------------------- */
async function postData(url = '', data = {}) {
var token = document.querySelector("meta[name='_csrf']").content;
var headerxs = document.querySelector("meta[name='_csrf_header']").content;
/*--------------------------------------------------------------------------------------------------------- */ // Default options are marked with *
// $(function(){ let senddata = {
// $("#wizard").steps({ method: 'POST', // *GET, POST, PUT, DELETE, etc.
// headerTag: "h4", mode: 'cors', // no-cors, *cors, same-origin
// bodyTag: "section", cache: 'no-cache', // *default, no-cache, reload, force-cache, only-if-cached
// transitionEffect: "fade", credentials: 'same-origin', // include, *same-origin, omit
// enableAllSteps: true, headers: {
// transitionEffectSpeed: 500, //'Content-Type': undefined//'application/json',
// onStepChanging: function (event, currentIndex, newIndex) { // 'Content-Type': 'application/x-www-form-urlencoded',
// if ( newIndex === 1 ) { },
// $('.steps ul').addClass('step-2'); redirect: 'follow', // manual, *follow, error
// } else { referrerPolicy: 'no-referrer', // no-referrer, *no-referrer-when-downgrade, origin, origin-when-cross-origin, same-origin, strict-origin, strict-origin-when-cross-origin, unsafe-url
// $('.steps ul').removeClass('step-2'); body: data // body data type must match "Content-Type" header
// } }
// if ( newIndex === 2 ) { senddata["headers"][headerxs] = token;
// $('.steps ul').addClass('step-3'); let response = null
// } else { if(!noValidateFlag){
// $('.steps ul').removeClass('step-3'); response = await fetch(url, senddata);
// } }
// return response; // parses JSON response into native JavaScript objects
// if ( newIndex === 3 ) { }
// $('.steps ul').addClass('step-4');
// $('.actions ul').addClass('step-last'); function formatearJsonWithFile(json, file){
// } else { formData = new FormData();
// $('.steps ul').removeClass('step-4');
// $('.actions ul').removeClass('step-last'); formData.append("file", file);
// } formData.append('postulante', new Blob([json], {
// return true; type: "application/json"
// }, }));
// labels: { return formData
// finish: "Order again", }
// next: "Next",
// previous: "Previous" /*--------------Llamar funciones y agregar listeners----------------------------- */
// } formValidator();
// }); fechasMaxMin();
// // Custom Steps Jquery Steps listarCiudades(depSelect.value);
// $('.wizard > .steps li a').click(function(){
// $(this).parent().addClass('checked'); form.addEventListener("submit",(evt)=>{
// $(this).parent().prevAll().addClass('checked'); // if (!form.checkValidity()) {
// $(this).parent().nextAll().removeClass('checked'); // evt.preventDefault()
// }); // evt.stopPropagation()
// // Custom Button Jquery Steps // }
// $('.forward').click(function(){ // form.classList.add('was-validated')
// $("#wizard").steps('next'); evt.preventDefault();
// }) let formSerialized = serializeJSON(form);
// $('.backward').click(function(){ let fileCV = obtenerCV();
// $("#wizard").steps('previous'); if(!noValidateFlag){
// }) postData('work-with-us', formatearJsonWithFile(formSerialized,fileCV))
// // Checkbox .then(response => {
// $('.checkbox-circle label').click(function(){ if(response.status==200 || response.status==302){
// $('.checkbox-circle label').removeClass('active'); location.replace(response.url);
// $(this).addClass('active'); }else{
// })
// }) errorDispatcher(response.text().then(value => console.log(value)));
/*--------------------------------------------------------------------------------------------------------- */
\ No newline at end of file }
},(reason)=>{
errorDispatcher(reason);
});
}
noValidateFlag = false
} );
function errorDispatcher(reason){
const errorSection = document.querySelector("#errorSection")
errorSection.innerHTML = `
<div class="alert alert-warning alert-dismissible fade show " role="alert">
<strong>Ha ocurrido un error</strong>
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
</div>`;
console.log(reason)
errorSection.focus()
}
//evento para cambio de ciudad segun departamento
depSelect.addEventListener("change",evt => listarCiudades(evt.target.value))
//Convertir DOB to Age
window.onload= init;
function init(){
contarEdad();
//fechaFormat();
}
function contarEdad() {
let today = new Date();
let dob = document.getElementById("dob").value;
let current_datetime = new Date(dob);
let month = current_datetime.getMonth();
let day = current_datetime.getDate();
let formatted_date = current_datetime.getDate() + "/" + (current_datetime.getMonth() + 1) + "/" + current_datetime.getFullYear();
//console.log(formatted_date); ver Fecha del form en formato dd/mm/yyy
let date2=new Date(dob);
let pattern = /^\d{1,2}\/\d{1,2}\/\d{4}$/; //Regex to validate date format (dd/mm/yyyy)
let age = today.getFullYear() - current_datetime.getFullYear();
if (pattern.test(formatted_date)) {
if (today.getMonth() < month || (today.getMonth() == month && today.getDate() < day))
{
age--;
}
// console.log(age); ver edad
let anio = document.getElementById("edad").innerHTML=age+" años";
} else {
alert("Invalid date format. Please Input in (dd/mm/yyyy) format!");
}
/*
function fechaFormat(){
//EXPERIENCIA
let fechaInicioExp = document.getElementById("fechaInicioExp2").value;
let fie =new Date(fechaInicioExp);
// let formatted_fie = fie.getDate() + "/" + (fie.getMonth() + 1) + "/" + fie.getFullYear();
let fechaFinExp = document.getElementById("fechaFinExp2").value;
let ffe =new Date(fechaFinExp);
// let formatted_ffe = ffe.getDate() + "/" + (ffe.getMonth() + 1) + "/" + ffe.getFullYear();
// Validacion de ceros Fecha inicio
if(((fie.getMonth() + 1) < 10) && (fie.getDate() < 10) ){
let formatted_fie = "0"+ fie.getDate() + "/0" + (fie.getMonth() + 1) + "/" + fie.getFullYear();
let mostrar1 = document.getElementById("fiemostrar").innerHTML = formatted_fie;
console.log(mostrar1);
}else{
if((fie.getMonth() + 1) < 10){
let formatted_fie = fie.getDate() + "/0" + (fie.getMonth() + 1) + "/" + fie.getFullYear();
mostrar1 = document.getElementById("fiemostrar").innerHTML = formatted_fie;
console.log(mostrar1);
}else{
if(fie.getDate() < 10){
let formatted_fie ="0"+ fie.getDate() + "/" + (fie.getMonth() + 1) + "/" + fie.getFullYear();
mostrar1 = document.getElementById("fiemostrar").innerHTML = formatted_fie;
console.log(mostrar1);
}else{
let formatted_fie = fie.getDate() + "/" + (fie.getMonth() + 1) + "/" + fie.getFullYear();
mostrar1 = document.getElementById("fiemostrar2").innerHTML = formatted_fie;
console.log(mostrar1);
}
}
}
// Validacion de ceros Fecha fin
if(((ffe.getMonth() + 1) < 10) && (ffe.getDate() < 10) ){
let formatted_ffe = "0"+ ffe.getDate() + "/0" + (ffe.getMonth() + 1) + "/" + ffe.getFullYear();
let mostrar2 = document.getElementById("ffemostrar").innerHTML = formatted_ffe;
console.log(mostrar2);
}else{
if((ffe.getMonth() + 1) < 10){
let formatted_ffe = ffe.getDate() + "/0" + (ffe.getMonth() + 1) + "/" + ffe.getFullYear();
mostrar2 = document.getElementById("ffemostrar").innerHTML = formatted_ffe;
console.log(mostrar2);
}else{
if(ffe.getDate() < 10){
let formatted_ffe ="0"+ ffe.getDate() + "/" + (ffe.getMonth() + 1) + "/" + ffe.getFullYear();
mostrar2 = document.getElementById("ffemostrar").innerHTML = formatted_ffe;
console.log(mostrar2);
}else{
let formatted_ffe = ffe.getDate() + "/" + (ffe.getMonth() + 1) + "/" + ffe.getFullYear();
mostrar2 = document.getElementById("ffemostrar").innerHTML = formatted_ffe;
console.log(mostrar2);
}
}
}
//ESTUDIOS//////////
let fechaInicioEst = document.getElementById("fechaInicioEst").value;
let fies =new Date(fechaInicioEst);
let formatted_fies = fies.getDate() + "/" + (fies.getMonth() + 1) + "/" + fies.getFullYear();
let fechaFinEst = document.getElementById("fechaFinEst").value;
let ffes =new Date(fechaFinEst);
let formatted_ffes = ffes.getDate() + "/" + (ffes.getMonth() + 1) + "/" + ffes.getFullYear();
// Validacion de ceros Fecha fin
if(((ffes.getMonth() + 1) < 10) && (ffes.getDate() < 10) ){
let formatted_ffes = "0"+ ffes.getDate() + "/0" + (ffes.getMonth() + 1) + "/" + ffes.getFullYear();
let mostrar3 = document.getElementById("ffesmostrar").innerHTML = formatted_ffes;
}else{
if((ffes.getMonth() + 1) < 10){
let formatted_ffes = ffes.getDate() + "/0" + (ffes.getMonth() + 1) + "/" + ffes.getFullYear();
mostrar3 = document.getElementById("ffesmostrar").innerHTML = formatted_ffes;
}else{
if(ffes.getDate() < 10){
let formatted_ffes ="0"+ ffes.getDate() + "/" + (ffes.getMonth() + 1) + "/" + ffes.getFullYear();
mostrar3 = document.getElementById("ffesmostrar").innerHTML = formatted_ffes;
}else{
let formatted_ffes = ffes.getDate() + "/" + (ffes.getMonth() + 1) + "/" + ffes.getFullYear();
mostrar3 = document.getElementById("ffesmostrar").innerHTML = formatted_ffes;
}
}
}
// Validacion de ceros Fecha inicio
if(((fies.getMonth() + 1) < 10) && (fies.getDate() < 10) ){
let formatted_fies = "0"+ fies.getDate() + "/0" + (fies.getMonth() + 1) + "/" + fies.getFullYear();
let mostrar4 = document.getElementById("fiesmostrar").innerHTML = formatted_fies;
}else{
if((fies.getMonth() + 1) < 10){
let formatted_fies = fies.getDate() + "/0" + (fies.getMonth() + 1) + "/" + fies.getFullYear();
mostrar4 = document.getElementById("fiesmostrar").innerHTML = formatted_fies;
}else{
if(fies.getDate() < 10){
let formatted_fies ="0"+ fies.getDate() + "/" + (fies.getMonth() + 1) + "/" + fies.getFullYear();
mostrar4 = document.getElementById("fiesmostrar").innerHTML = formatted_fies;
}else{
let formatted_fies = fies.getDate() + "/" + (fies.getMonth() + 1) + "/" + fies.getFullYear();
mostrar4 = document.getElementById("fiesmostrar").innerHTML = formatted_fies;
}
}
}
}*/
}
\ No newline at end of file
...@@ -2,6 +2,8 @@ ...@@ -2,6 +2,8 @@
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib uri="http://kwonnam.pe.kr/jsp/template-inheritance" prefix="layout"%> <%@ taglib uri="http://kwonnam.pe.kr/jsp/template-inheritance" prefix="layout"%>
<%@ 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="contents" type="REPLACE"> <layout:put block="contents" type="REPLACE">
<h2 style="text-align: center;"> <h2 style="text-align: center;">
...@@ -58,11 +60,10 @@ ...@@ -58,11 +60,10 @@
<hr> <hr>
<div class="row"> <div class="row">
<div class="col-sm-3"> <div class="col-sm-3">
<h6 class="mb-0">Fecha de nacimiento</h6> <h6 class="mb-0">Edad</h6>
</div>
<div class="col-sm-9 text-secondary">
${postulante.fechaNacimiento}
</div> </div>
<div id="edad" class="col-sm-9 text-secondary"></div>
<input style="display: none;" id="dob" value="${postulante.fechaNacimiento}">
</div> </div>
<hr> <hr>
<div class="row"> <div class="row">
...@@ -194,11 +195,16 @@ ...@@ -194,11 +195,16 @@
</li> </li>
<li class="list-group-item d-flex justify-content-between align-items-center flex-wrap"> <li class="list-group-item d-flex justify-content-between align-items-center flex-wrap">
<h6 class="mb-0">Fecha Inicio</h6> <h6 class="mb-0">Fecha Inicio</h6>
<span class="text-secondary">${detalle_experiencia.getFechaDesde()}</span> <span class="text-secondary"><fmt:formatDate value="${detalle_experiencia.getFechaDesde()}" pattern="dd-MM-yyyy" /></span>
<!-- <input style="display:none;" id="fechaInicioExp" value="${detalle_experiencia.getFechaDesde()}">
<span style="display: none;" class="text-secondary" id="fechaInicioExp2">${detalle_experiencia.getFechaDesde()}</span>-->
</li> </li>
<li class="list-group-item d-flex justify-content-between align-items-center flex-wrap"> <li class="list-group-item d-flex justify-content-between align-items-center flex-wrap">
<h6 class="mb-0">Fecha Fin</h6> <h6 class="mb-0">Fecha Fin</h6>
<span class="text-secondary">${detalle_experiencia.getFechaHasta()}</span> <span class="text-secondary"><fmt:formatDate value="${detalle_experiencia.getFechaHasta()}" pattern="dd-MM-yyyy" /></span>
<!-- <input style="display:none;" id="fechaFinExp" value="${detalle_experiencia.getFechaHasta()}">
<span style="display: none;" class="text-secondary" id="fechaFinExp2">${detalle_experiencia.getFechaHasta()}</span>-->
</li> </li>
<li class="list-group-item d-flex justify-content-between align-items-center flex-wrap"> <li class="list-group-item d-flex justify-content-between align-items-center flex-wrap">
<h6 class="mb-0">Referencia</h6> <h6 class="mb-0">Referencia</h6>
...@@ -256,11 +262,16 @@ ...@@ -256,11 +262,16 @@
</li> </li>
<li class="list-group-item d-flex justify-content-between align-items-center flex-wrap"> <li class="list-group-item d-flex justify-content-between align-items-center flex-wrap">
<h6 class="mb-0">Fecha Inicio</h6> <h6 class="mb-0">Fecha Inicio</h6>
<span class="text-secondary">${detalle_estudios.getFechaDesde()}</span> <span class="text-secondary"><fmt:formatDate value="${detalle_estudios.getFechaDesde()}" pattern="dd-MM-yyyy" /></span>
<!-- <input style="display:none;" id="fechaInicioEst" value="${detalle_estudios.getFechaDesde()}">-->
</li> </li>
<li class="list-group-item d-flex justify-content-between align-items-center flex-wrap"> <li class="list-group-item d-flex justify-content-between align-items-center flex-wrap">
<h6 class="mb-0">Fecha Fin</h6> <h6 class="mb-0">Fecha Fin</h6>
<span class="text-secondary">${detalle_estudios.getFechaHasta()}</span> <span class="text-secondary"><fmt:formatDate value="${detalle_estudios.getFechaHasta()}" pattern="dd-MM-yyyy" /></span>
<!-- <input style="display:none;" id="fechaFinEst" value="${detalle_estudios.getFechaHasta()}">-->
</li> </li>
<li class="list-group-item d-flex justify-content-between align-items-center flex-wrap"> <li class="list-group-item d-flex justify-content-between align-items-center flex-wrap">
<h6 class="mb-0">Tipo de Estudio</h6> <h6 class="mb-0">Tipo de Estudio</h6>
...@@ -364,6 +375,8 @@ ...@@ -364,6 +375,8 @@
<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 src="../valEdad.js"></script>
</layout:put> </layout:put>
......
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<html>
<head>
</head>
<body>
<div>
${postulante.id}<br>
${postulante.nombre}<br>
${postulante.apellido}<br>
${postulante.ci}<br>
${postulante.correo}<br>
${postulante.ciudadId}<br>
${postulante.telefono}<br>
${postulante.fechaNacimiento}<br>
${postulante.resumen}<br>
${postulante.nivelIngles}<br>
${postulante.curriculum}<br>
${postulante.estadoCivil}<br>
${postulante.nacionalidad}<br>
${postulante.tipoDocumento}<br>
${postulante.disponibilidad}<br><br><br>
${postulante.getCiudad().getNombre()}<br>
<c:forEach items="${postulante.tecnologias}" var="detalle_tecnologia" >
${detalle_tecnologia.getTecnologia().getNombre()}
</c:forEach>
</div>
</body>
</html>
\ No newline at end of file
...@@ -12,49 +12,42 @@ ...@@ -12,49 +12,42 @@
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous"> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous">
<title>Curriculum</title> <title>Curriculum</title>
<link href="../css/formPostulanteStyle.css" rel="stylesheet" type="text/css"/> <link href="../css/formPostulanteStyle.css" rel="stylesheet" type="text/css"/>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.7.1/font/bootstrap-icons.css">
</head> </head>
<body class="container"> <body class="container">
<div class="row">
<div id="errorSection" class="col" tabindex="-1">
</div>
</div>
<form name="postulante" method="post" class="needs-validation" novalidate> <form name="postulante" method="post" class="needs-validation" novalidate>
<div class="container mt-3"> <div class="container mt-3">
<div class="card p-3 text-center"> <div class="card p-3 text-center">
<div class="d-flex flex-row justify-content-center mb-3"> <div class="d-flex flex-row justify-content-center mb-3">
</div> </div>
<h4>Curriculum</h4> <h4>Datos Personales</h4>
<div class="row"> <div class="row">
<div class="about-inputs mb-3 col-md-12 center">
<label for="resumen" class="form-label">Resumen</label>
<textarea class="form-control center " name="resumen" id="resumen" required > </textarea>
<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="nombre" class="form-label">Nombre</label> <label for="nombre" class="form-label">Nombre</label>
<input type="text" name="nombre" class="form-control " id="nombre" required> <input type="text" name="nombre" class="form-control " id="nombre" required>
<div class="valid-feedback">
Luce Bien!
</div>
</div> </div>
<div class="inputs mb-3 col-md-6"> <div class="inputs mb-3 col-md-6">
<label for="apellido" class="form-label">Apellido</label> <label for="apellido" class="form-label">Apellido</label>
<input type="text" name="apellido" class="form-control " id="apellido" required> <input type="text" name="apellido" class="form-control " id="apellido" required>
<div class="valid-feedback">
Luce Bien!
</div>
</div> </div>
<div class="inputs mb-3 col-md-6"> <div class="inputs mb-3 col-md-6">
<label for="correo" class="form-label">Email address</label> <label for="correo" class="form-label">Email</label>
<input type="email" name="correo" class="form-control " id="correo" required> <input type="email" name="correo" class="form-control " id="correo" required>
<div class="valid-feedback">
Luce Bien!
</div>
</div> </div>
<div class="inputs mb-3 col-md-6"> <div class="inputs mb-3 col-md-6">
...@@ -68,7 +61,7 @@ ...@@ -68,7 +61,7 @@
<div class="inputs mb-3 col-md-6"> <div class="inputs mb-3 col-md-6">
<label for="tipoDocumento" class="form-label"> Tipo de documento</label> <label for="tipoDocumento" class="form-label"> Tipo de documento</label>
<select name="tipoDocumento" id="tipoDocumento" class="bg-light" required onchange='carg(this.value);'> <select name="tipoDocumento" id="tipoDocumento" class="bg-light" required>
<option value='CI' selected>C.I</option> <option value='CI' selected>C.I</option>
<option value='PAS'>Pasport</option> <option value='PAS'>Pasport</option>
<option value='Otro'>Otro</option> <option value='Otro'>Otro</option>
...@@ -78,9 +71,7 @@ ...@@ -78,9 +71,7 @@
<div class="inputs mb-3 col-md-6"> <div class="inputs mb-3 col-md-6">
<label for="nroDocument" class="form-label">Numero de Documento</label> <label for="nroDocument" class="form-label">Numero de Documento</label>
<input type="number" name="nroDocument" class="form-control " id="nroDocument" required> <input type="number" name="nroDocument" class="form-control " id="nroDocument" required>
<div class="valid-feedback">
Luce Bien!
</div>
</div> </div>
<div class="inputs mb-3 col-md-6"> <div class="inputs mb-3 col-md-6">
...@@ -103,21 +94,24 @@ ...@@ -103,21 +94,24 @@
<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>
<div class="valid-feedback">
Luce Bien!
</div>
</div> </div>
<div class="inputs mb-3 col-md-6"> <div class="inputs mb-3 col-md-6">
<label for="fechaNacimiento" class="form-label">Fecha de nacimiento</label> <label for="fechaNacimiento" class="form-label">Fecha de nacimiento</label>
<input type="date" name="fechaNacimiento" class="form-control " id="fechaNacimiento" required> <input type="date" name="fechaNacimiento" class="form-control " id="fechaNacimiento" required>
<div class="valid-feedback">
Luce Bien!
</div> </div>
<div class="about-inputs mb-3 col-md-12 center">
<label for="resumen" class="form-label">Resumen</label>
<textarea class="form-control center " name="resumen" id="resumen" required > </textarea>
</div> </div>
<div class="inputs mb-3 col-md-4"> <label for="nivelIngles" class="form-label"> Nivel de ingles</label> <div class="inputs mb-3 col-md-3"> <label for="nivelIngles" class="form-label"> Nivel de ingles</label>
<select name="nivelIngles" id="nivelIngles" class="content-select"> <select name="nivelIngles" id="nivelIngles" class="content-select">
<option value="1" selected>Ingles muy basico</option> <option value="1" selected>Ingles muy basico</option>
<option value="2" >Comprendo algunas cosas y puedo leer con la ayuda del traductor</option> <option value="2" >Comprendo algunas cosas y puedo leer con la ayuda del traductor</option>
...@@ -127,7 +121,7 @@ ...@@ -127,7 +121,7 @@
</select> </select>
</div> </div>
<div class="inputs mb-3 col-md-4"> <div class="inputs mb-3 col-md-3">
<label for="disponibilidad" class="form-label"> Disponibilidad</label> <label for="disponibilidad" class="form-label"> Disponibilidad</label>
<select name="disponibilidad" id="disponibilidad" class="content-select"> <select name="disponibilidad" id="disponibilidad" class="content-select">
<c:forEach items="${disponibilidades}" var="disponibilidad"> <c:forEach items="${disponibilidades}" var="disponibilidad">
...@@ -136,7 +130,7 @@ ...@@ -136,7 +130,7 @@
</select> </div> </select> </div>
<div class="inputs mb-3 col-md-4"> <div class="inputs mb-3 col-md-3">
<label for="estadoCivil" class="form-label"> Estado Civil</label> <label for="estadoCivil" class="form-label"> Estado Civil</label>
<select name="estadoCivil" id="estadoCivil" class="content-select"> <select name="estadoCivil" id="estadoCivil" class="content-select">
<c:forEach items="${estadosCiviles}" var="estadoCivil"> <c:forEach items="${estadosCiviles}" var="estadoCivil">
...@@ -144,43 +138,119 @@ ...@@ -144,43 +138,119 @@
</c:forEach> </c:forEach>
</select> </select>
</div> </div>
<div class="inputs mb-3 col-md-4"> <div class="inputs mb-3 col-md-3">
<label for="formFile" class="form-label">Cargar cv</label> <label for="formFile" class="form-label">Cargar cv</label>
<input class="form-control" type="file" id="cvFile"> <input class="form-control" type="file" id="cvFile">
</div> </div>
<!-- Button Agregar Cargo al que postulas --> <!-- Button Agregar Cargo al que postulas -->
<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#cargoForm"><span class="add-experience"><i class="fa fa-plus"></i>&nbsp;Agregar Cargo al que postulas</span></button><br> <div class="inputs mb-3 col-md-12">
<div class="row w-100 p-3 gy-2 border mx-auto">
<div class="col-12">
<h3>Cargos <i class="bi bi-plus-circle-fill" data-bs-toggle="modal" data-bs-target="#cargoForm"></i></h3>
</div>
<div class="col-12">
<div class="mt-3 gap-2 row row-cols-4" style="display: flex;" id="cargos">
</div>
</div>
<div class="col-12">
<p id="no-valid-cargo" style="display: none; color: darkred; border: solid 1px darkred; border-radius: 25px; width: 75%" class="m-3"> <p id="no-valid-cargo" style="display: none; color: darkred; border: solid 1px darkred; border-radius: 25px; width: 75%" class="m-3">
*Agrega por lo menos un cargo *Agrega por lo menos un cargo
</p> </p>
<div class="mt-3 gap-2 row row-cols-4" style="display: flex;" id="cargos"></div> </div>
</div>
</div>
<!-- Button Agregar Experiencia --> <!-- Button Agregar Experiencia -->
<button type="button" class="btn btn-primary"><span class="add-experience" data-toggle="modal" data-target="#experienciaForm"><i class="fa fa-plus"></i>&nbsp;Agregar Experiencia</span></button><br> <div class="inputs mb-3 col-md-12">
<div class="mt-3 gap-2 row row-cols-4" id="experiencias"></div>
<div class="row w-100 p-3 gy-2 border mx-auto">
<div class="col-12">
<h3>Experiencias <i class="bi bi-plus-circle-fill" data-bs-toggle="modal" data-bs-target="#experienciaForm"></i></h3>
</div>
<div class="col-12">
<div class="mt-3 gap-2 row row-cols-4" id="experiencias">
</div>
</div>
</div>
</div>
<!-- Button Agregar Estudio --> <!-- Button Agregar Estudio -->
<button type="button" class="btn btn-primary"><span class="add-experience" data-toggle="modal" data-target="#estudioForm"><i class="fa fa-plus"></i>&nbsp;Agregar Estudio</span></button><br> <div class="inputs mb-3 col-md-12">
<div class="mt-3 gap-2 row row-cols-4" id="estudios"></div>
<div class="row w-100 p-3 gy-2 border mx-auto">
<div class="col-12">
<h3>Estudios <i class="bi bi-plus-circle-fill" data-bs-toggle="modal" data-bs-target="#estudioForm"></i></h3>
</div>
<div class="col-12">
<div class="mt-3 gap-2 row row-cols-4" id="estudios">
</div>
</div>
</div>
</div>
<!-- Button Agregar Tecnologia --> <!-- Button Agregar Tecnologia -->
<button type="button" class="btn btn-primary"><span class="add-experience" data-toggle="modal" data-target="#tecnologiaForm"><i class="fa fa-plus"></i>&nbsp;Agregar Tecnologia</span></button><br> <div class="inputs mb-3 col-md-12">
<div class="row w-100 p-3 gy-2 border mx-auto">
<div class="col-12">
<h3>Tecnologias <i class="bi bi-plus-circle-fill" data-bs-toggle="modal" data-bs-target="#tecnologiaForm"></i></h3>
</div>
<div class="col-12">
<div class="mt-3 gap-2 row row-cols-5" style="display: flex;" id="tecnologias">
</div>
</div>
<div class="col-12">
<p id="no-valid-tecno" style="display: none; color: darkred; border: solid 1px darkred; border-radius: 25px; width: 75%" class="m-3"> <p id="no-valid-tecno" style="display: none; color: darkred; border: solid 1px darkred; border-radius: 25px; width: 75%" class="m-3">
*Agrega por lo menos una tecnologia *Agrega por lo menos una tecnologia
</p> </p>
<div class="mt-3 gap-2 row row-cols-5" style="display: flex;" id="tecnologias">
</div> </div>
</div>
</div>
<!-- Button Agregar Refencia personal --> <!-- Button Agregar Refencia personal -->
<button type="button" class="btn btn-primary"><span class="add-experience" data-toggle="modal" data-target="#referenciaForm"><i class="fa fa-plus"></i>&nbsp;Agregar Referencia Personal</span></button><br> <div class="inputs mb-3 col-md-12">
<div class="mt-3 gap-2 row row-cols-4" id="referencia"></div>
<div class="row w-100 p-3 gy-2 border mx-auto">
<div class="col-12">
<h3>Referencia Personal <i class="bi bi-plus-circle-fill" data-bs-toggle="modal" data-bs-target="#referenciaForm"></i></h3>
</div>
<div class="col-12">
<div class="mt-3 gap-2 row row-cols-4" id="referencia">
</div>
</div>
</div>
</div>
<div class="mt-3 gap-2 d-flex justify-content-end"> <div class="mt-3 gap-2 d-flex justify-content-end">
<a class="px-3 btn btn-sm btn-outline-primary" href="/postulante">Cancelar</a> <a class="px-3 btn btn-sm btn-outline-primary" href="/work-with-us">Cancelar</a>
<button class="px-3 btn btn-sm btn-primary" type="submit">Guardar</button> <button class="px-3 btn btn-sm btn-primary" type="submit">Guardar</button>
</div> </div>
</div> </div>
...@@ -188,12 +258,12 @@ ...@@ -188,12 +258,12 @@
</div> </div>
</form> </form>
<!---------------------------------------Modal de Cargos disponibles----------------------------------------------------------------> <!---------------------------------------Modal de Cargos disponibles---------------------------------------------------------------->
<div class="modal fade" id="cargoForm" tabindex="-2" role="dialog" aria-labelledby="cargoForm" aria-hidden="true"> <div class="modal fade" id="cargoForm" tabindex="-1" role="dialog" aria-labelledby="cargoForm" aria-hidden="true">
<div class="modal-dialog" role="document"> <div class="modal-dialog" role="document">
<div class="modal-content"> <div class="modal-content">
<div class="modal-header"> <div class="modal-header">
<h5 class="modal-title" id="exampleModalLabel" >CargosDisponibles</h5> <h5 class="modal-title" id="exampleModalLabel" >CargosDisponibles</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close"> <button type="button" class="close" data-bs-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span> <span aria-hidden="true">&times;</span>
</button> </button>
</div> </div>
...@@ -202,7 +272,7 @@ ...@@ -202,7 +272,7 @@
<label for="cargo-nombre" class="form-label">Cargo</label> <label for="cargo-nombre" class="form-label">Cargo</label>
<div class="input-group mb-3"> <div class="input-group mb-3">
<select class="form-select" name="cargo-id" aria-label="Default select example" required> <select class="form-select" name="cargo-id" aria-label="Default select example" required>
<option value="-1" selected>Open this select menu</option>
<c:forEach items="${CargosDisponibles}" var="convocatoria"> <c:forEach items="${CargosDisponibles}" var="convocatoria">
<option value="${convocatoria.getId()}">${convocatoria.getCargo().getNombre()}</option> <option value="${convocatoria.getId()}">${convocatoria.getCargo().getNombre()}</option>
</c:forEach>> </c:forEach>>
...@@ -211,8 +281,8 @@ ...@@ -211,8 +281,8 @@
</form> </form>
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button> <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Cerrar</button>
<button type="button" class="btn btn-primary" onclick="agregarFieldCargo()" data-dismiss="modal">Agregar</button> <button type="button" class="btn btn-primary" onclick="agregarFieldCargo()">Agregar</button>
</div> </div>
</div> </div>
</div> </div>
...@@ -225,7 +295,7 @@ ...@@ -225,7 +295,7 @@
<div class="modal-content"> <div class="modal-content">
<div class="modal-header"> <div class="modal-header">
<h5 class="modal-title" id="exampleModalLabel">Experiencia</h5> <h5 class="modal-title" id="exampleModalLabel">Experiencia</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close"> <button type="button" class="close" data-bs-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span> <span aria-hidden="true">&times;</span>
</button> </button>
</div> </div>
...@@ -288,19 +358,19 @@ ...@@ -288,19 +358,19 @@
</form> </form>
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button> <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Cerrar</button>
<button id="agregar-exp" type="button" class="btn btn-primary" onclick="agregarFieldExpierncia()" data-dismiss="modal">Agregar</button> <button id="agregar-exp" type="button" class="btn btn-primary" onclick="agregarFieldExpierncia()">Agregar</button>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<!---------------------------------------------------------------------------------------> <!--------------------------------------------------------------------------------------->
<div class="modal fade" id="tecnologiaForm" tabindex="-2" role="dialog" aria-labelledby="tecnologiaForm" aria-hidden="true"> <div class="modal fade" id="tecnologiaForm" tabindex="-1" role="dialog" aria-labelledby="tecnologiaForm" aria-hidden="true">
<div class="modal-dialog" role="document"> <div class="modal-dialog" role="document">
<div class="modal-content"> <div class="modal-content">
<div class="modal-header"> <div class="modal-header">
<h5 class="modal-title" id="exampleModalLabel" >tecnologia</h5> <h5 class="modal-title" id="exampleModalLabel" >tecnologia</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close"> <button type="button" class="close" data-bs-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span> <span aria-hidden="true">&times;</span>
</button> </button>
</div> </div>
...@@ -309,7 +379,7 @@ ...@@ -309,7 +379,7 @@
<label for="tecnologia-nombre" class="form-label">Tecnologia</label> <label for="tecnologia-nombre" class="form-label">Tecnologia</label>
<div class="input-group mb-3"> <div class="input-group mb-3">
<select class="form-select" name="tecnologia-id" aria-label="Default select example" required> <select class="form-select" name="tecnologia-id" aria-label="Default select example" required>
<option value="-1" selected>Open this select menu</option>
<c:forEach items="${tecnologias}" var="tecnologia"> <c:forEach items="${tecnologias}" var="tecnologia">
<option value="${tecnologia.id}">${tecnologia.nombre}</option> <option value="${tecnologia.id}">${tecnologia.nombre}</option>
</c:forEach> </c:forEach>
...@@ -323,8 +393,8 @@ ...@@ -323,8 +393,8 @@
</form> </form>
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button> <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Cerrar</button>
<button type="button" class="btn btn-primary" onclick="agregarFieldTecnologia()" data-dismiss="modal">Agregar</button> <button type="button" class="btn btn-primary" onclick="agregarFieldTecnologia()">Agregar</button>
</div> </div>
</div> </div>
</div> </div>
...@@ -338,7 +408,7 @@ ...@@ -338,7 +408,7 @@
<div class="modal-content"> <div class="modal-content">
<div class="modal-header"> <div class="modal-header">
<h5 class="modal-title" id="exampleModalLabel">Estudios</h5> <h5 class="modal-title" id="exampleModalLabel">Estudios</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close"> <button type="button" class="close" data-bs-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span> <span aria-hidden="true">&times;</span>
</button> </button>
</div> </div>
...@@ -349,7 +419,7 @@ ...@@ -349,7 +419,7 @@
<div class="form-group"> <div class="form-group">
<label for="tipoDeEstudio">Tipo de Estudio</label> <label for="tipoDeEstudio">Tipo de Estudio</label>
<select name="tipoDeEstudio" id="tipoDeEstudio" required> <select name="tipoDeEstudio" id="tipoDeEstudio" required>
<option value="-1" selected disabled hidden>Seleccionar</option>
<c:forEach items="${tiposDeEstudio}" var="tipo"> <c:forEach items="${tiposDeEstudio}" var="tipo">
<option value="${tipo}">${tipo.name}</option> <option value="${tipo}">${tipo.name}</option>
</c:forEach> </c:forEach>
...@@ -368,7 +438,7 @@ ...@@ -368,7 +438,7 @@
<div class="form-group"> <div class="form-group">
<label for="estado">Estado</label> <label for="estado">Estado</label>
<select name="estado" id="estado" required> <select name="estado" id="estado" required>
<option value="-1" selected disabled hidden>Seleccionar</option>
<c:forEach items="${estadosEstudio}" var="estado"> <c:forEach items="${estadosEstudio}" var="estado">
<option value="${estado}">${estado.name}</option> <option value="${estado}">${estado.name}</option>
</c:forEach> </c:forEach>
...@@ -377,18 +447,24 @@ ...@@ -377,18 +447,24 @@
<div class="form-group"> <div class="form-group">
<label for="fechaDesdeEstudio" class="form-label">Fecha Desde</label> <label for="fechaDesdeEstudio" class="form-label">Fecha Desde</label>
<input type="date" class="form-control " name="fechaDesde" id="fechaDesdeEstudio" required> <input type="date" class="form-control " name="fechaDesde" id="fechaDesdeEstudio" required>
<div class="invalid-feedback errorFechaDesde">
</div>
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="fechaHastaEstudio" class="form-label">Fecha Hasta</label> <label for="fechaHastaEstudio" class="form-label">Fecha Hasta</label>
<input type="date" class="form-control " name="fechaHasta" id="fechaHastaEstudio" > <input type="date" class="form-control " name="fechaHasta" id="fechaHastaEstudio" >
<div class="invalid-feedback errorFechaHasta">
</div>
</div> </div>
</form> </form>
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Cerrar</button> <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Cerrar</button>
<button type="button" class="btn btn-primary" onclick="agregarFieldEstudio()" data-dismiss="modal">Agregar</button> <button type="button" class="btn btn-primary" onclick="agregarFieldEstudio()">Agregar</button>
</div> </div>
</div> </div>
</div> </div>
...@@ -401,7 +477,7 @@ ...@@ -401,7 +477,7 @@
<div class="modal-content"> <div class="modal-content">
<div class="modal-header"> <div class="modal-header">
<h5 class="modal-title" id="exampleModalLabel">Referencias Personales</h5> <h5 class="modal-title" id="exampleModalLabel">Referencias Personales</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close"> <button type="button" class="close" data-bs-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span> <span aria-hidden="true">&times;</span>
</button> </button>
</div> </div>
...@@ -427,8 +503,8 @@ ...@@ -427,8 +503,8 @@
</form> </form>
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Cerrar</button> <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Cerrar</button>
<button type="button" class="btn btn-primary" onclick="agregarFieldReferencia()" data-dismiss="modal">Agregar</button> <button type="button" class="btn btn-primary" onclick="agregarFieldReferencia()">Agregar</button>
</div> </div>
</div> </div>
</div> </div>
...@@ -436,48 +512,10 @@ ...@@ -436,48 +512,10 @@
<!-- Optional JavaScript; choose one of the two! --> <!-- Optional JavaScript; choose one of the two! -->
<script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.10.2/dist/umd/popper.min.js" integrity="sha384-7+zCNj/IqJ95wo16oMtfsKbZ9ccEh31eOz1HGyDuCQ6wgnyJNSYdrPa03rtR1zdB" 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://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.min.js" integrity="sha384-QJHtvGhmr9XOIpI6YVutG+2QOK9T+ZnN4kzFN1RtK3zEFEIsxhlmWl5/YESvpZ13" 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> <script>
var ciudades = ${ciudades}; var ciudades = ${ciudades};
(function(){
var today = new Date();
var dd = today.getDate();
var mm = today.getMonth() + 1; //January is 0!
var yyyy = today.getFullYear();
if (dd < 10) {
dd = '0' + dd;
}
if (mm < 10) {
mm = '0' + mm;
}
today = yyyy + '-' + mm + '-' + dd;
let fechaDesdeEstudio = document.querySelector("#fechaDesdeEstudio");
let fechaDesdeExperiencia = document.querySelector("#fechaDesdeExperiencia");
let fechaHastaEstudio = document.querySelector("#fechaHastaEstudio");
let fechaHastaExperiencia = document.querySelector("#fechaHastaExperiencia");
let fechaNacimiento = document.querySelector("#fechaNacimiento");
let fechas = [fechaDesdeEstudio,fechaDesdeExperiencia,fechaHastaEstudio,fechaHastaExperiencia,fechaNacimiento]
fechas.forEach(fch => fch.addEventListener('keydown',()=>false))//no dejar cargar manualmente fechas
fechaDesdeEstudio.setAttribute("max", today);
fechaDesdeExperiencia.setAttribute("max", today);
fechaNacimiento.setAttribute("max", today);
fechaDesdeExperiencia.addEventListener("change", ()=>{
fechaHastaExperiencia.setAttribute("min", fechaDesdeExperiencia.value)
})
fechaDesdeEstudio.addEventListener("change", ()=>{
fechaHastaEstudio.setAttribute("min", fechaDesdeEstudio.value)
})
})()
</script> </script>
<script src="./main.js"></script> <script src="./main.js"></script>
</body> </body>
......
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