del-austral/migracion_v10.sql
2026-06-30 00:35:05 +00:00

67 lines
3.0 KiB
SQL

-- ============================================================
-- Del Austral — Migración de base de datos (versión 10)
-- ============================================================
-- Agrega:
-- 1. Columnas de licencia en "usuarios": estado, duración e
-- inicio, para controlar si un profesional puede acceder.
-- 2. Tabla "profesionales_legajos" con los datos personales
-- completos del profesional (título, DNI, especialidad, etc.)
--
-- No borra ni modifica pacientes, sesiones, citas ni adjuntos.
--
-- Cómo aplicarlo:
-- 1. Entrá a phpMyAdmin → tu base de datos.
-- 2. Pestaña "SQL" (no "Importar").
-- 3. Pegá todo este archivo y ejecutá.
-- ============================================================
SET NAMES utf8mb4;
-- Sistema de licencias en la tabla de usuarios.
-- estado_licencia:
-- 'activo' → puede entrar normalmente
-- 'suspendido' → la licencia por días venció automáticamente
-- 'pausado' → el Desarrollador lo pausó manualmente
-- 'prohibido' → el Desarrollador lo prohibió (ej: falta de pago)
-- licencia_dias: NULL = indeterminado (sin vencimiento por tiempo)
-- licencia_inicio: cuándo se activó la licencia actual
ALTER TABLE usuarios ADD COLUMN estado_licencia ENUM('activo','suspendido','pausado','prohibido') NOT NULL DEFAULT 'activo' AFTER activo;
ALTER TABLE usuarios ADD COLUMN licencia_dias SMALLINT UNSIGNED NULL AFTER estado_licencia;
ALTER TABLE usuarios ADD COLUMN licencia_inicio DATE NULL AFTER licencia_dias;
-- Los usuarios que ya existían quedan con estado 'activo'
-- y sin vencimiento (indeterminado), para no interrumpir nada.
UPDATE usuarios SET estado_licencia = 'activo', licencia_dias = NULL, licencia_inicio = CURDATE() WHERE rol = 'profesional';
-- Tabla de legajos de profesionales.
-- Cada fila corresponde a un usuario con rol 'profesional'.
CREATE TABLE IF NOT EXISTS profesionales_legajos (
id INT PRIMARY KEY AUTO_INCREMENT,
usuario_id INT NOT NULL UNIQUE,
titulo ENUM('Dr.','Dra.','Lic.','Tec.','Mg.','Prof.','Otro') NOT NULL DEFAULT 'Dr.',
nombre VARCHAR(80) NOT NULL,
apellido VARCHAR(80) NOT NULL,
dni VARCHAR(20) NULL,
fecha_nacimiento DATE NULL,
lugar_nacimiento VARCHAR(150) NULL,
especialidad VARCHAR(150) NULL,
email VARCHAR(150) NULL,
telefono VARCHAR(40) NULL,
creado_en TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
actualizado_en TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
FOREIGN KEY (usuario_id) REFERENCES usuarios(id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- Para los profesionales que ya existían, creamos un legajo
-- básico usando el nombre que ya tenían en la tabla usuarios,
-- para que aparezcan en la nueva vista sin tener que
-- completarlos manualmente desde cero.
INSERT INTO profesionales_legajos (usuario_id, titulo, nombre, apellido)
SELECT id,
'Dr.',
SUBSTRING_INDEX(nombre_completo, ' ', 1),
SUBSTRING(nombre_completo, LOCATE(' ', nombre_completo) + 1)
FROM usuarios
WHERE rol = 'profesional'
ON DUPLICATE KEY UPDATE usuario_id = usuario_id;