Se añadio la posibilidad de añadir un motivo de examen personalizado
This commit is contained in:
parent
f3414286b9
commit
95889ab71d
carpeta_temporal/base_datos_exportada
controllers
js
models
views
|
@ -53,7 +53,7 @@ CREATE TABLE `candidato` (
|
|||
|
||||
LOCK TABLES `candidato` WRITE;
|
||||
/*!40000 ALTER TABLE `candidato` DISABLE KEYS */;
|
||||
INSERT INTO `candidato` VALUES (1,'2025-06-06 22:09:21',NULL,'Nombre1','ApellidoP1','ApellidoM1','correo1@gmail.com','1240015045',8,3,1,2),(2,'2025-06-06 22:09:21',NULL,'Nombre2','ApellidoP2','ApellidoM2','correo2@gmail.com','3456363007',2,5,3,3),(3,'2025-06-06 22:09:21',NULL,'Nombre3','ApellidoP3','ApellidoM3','correo3@gmail.com','8311684338',3,3,4,1),(4,'2025-06-06 22:09:21',NULL,'Nombre4','ApellidoP4','ApellidoM4','correo4@gmail.com','4691999745',2,2,6,1),(5,'2025-06-06 22:09:21',NULL,'Nombre5','ApellidoP5','ApellidoM5','correo5@gmail.com','1778592709',3,5,1,1);
|
||||
INSERT INTO `candidato` VALUES (1,'2025-06-06 22:09:21','2025-06-14 16:48:54','Nombre1','ApellidoP1','ApellidoM1','correo1@gmail.com','1240015045',8,3,1,2),(2,'2025-06-06 22:09:21','2025-06-14 16:49:44','Nombre2','ApellidoP2','ApellidoM2','correo2@gmail.com','3456363007',2,5,3,3),(3,'2025-06-06 22:09:21','2025-06-14 16:53:44','Nombre3','ApellidoP3','ApellidoM3','correo3@gmail.com','8311684338',3,3,4,1),(4,'2025-06-06 22:09:21','2025-06-14 16:54:34','Nombre4','ApellidoP4','ApellidoM4','correo4@gmail.com','4691999745',2,2,6,1),(5,'2025-06-06 22:09:21',NULL,'Nombre5','ApellidoP5','ApellidoM5','correo5@gmail.com','1778592709',3,5,1,1);
|
||||
/*!40000 ALTER TABLE `candidato` ENABLE KEYS */;
|
||||
UNLOCK TABLES;
|
||||
|
||||
|
@ -220,6 +220,7 @@ CREATE TABLE `info_candidatos` (
|
|||
`id_motivo_examen` int NOT NULL,
|
||||
`calificacion_servicio` tinyint NOT NULL,
|
||||
`consentimiento_pub` tinyint NOT NULL,
|
||||
`motivo_op` varchar(100) DEFAULT NULL,
|
||||
PRIMARY KEY (`id_candidato`),
|
||||
KEY `id_pais` (`id_pais`),
|
||||
KEY `id_estado` (`id_estado`),
|
||||
|
@ -245,6 +246,7 @@ CREATE TABLE `info_candidatos` (
|
|||
|
||||
LOCK TABLES `info_candidatos` WRITE;
|
||||
/*!40000 ALTER TABLE `info_candidatos` DISABLE KEYS */;
|
||||
INSERT INTO `info_candidatos` VALUES (1,2,NULL,NULL,NULL,7,15,'Universidad Veracruzana',9,3,1,'Hola'),(2,1,30,30093,30093534,1,5,'Universidad Veracruzana',6,5,1,''),(3,2,NULL,NULL,NULL,3,4,'Universidad Veracruzana',5,3,1,NULL),(4,2,NULL,NULL,NULL,5,6,'Universidad Veracruzana',9,3,1,'/');
|
||||
/*!40000 ALTER TABLE `info_candidatos` ENABLE KEYS */;
|
||||
UNLOCK TABLES;
|
||||
|
||||
|
@ -260,7 +262,7 @@ CREATE TABLE `motivo_examen` (
|
|||
`descripcion` varchar(255) NOT NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `descripcion` (`descripcion`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
|
@ -269,7 +271,7 @@ CREATE TABLE `motivo_examen` (
|
|||
|
||||
LOCK TABLES `motivo_examen` WRITE;
|
||||
/*!40000 ALTER TABLE `motivo_examen` DISABLE KEYS */;
|
||||
INSERT INTO `motivo_examen` VALUES (5,'Cambio de carrera o sector laboral'),(4,'Crecimiento personal'),(3,'Incremento salarial'),(7,'Mantenerse actualizado'),(1,'Mejora u oportunidad laboral'),(6,'Requisito académico'),(2,'Requisito de la empresa o puesto'),(8,'Requisito para obtener otra certificación de nivel superior');
|
||||
INSERT INTO `motivo_examen` VALUES (5,'Cambio de carrera o sector laboral'),(4,'Crecimiento personal'),(3,'Incremento salarial'),(7,'Mantenerse actualizado'),(1,'Mejora u oportunidad laboral'),(9,'Otro'),(6,'Requisito académico'),(2,'Requisito de la empresa o puesto'),(8,'Requisito para obtener otra certificación de nivel superior');
|
||||
/*!40000 ALTER TABLE `motivo_examen` ENABLE KEYS */;
|
||||
UNLOCK TABLES;
|
||||
|
||||
|
@ -538,4 +540,4 @@ UNLOCK TABLES;
|
|||
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||
|
||||
-- Dump completed on 2025-06-06 16:20:29
|
||||
-- Dump completed on 2025-06-14 16:55:38
|
||||
|
|
|
@ -63,6 +63,7 @@ class CandidatoController {
|
|||
$id_giro = $_POST['id_giro'];
|
||||
$nombre_empresa_institucion = $_POST['nombre_empresa_institucion'];
|
||||
$motivo_examen = $_POST['motivo_examen'];
|
||||
$motivo_op = isset($_POST['motivo_op']) ? $_POST['motivo_op'] : null;
|
||||
$calificacion_servicio = $_POST['calificacion_servicio'];
|
||||
$consentimiento_pub = $_POST['consentimiento_pub'];
|
||||
|
||||
|
@ -78,6 +79,7 @@ class CandidatoController {
|
|||
$id_giro,
|
||||
$nombre_empresa_institucion,
|
||||
$motivo_examen,
|
||||
$motivo_op,
|
||||
$calificacion_servicio,
|
||||
$consentimiento_pub,
|
||||
$fecha_salida
|
||||
|
|
|
@ -12,6 +12,8 @@ document.addEventListener("DOMContentLoaded", function () {
|
|||
const motivoExamenSelect = document.getElementById("motivo_examen");
|
||||
const selectCalificacionServicio = document.getElementById("calificacion_servicio");
|
||||
const dataListEmpresasInstituciones = document.getElementById("sugerencias_ei");
|
||||
const motivoOtroContainer = document.getElementById("motivo_otro_container");
|
||||
const motivoOtroInput = document.getElementById("motivo_otro");
|
||||
|
||||
llenarSelectGiro();
|
||||
llenarSelectNivelesEstudio();
|
||||
|
@ -174,10 +176,29 @@ document.addEventListener("DOMContentLoaded", function () {
|
|||
return true;
|
||||
}
|
||||
|
||||
function validarMotivoOtro(){
|
||||
if(motivoExamenSelect.value === "9"){
|
||||
return motivoOtroInput.value.trim() !== "";
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - FUNCIONES
|
||||
|
||||
// EVENTOS - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
|
||||
// Event listener para mostrar/ocultar el campo de motivo personalizado
|
||||
motivoExamenSelect.addEventListener("change", function() {
|
||||
if (motivoExamenSelect.value === "9") { // "Otro"
|
||||
motivoOtroContainer.style.display = "block";
|
||||
motivoOtroInput.setAttribute("required", "");
|
||||
} else {
|
||||
motivoOtroContainer.style.display = "none";
|
||||
motivoOtroInput.removeAttribute("required");
|
||||
motivoOtroInput.value = "";
|
||||
}
|
||||
});
|
||||
|
||||
// Añadir un evento de cambio al select de país
|
||||
paisSelect.addEventListener("change", function() {
|
||||
// Si el país es México, habilitar el campo de código postal
|
||||
|
@ -296,6 +317,7 @@ document.addEventListener("DOMContentLoaded", function () {
|
|||
const idGiro = document.getElementById('id_giro').value;
|
||||
const nombreEmpresa = document.getElementById('nombre_empresa').value.trim();
|
||||
const motivoExamen = document.getElementById('motivo_examen').value;
|
||||
const motivoOtro = document.getElementById('motivo_otro').value.trim();
|
||||
|
||||
const calificacionServicio = document.getElementById('calificacion_servicio').value;
|
||||
const consentimientoPub = document.getElementById('consentimiento_pub').checked;
|
||||
|
@ -326,6 +348,9 @@ document.addEventListener("DOMContentLoaded", function () {
|
|||
if(!selectColoniaValido()){
|
||||
validaciones.push("⦁ Seleccione una colonia. ");
|
||||
}
|
||||
if(!validarMotivoOtro()){
|
||||
validaciones.push("⦁ Ingrese un motivo. ");
|
||||
}
|
||||
|
||||
if(validaciones.length > 0){
|
||||
alert("Campos del formulario sin llenar\n" + validaciones.join("\n"));
|
||||
|
@ -345,6 +370,7 @@ document.addEventListener("DOMContentLoaded", function () {
|
|||
|
||||
formData.append("nombre_empresa_institucion", nombreEmpresa);
|
||||
formData.append("motivo_examen", motivoExamen);
|
||||
formData.append("motivo_op", motivoOtro);
|
||||
|
||||
formData.append("calificacion_servicio", calificacionServicio);
|
||||
if (consentimientoPub) {
|
||||
|
|
|
@ -22,6 +22,7 @@ class CandidatoModel {
|
|||
* @param int $id_giro ID del giro
|
||||
* @param string $nombre_empresa_institucion Nombre de la empresa o institución
|
||||
* @param int $motivo_examen Motivo del examen
|
||||
* @param string|null $motivo_op Motivo personalizado (opcional)
|
||||
* @param int $calificacion_servicio Calificación del servicio
|
||||
* @param int $consentimiento_pub Consentimiento de publicación
|
||||
* @param string $fecha_salida Fecha de salida
|
||||
|
@ -37,6 +38,7 @@ class CandidatoModel {
|
|||
$id_giro,
|
||||
$nombre_empresa_institucion,
|
||||
$motivo_examen,
|
||||
$motivo_op,
|
||||
$calificacion_servicio,
|
||||
$consentimiento_pub,
|
||||
$fecha_salida
|
||||
|
@ -54,11 +56,16 @@ class CandidatoModel {
|
|||
$id_colonia = (int)$id_colonia;
|
||||
}
|
||||
|
||||
// Validar motivo_op: si está vacío o contiene solo espacios, asignar NULL
|
||||
if (empty($motivo_op) || trim($motivo_op) === '') {
|
||||
$motivo_op = null;
|
||||
}
|
||||
|
||||
$sql = "INSERT INTO info_candidatos (
|
||||
id_candidato, id_pais, id_estado, id_municipio, id_colonia,
|
||||
id_nivel, id_giro, nombre_empresa_institucion, id_motivo_examen,
|
||||
calificacion_servicio, consentimiento_pub
|
||||
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
|
||||
calificacion_servicio, consentimiento_pub, motivo_op
|
||||
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
|
||||
|
||||
$stmt = $this->conn->prepare($sql);
|
||||
if ($stmt === false) {
|
||||
|
@ -69,7 +76,7 @@ class CandidatoModel {
|
|||
}
|
||||
|
||||
$stmt->bind_param(
|
||||
"iiiiiiisiii",
|
||||
"iiiiiiisiiis",
|
||||
$id_candidato,
|
||||
$id_pais,
|
||||
$id_estado,
|
||||
|
@ -80,7 +87,8 @@ class CandidatoModel {
|
|||
$nombre_empresa_institucion,
|
||||
$motivo_examen,
|
||||
$calificacion_servicio,
|
||||
$consentimiento_pub
|
||||
$consentimiento_pub,
|
||||
$motivo_op
|
||||
);
|
||||
|
||||
if (!$stmt->execute()) {
|
||||
|
|
|
@ -75,6 +75,11 @@ if($_SERVER['REQUEST_METHOD'] === 'GET' && isset($_GET['id_candidato'])) {
|
|||
<option value="NULL">Seleccione una opción</option>
|
||||
</select>
|
||||
|
||||
<div id="motivo_otro_container" style="display: none; margin-top: 10px;">
|
||||
<label class="form-label" for="motivo_otro" style="margin: 10px 0px 5px;">Especifique el motivo</label>
|
||||
<input class="border rounded-3 border-dark-subtle form-control" type="text" id="motivo_otro" placeholder="Describa brevemente su motivo" maxlength="100">
|
||||
</div>
|
||||
|
||||
<h4 style="margin: 20px 0px 0px;">Calificación del servicio</h4>
|
||||
<label class="form-label" for="calificacion_servicio" style="margin: 10px 0px 5px;">¿Qué tan satisfecho está con nuestra institución, considerando la calidad de las instalaciones, la atención del personal y el proceso de aplicación del examen?</label>
|
||||
<select class="border rounded-3 border-dark-subtle form-select" id="calificacion_servicio" required="">
|
||||
|
|
Loading…
Reference in New Issue