Initial backup
This commit is contained in:
@@ -0,0 +1,3 @@
|
||||
ALTER TABLE hr_person
|
||||
ADD COLUMN position VARCHAR(150) NULL AFTER email,
|
||||
ADD COLUMN signature_data MEDIUMTEXT NULL AFTER position;
|
||||
@@ -0,0 +1,100 @@
|
||||
-- 1. Eliminar tablas antiguas (El respaldo ya está hecho)
|
||||
DROP TABLE IF EXISTS surveys_answers;
|
||||
DROP TABLE IF EXISTS surveys_questions;
|
||||
DROP TABLE IF EXISTS surveys;
|
||||
|
||||
-- 2. Crear tabla de configuracion de encuestas
|
||||
CREATE TABLE surveys_questions (
|
||||
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
question VARCHAR(255) DEFAULT NULL,
|
||||
levels INT DEFAULT 5,
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (id)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;
|
||||
|
||||
-- 3. Crear tabla de respuestas Historicas
|
||||
CREATE TABLE surveys_answers (
|
||||
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
|
||||
context_id INT DEFAULT NULL,
|
||||
id_user INT DEFAULT NULL,
|
||||
rh_name VARCHAR(255) DEFAULT NULL,
|
||||
snapshot_json JSON DEFAULT NULL,
|
||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
PRIMARY KEY (id)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci;
|
||||
|
||||
-- 4. Reemplazar Stored Procedure: sp_upsert_survey
|
||||
DELIMITER $$
|
||||
DROP PROCEDURE IF EXISTS sp_upsert_survey$$
|
||||
CREATE PROCEDURE sp_upsert_survey(
|
||||
IN p_id INT,
|
||||
IN p_surveyType VARCHAR(255),
|
||||
IN p_title VARCHAR(255),
|
||||
IN p_checkboxes TEXT,
|
||||
IN p_openQuestions TEXT,
|
||||
IN p_ranges JSON
|
||||
)
|
||||
BEGIN
|
||||
-- Limpiamos las preguntas actuales de forma definitiva
|
||||
TRUNCATE TABLE surveys_questions;
|
||||
|
||||
-- Insertamos las nuevas preguntas iterando sobre el JSON p_ranges
|
||||
-- El JSON tiene la forma: [{"question": "Pregunta 1", "levels": 5}, ...]
|
||||
IF p_ranges IS NOT NULL THEN
|
||||
INSERT INTO surveys_questions (question, levels)
|
||||
SELECT
|
||||
JSON_UNQUOTE(JSON_EXTRACT(value, '$.question')),
|
||||
JSON_UNQUOTE(JSON_EXTRACT(value, '$.levels'))
|
||||
FROM JSON_TABLE(p_ranges, '$[*]' COLUMNS (value JSON PATH '$')) AS jt;
|
||||
END IF;
|
||||
|
||||
SELECT 1 AS success, 'Encuesta actualizada correctamente' AS message;
|
||||
END$$
|
||||
DELIMITER ;
|
||||
|
||||
-- 5. Reemplazar Stored Procedure: sp_get_all_surveys
|
||||
DELIMITER $$
|
||||
DROP PROCEDURE IF EXISTS sp_get_all_surveys$$
|
||||
CREATE PROCEDURE sp_get_all_surveys()
|
||||
BEGIN
|
||||
-- Forzamos la estructura que Vue espera en el frontend:
|
||||
-- [{ id: 1, docType: 'SERVICE_ORDER', name: 'Encuesta', questions: '[...]' }]
|
||||
-- En este caso los IDs no importan, agrupamos todo en un único objeto "Virtual".
|
||||
|
||||
SELECT
|
||||
1 AS id,
|
||||
'Encuesta de Satisfacción' AS title,
|
||||
'SERVICE_ORDER' AS surveyType,
|
||||
IFNULL(
|
||||
(
|
||||
SELECT JSON_ARRAYAGG(
|
||||
JSON_OBJECT(
|
||||
'id', id,
|
||||
'typeQuestion', 'ranges',
|
||||
'question', question,
|
||||
'levels', levels
|
||||
)
|
||||
)
|
||||
FROM surveys_questions
|
||||
),
|
||||
'[]'
|
||||
) AS questions;
|
||||
END$$
|
||||
DELIMITER ;
|
||||
|
||||
-- 6. Reemplazar Stored Procedure: sp_save_survey_answers
|
||||
DELIMITER $$
|
||||
DROP PROCEDURE IF EXISTS sp_save_survey_answers$$
|
||||
CREATE PROCEDURE sp_save_survey_answers(
|
||||
IN p_surveyId INT,
|
||||
IN p_rhName VARCHAR(255),
|
||||
IN p_answers_json JSON
|
||||
)
|
||||
BEGIN
|
||||
-- P_answers_json debe contener la "fotografia" cruda enviada desde frontend
|
||||
INSERT INTO surveys_answers (context_id, rh_name, snapshot_json)
|
||||
VALUES (p_surveyId, p_rhName, p_answers_json);
|
||||
|
||||
SELECT 1 AS success;
|
||||
END$$
|
||||
DELIMITER ;
|
||||
@@ -0,0 +1,16 @@
|
||||
CREATE OR REPLACE VIEW engineer_ratings_view AS
|
||||
SELECT
|
||||
s.engineer_name,
|
||||
s.id_user,
|
||||
COUNT(DISTINCT s.id) AS total_surveys,
|
||||
ROUND(AVG( (jt.answer / jt.levels) * 5 ), 2) AS average_rating
|
||||
FROM surveys_answers s
|
||||
JOIN JSON_TABLE(
|
||||
s.snapshot_json,
|
||||
'$[*]' COLUMNS (
|
||||
answer DECIMAL(5,2) PATH '$.answer',
|
||||
levels DECIMAL(5,2) PATH '$.levels'
|
||||
)
|
||||
) jt ON s.snapshot_json IS NOT NULL
|
||||
WHERE s.id_user IS NOT NULL
|
||||
GROUP BY s.id_user, s.engineer_name;
|
||||
@@ -0,0 +1,26 @@
|
||||
DELIMITER //
|
||||
|
||||
DROP PROCEDURE IF EXISTS sp_get_surveys_by_user;
|
||||
//
|
||||
|
||||
CREATE PROCEDURE sp_get_surveys_by_user(IN p_id_user INT)
|
||||
BEGIN
|
||||
SELECT
|
||||
s.*,
|
||||
ROUND(
|
||||
(
|
||||
SELECT AVG((jt.answer / jt.levels) * 5)
|
||||
FROM JSON_TABLE(
|
||||
s.snapshot_json,
|
||||
'$[*]' COLUMNS (
|
||||
answer DECIMAL(5,2) PATH '$.answer',
|
||||
levels DECIMAL(5,2) PATH '$.levels'
|
||||
)
|
||||
) jt
|
||||
), 2
|
||||
) AS average_rating
|
||||
FROM surveys_answers s
|
||||
WHERE s.id_user = p_id_user;
|
||||
END //
|
||||
|
||||
DELIMITER ;
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,16 @@
|
||||
DELIMITER $$
|
||||
DROP PROCEDURE IF EXISTS sp_save_survey_answers$$
|
||||
CREATE PROCEDURE sp_save_survey_answers(
|
||||
IN p_surveyId INT,
|
||||
IN p_idUser INT,
|
||||
IN p_engineerName VARCHAR(255),
|
||||
IN p_rhName VARCHAR(255),
|
||||
IN p_answers_json JSON
|
||||
)
|
||||
BEGIN
|
||||
INSERT INTO surveys_answers (context_id, id_user, engineer_name, rh_name, snapshot_json)
|
||||
VALUES (p_surveyId, p_idUser, p_engineerName, p_rhName, p_answers_json);
|
||||
|
||||
SELECT 1 AS success;
|
||||
END$$
|
||||
DELIMITER ;
|
||||
@@ -0,0 +1,16 @@
|
||||
DELIMITER $$
|
||||
DROP PROCEDURE IF EXISTS sp_save_survey_answers$$
|
||||
CREATE PROCEDURE sp_save_survey_answers(
|
||||
IN p_surveyId VARCHAR(50),
|
||||
IN p_idUser INT,
|
||||
IN p_engineerName VARCHAR(255),
|
||||
IN p_rhName VARCHAR(255),
|
||||
IN p_answers_json JSON
|
||||
)
|
||||
BEGIN
|
||||
INSERT INTO surveys_answers (context_id, id_user, engineer_name, rh_name, snapshot_json)
|
||||
VALUES (p_surveyId, p_idUser, p_engineerName, p_rhName, p_answers_json);
|
||||
|
||||
SELECT 1 AS success;
|
||||
END$$
|
||||
DELIMITER ;
|
||||
Reference in New Issue
Block a user