-- =====================================================
-- CREAR TABLA DE GERENTES
-- =====================================================
-- Fecha: 2025-10-19
-- Descripción: Tabla para almacenar credenciales de gerentes
--             con acceso al portal de visualización de resultados
-- =====================================================

CREATE TABLE IF NOT EXISTS `group_managers` (
  `id` INT(11) NOT NULL AUTO_INCREMENT,
  `group_id` INT(11) NOT NULL,
  `email` VARCHAR(255) NOT NULL,
  `username` VARCHAR(100) NOT NULL UNIQUE,
  `password_hash` VARCHAR(255) NOT NULL,
  `nombre` VARCHAR(255) DEFAULT NULL,
  `activo` TINYINT(1) DEFAULT 1,
  `ultimo_acceso` DATETIME DEFAULT NULL,
  `fecha_creacion` DATETIME DEFAULT CURRENT_TIMESTAMP,
  `fecha_actualizacion` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  UNIQUE KEY `unique_group_manager` (`group_id`),
  UNIQUE KEY `unique_email` (`email`),
  KEY `idx_username` (`username`),
  KEY `idx_group_id` (`group_id`),
  CONSTRAINT `fk_group_manager_group`
    FOREIGN KEY (`group_id`)
    REFERENCES `test_groups` (`id`)
    ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- =====================================================
-- ÍNDICES ADICIONALES PARA RENDIMIENTO
-- =====================================================
CREATE INDEX `idx_email_activo` ON `group_managers` (`email`, `activo`);
CREATE INDEX `idx_username_activo` ON `group_managers` (`username`, `activo`);

-- =====================================================
-- NOTAS IMPORTANTES
-- =====================================================
-- 1. password_hash: Almacena contraseña encriptada con password_hash() de PHP
-- 2. Un grupo solo puede tener un gerente (UNIQUE constraint en group_id)
-- 3. El email debe ser único en todo el sistema
-- 4. Al eliminar un grupo, se elimina automáticamente su gerente (CASCADE)
-- 5. El username es único para facilitar el login
