-- ============================================================
--  MIGRACIÓN OPCIONAL (mejoras a la base de datos existente)
--  Ejecutar UNA VEZ en phpMyAdmin sobre cmi88758_sistema_arriendos.
--  El sistema funciona sin esto, pero se recomienda aplicarlo.
-- ============================================================

-- 1) Eliminar tabla duplicada sin uso (acompañantes con ñ, vacía)
DROP TABLE IF EXISTS `acompañantes`;

-- 2) Índice para búsquedas por token de ficha
ALTER TABLE arrendatarios ADD INDEX IF NOT EXISTS idx_token_pdf (token_pdf);

-- 3) Índices para el cron de alertas
ALTER TABLE arrendatarios ADD INDEX IF NOT EXISTS idx_fechas (fecha_inicio, fecha_salida);

-- 4) Bitácora: índice para el control de duplicados del cron
ALTER TABLE bitacora_correos ADD INDEX IF NOT EXISTS idx_bitacora (id_arrendatario, tipo_correo, fecha_envio);

-- 5) Unificar charset de la bitácora con el resto del sistema
ALTER TABLE bitacora_correos CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

-- 6) Reparar textos con doble codificación heredados del sistema antiguo
--    ("MuÃ±oz" pasa a "Muñoz"). El filtro es por bytes (HEX ... C383),
--    porque la colación utf8mb4_general_ci ignora tildes y un LIKE '%Ã%'
--    también capturaría nombres ya correctos como "Fernández".
--    Es seguro re-ejecutarlo: tras la primera pasada ya no hay coincidencias.
UPDATE arrendatarios SET nombre = CONVERT(BINARY CONVERT(nombre USING latin1) USING utf8mb4)
WHERE HEX(nombre) LIKE '%C383%';
UPDATE arrendatarios SET direccion = CONVERT(BINARY CONVERT(direccion USING latin1) USING utf8mb4)
WHERE HEX(direccion) LIKE '%C383%';
UPDATE acompanantes SET nombre = CONVERT(BINARY CONVERT(nombre USING latin1) USING utf8mb4)
WHERE HEX(nombre) LIKE '%C383%';
UPDATE lista_negra SET nombre = CONVERT(BINARY CONVERT(nombre USING latin1) USING utf8mb4)
WHERE HEX(nombre) LIKE '%C383%';
UPDATE lista_negra SET motivo = CONVERT(BINARY CONVERT(motivo USING latin1) USING utf8mb4)
WHERE HEX(motivo) LIKE '%C383%';
UPDATE usuarios SET nombre = CONVERT(BINARY CONVERT(nombre USING latin1) USING utf8mb4)
WHERE HEX(nombre) LIKE '%C383%';

-- ============================================================
--  7) SOLICITUDES DE ARRIENDO (formulario público)
-- ============================================================
CREATE TABLE IF NOT EXISTS `solicitudes` (
  `id_solicitud`        INT(11) NOT NULL AUTO_INCREMENT,
  `numero_departamento` VARCHAR(10)  NOT NULL,
  `nombre`              VARCHAR(100) NOT NULL,
  `rut`                 VARCHAR(20)  NOT NULL,
  `direccion`           VARCHAR(255) DEFAULT NULL,
  `celular`             VARCHAR(20)  DEFAULT NULL,
  `email`               VARCHAR(100) NOT NULL,
  `fecha_inicio`        DATE NOT NULL,
  `fecha_salida`        DATE NOT NULL,
  `hora_ingreso`        TIME NOT NULL,
  `hora_salida`         TIME NOT NULL,
  `patente_vehiculo`    VARCHAR(30)  DEFAULT NULL,
  `mensaje`             TEXT         DEFAULT NULL,
  `estado`              ENUM('pendiente','aceptada','rechazada') NOT NULL DEFAULT 'pendiente',
  -- Aviso interno: el arrendatario NUNCA ve esto, solo el propietario.
  `alerta_lista_negra`  TINYINT(1)   NOT NULL DEFAULT 0,
  `detalle_lista_negra` TEXT         DEFAULT NULL,
  `motivo_rechazo`      VARCHAR(255) DEFAULT NULL,
  `id_arrendatario`     INT(11)      DEFAULT NULL,
  `resuelta_por`        INT(11)      DEFAULT NULL,
  `fecha_resolucion`    DATETIME     DEFAULT NULL,
  `fecha_creacion`      DATETIME     NOT NULL DEFAULT current_timestamp(),
  PRIMARY KEY (`id_solicitud`),
  KEY `idx_estado` (`estado`),
  KEY `idx_depto` (`numero_departamento`),
  KEY `idx_fechas_sol` (`fecha_inicio`, `fecha_salida`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

CREATE TABLE IF NOT EXISTS `solicitud_acompanantes` (
  `id`           INT(11) NOT NULL AUTO_INCREMENT,
  `id_solicitud` INT(11) NOT NULL,
  `nombre`       VARCHAR(100) NOT NULL,
  `rut`          VARCHAR(20)  NOT NULL,
  PRIMARY KEY (`id`),
  KEY `idx_sol` (`id_solicitud`),
  CONSTRAINT `fk_sol_acomp` FOREIGN KEY (`id_solicitud`)
      REFERENCES `solicitudes` (`id_solicitud`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

-- ============================================================
--  8) Nuevos tipos de correo en la bitácora
--     (avisos al propietario y aviso de solicitud nueva)
-- ============================================================
ALTER TABLE `bitacora_correos`
  MODIFY `tipo_correo` ENUM('inicio','termino','manual',
                            'prop_ingreso','prop_salida','solicitud') NOT NULL;

-- ============================================================
--  9) Índice para encontrar rápido a los co-propietarios
--     (varios propietarios con el mismo numero_departamento)
-- ============================================================
ALTER TABLE `propietarios` ADD INDEX IF NOT EXISTS `idx_num_depto` (`numero_departamento`);
