-- ========================================================================
-- BASE DE DATOS: Help Yourself
-- Compatible con MySQL 5.7+ / 8.0+ / MariaDB
-- ========================================================================

CREATE DATABASE IF NOT EXISTS `bearseve_HelpYourself` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
USE `bearseve_HelpYourself`;

-- Desactivar temporalmente revisión de claves foráneas para recreación limpia
SET FOREIGN_KEY_CHECKS = 0;

DROP TABLE IF EXISTS `progreso_misiones`;
DROP TABLE IF EXISTS `entregas_ejercicios`;
DROP TABLE IF EXISTS `ejercicios`;
DROP TABLE IF EXISTS `misiones_semanales`;
DROP TABLE IF EXISTS `asignaturas`;
DROP TABLE IF EXISTS `configuracion_plataforma`;
DROP TABLE IF EXISTS `usuarios`;

SET FOREIGN_KEY_CHECKS = 1;

-- ------------------------------------------------------------------------
-- 1. TABLA: usuarios
-- Gestiona accesos, roles y las monedas de los estudiantes.
-- ------------------------------------------------------------------------
CREATE TABLE `usuarios` (
    `id` INT AUTO_INCREMENT PRIMARY KEY,
    `nombre` VARCHAR(100) NOT NULL,
    `email` VARCHAR(100) NOT NULL UNIQUE,
    `password` VARCHAR(255) NOT NULL,
    `rol` ENUM('admin', 'profesor', 'estudiante') NOT NULL DEFAULT 'estudiante',
    `monedas` INT NOT NULL DEFAULT 0,
    `creado_en` TIMESTAMP DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- ------------------------------------------------------------------------
-- 2. TABLA: configuracion_plataforma
-- Reemplaza la configuración de 'platformConfig' (admin.html).
-- ------------------------------------------------------------------------
CREATE TABLE `configuracion_plataforma` (
    `id` INT AUTO_INCREMENT PRIMARY KEY,
    `titulo` VARCHAR(150) NOT NULL DEFAULT 'Help Yourself',
    `subtitulo` VARCHAR(255) NOT NULL DEFAULT '--Mejora tu forma de aprender--',
    `tipo_logo` ENUM('icon', 'url', 'file') NOT NULL DEFAULT 'icon',
    `valor_logo` TEXT NOT NULL,
    `color_estudiante` VARCHAR(20) NOT NULL DEFAULT '#f59e0b',
    `color_profesor` VARCHAR(20) NOT NULL DEFAULT '#10b981',
    `actualizado_en` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- ------------------------------------------------------------------------
-- 3. TABLA: asignaturas
-- Almacena las materias activas en la plataforma.
-- ------------------------------------------------------------------------
CREATE TABLE `asignaturas` (
    `id` INT AUTO_INCREMENT PRIMARY KEY,
    `codigo` VARCHAR(50) NOT NULL UNIQUE,
    `nombre` VARCHAR(100) NOT NULL,
    `icono` VARCHAR(50) NOT NULL,
    `color` VARCHAR(50) NOT NULL,
    `descripcion` TEXT NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- ------------------------------------------------------------------------
-- 4. TABLA: misiones_semanales
-- Retos semanales que otorgan puntos y monedas de recompensa.
-- ------------------------------------------------------------------------
CREATE TABLE `misiones_semanales` (
    `id` INT AUTO_INCREMENT PRIMARY KEY,
    `asignatura_id` INT NOT NULL,
    `titulo` VARCHAR(255) NOT NULL,
    `puntos` INT NOT NULL DEFAULT 3,
    `recompensa_monedas` INT NOT NULL DEFAULT 1,
    CONSTRAINT `fk_misiones_asignatura` FOREIGN KEY (`asignatura_id`) REFERENCES `asignaturas` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- ------------------------------------------------------------------------
-- 5. TABLA: ejercicios
-- Tareas y series prácticas (x6) asignadas a las asignaturas.
-- ------------------------------------------------------------------------
CREATE TABLE `ejercicios` (
    `id` INT AUTO_INCREMENT PRIMARY KEY,
    `asignatura_id` INT NOT NULL,
    `creador_id` INT NULL,
    `nombre` VARCHAR(255) NOT NULL,
    `motivo` VARCHAR(150) NULL DEFAULT 'Tarea Regular',
    `puntos_texto` VARCHAR(50) NOT NULL DEFAULT 'X3 puntos',
    `puntos_valor` INT NOT NULL DEFAULT 3,
    `insumo` VARCHAR(100) NOT NULL DEFAULT 'Tarea',
    `creado_en` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    CONSTRAINT `fk_ejercicios_asignatura` FOREIGN KEY (`asignatura_id`) REFERENCES `asignaturas` (`id`) ON DELETE CASCADE,
    CONSTRAINT `fk_ejercicios_creador` FOREIGN KEY (`creador_id`) REFERENCES `usuarios` (`id`) ON DELETE SET NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- ------------------------------------------------------------------------
-- 6. TABLA: entregas_ejercicios
-- Registro de entregas y evidencias de cada alumno por ejercicio.
-- ------------------------------------------------------------------------
CREATE TABLE `entregas_ejercicios` (
    `id` INT AUTO_INCREMENT PRIMARY KEY,
    `estudiante_id` INT NOT NULL,
    `ejercicio_id` INT NOT NULL,
    `estado` ENUM('Pendiente', 'Entregada') NOT NULL DEFAULT 'Pendiente',
    `evidencia_texto` TEXT NULL,
    `fecha_entrega` TIMESTAMP NULL DEFAULT NULL,
    `creado_en` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    UNIQUE KEY `unique_estudiante_ejercicio` (`estudiante_id`, `ejercicio_id`),
    CONSTRAINT `fk_entregas_estudiante` FOREIGN KEY (`estudiante_id`) REFERENCES `usuarios` (`id`) ON DELETE CASCADE,
    CONSTRAINT `fk_entregas_ejercicio` FOREIGN KEY (`ejercicio_id`) REFERENCES `ejercicios` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- ------------------------------------------------------------------------
-- 7. TABLA: progreso_misiones
-- Control de misiones completadas / reclamadas por estudiante.
-- ------------------------------------------------------------------------
CREATE TABLE `progreso_misiones` (
    `id` INT AUTO_INCREMENT PRIMARY KEY,
    `estudiante_id` INT NOT NULL,
    `mision_id` INT NOT NULL,
    `completado` TINYINT(1) NOT NULL DEFAULT 1,
    `fecha_completado` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    UNIQUE KEY `unique_estudiante_mision` (`estudiante_id`, `mision_id`),
    CONSTRAINT `fk_progreso_estudiante` FOREIGN KEY (`estudiante_id`) REFERENCES `usuarios` (`id`) ON DELETE CASCADE,
    CONSTRAINT `fk_progreso_mision` FOREIGN KEY (`mision_id`) REFERENCES `misiones_semanales` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;


-- ========================================================================
-- INSERCIÓN DE DATOS INICIALES (SEEDS)
-- Correspondientes a las maquetas de estudiantes.html, profesores.html y admin.html
-- ========================================================================

-- Configuración por defecto
INSERT INTO `configuracion_plataforma` (`titulo`, `subtitulo`, `tipo_logo`, `valor_logo`, `color_estudiante`, `color_profesor`) 
VALUES ('Help Yourself', '--Mejora tu forma de aprender--', 'icon', 'fa-graduation-cap', '#f59e0b', '#10b981');

-- Usuarios iniciales de prueba (Contraseñas de ejemplo cifradas o genéricas)
INSERT INTO `usuarios` (`id`, `nombre`, `email`, `password`, `rol`, `monedas`) VALUES
(1, 'Administrador General', 'admin@helpyourself.com', 'admin123', 'admin', 0),
(2, 'Profesor Guía', 'profesor@helpyourself.com', 'profesor123', 'profesor', 0),
(3, 'Estudiante Demo', 'estudiante@helpyourself.com', 'estudiante123', 'estudiante', 4);

-- Asignaturas
INSERT INTO `asignaturas` (`id`, `codigo`, `nombre`, `icono`, `color`, `descripcion`) VALUES
(1, 'fisica', 'Física', 'fa-atom', 'text-blue-400', 'Fórmulas de movimiento rectilíneo, leyes de Newton y resolución práctica de problemas por inasistencias o refuerzo.'),
(2, 'quimica', 'Química', 'fa-flask', 'text-emerald-400', 'Balanceo de ecuaciones químicas, estructura atómica y guía práctica para recuperaciones por faltas a laboratorio.'),
(3, 'matematicas', 'Matemáticas', 'fa-calculator', 'text-purple-400', 'Ejercicios prácticos de álgebra, ecuaciones cuadráticas, geometría y sistema de recuperación para subir promedio.'),
(4, 'educacion_fisica', 'Educación Física', 'fa-person-running', 'text-amber-400', 'Rutinas físicas de 6 repeticiones (flexiones, sentadillas, burpees, sapitos) para compensación de asistencia.');

-- Misiones semanales
INSERT INTO `misiones_semanales` (`id`, `asignatura_id`, `titulo`, `puntos`, `recompensa_monedas`) VALUES
(1, 1, 'Resolver Misión 1: MRUV y Gráficos', 3, 1),
(2, 1, 'Resolver Misión 2: Leyes de Dinámica', 4, 1),
(3, 2, 'Misión 1: Balance de Ecuaciones Redox', 3, 1),
(4, 2, 'Misión 2: Estequiometría de Reactivos', 3, 1),
(5, 3, 'Misión 1: Resolución de Cuadráticas x6', 4, 1),
(6, 3, 'Misión 2: Factorización Especial', 3, 1),
(7, 4, 'Misión 1: Rutina de Flexiones y Resistencia', 3, 1),
(8, 4, 'Misión 2: Circuito Cardio Completo x6', 4, 1);

-- Ejercicios base (Series x6)
INSERT INTO `ejercicios` (`id`, `asignatura_id`, `creador_id`, `nombre`, `motivo`, `puntos_texto`, `puntos_valor`, `insumo`) VALUES
-- Física
(1, 1, 2, 'MRUV y Velocidad x6', 'Tarea Regular', 'X3 puntos', 3, 'Tarea'),
(2, 1, 2, 'Leyes de Newton x6', 'Tarea Regular', 'X1 punto', 1, 'Lección'),
(3, 1, 2, 'Trabajo y Energía x6', 'Refuerzo por Nivel', 'X2 puntos', 2, 'Act. idv.'),
(4, 1, 2, 'Caída Libre x6', 'Tarea Regular', 'X2 puntos', 2, 'Proyecto'),
(5, 1, 2, 'Vectores 2D x6', 'Tarea Regular', 'X3 puntos', 3, 'Act. grup.'),
(6, 1, 2, 'Circuitos Eléctricos x6', 'Recuperación', 'X2 puntos', 2, 'Recuperación'),

-- Química
(7, 2, 2, 'Balanceo de Ecuaciones x6', 'Tarea Regular', 'X3 puntos', 3, 'Tarea'),
(8, 2, 2, 'Tabla Periódica x6', 'Tarea Regular', 'X1 punto', 1, 'Lección'),
(9, 2, 2, 'Enlaces Químicos x6', 'Refuerzo por Nivel', 'X2 puntos', 2, 'Act. idv.'),
(10, 2, 2, 'Estequiometría x6', 'Tarea Regular', 'X2 puntos', 2, 'Proyecto'),
(11, 2, 2, 'Nomenclatura x6', 'Tarea Regular', 'X3 puntos', 3, 'Act. grup.'),
(12, 2, 2, 'Reacciones Redox x6', 'Recuperación', 'X2 puntos', 2, 'Recuperación'),

-- Matemáticas
(13, 3, 2, 'Ecuaciones Cuadráticas x6', 'Tarea Regular', 'X3 puntos', 3, 'Tarea'),
(14, 3, 2, 'Factorización x6', 'Tarea Regular', 'X1 punto', 1, 'Lección'),
(15, 3, 2, 'Geometría Analítica x6', 'Refuerzo por Nivel', 'X2 puntos', 2, 'Act. idv.'),
(16, 3, 2, 'Trigonometría x6', 'Tarea Regular', 'X2 puntos', 2, 'Proyecto'),
(17, 3, 2, 'Funciones Lin. x6', 'Tarea Regular', 'X3 puntos', 3, 'Act. grup.'),
(18, 3, 2, 'Derivadas Básicas x6', 'Recuperación', 'X2 puntos', 2, 'Recuperación'),

-- Educación Física
(19, 4, 2, 'Flexiones x6', 'Compensación Inasistencia', 'X3 puntos', 3, 'Tarea'),
(20, 4, 2, 'Sentadillas x6', 'Tarea Regular', 'X1 punto', 1, 'Lección'),
(21, 4, 2, 'Burpees x6', 'Refuerzo por Nivel', 'X2 puntos', 2, 'Act. idv.'),
(22, 4, 2, 'Sapitos x6', 'Tarea Regular', 'X2 puntos', 2, 'Proyecto'),
(23, 4, 2, 'Polichinela x6', 'Tarea Regular', 'X3 puntos', 3, 'Act. grup.'),
(24, 4, 2, 'Abdominales x6', 'Recuperación', 'X2 puntos', 2, 'Recuperación');

-- Entregas iniciales del estudiante demo (id: 3)
INSERT INTO `entregas_ejercicios` (`estudiante_id`, `ejercicio_id`, `estado`, `evidencia_texto`, `fecha_entrega`) VALUES
(3, 1, 'Entregada', 'Resolución de los 6 ejercicios de cinemática en cuaderno.', NOW()),
(3, 2, 'Entregada', 'Resumen y diagramas de cuerpo libre.', NOW()),
(3, 7, 'Entregada', 'Balanceo de reacciones completadas por tanteo y redox.', NOW()),
(3, 8, 'Entregada', 'Mapa conceptual de tabla periódica.', NOW()),
(3, 13, 'Entregada', 'Fórmula general aplicada a las 6 ecuaciones.', NOW()),
(3, 14, 'Entregada', 'Casos de factorización resueltos.', NOW()),
(3, 19, 'Entregada', 'Serie de flexiones completada en patio.', NOW()),
(3, 20, 'Entregada', 'Serie de sentadillas completada.', NOW());

-- Misiones completadas por el estudiante demo
INSERT INTO `progreso_misiones` (`estudiante_id`, `mision_id`, `completado`, `fecha_completado`) VALUES
(3, 7, 1, NOW());
