-- Script de creación de base de datos IESTP GGI
-- Creación de la base de datos
CREATE DATABASE IF NOT EXISTS iestpggiedu_web;
USE iestpggiedu_web;

-- Tabla de categorías para publicaciones
CREATE TABLE categorias (
    id INT AUTO_INCREMENT PRIMARY KEY,
    nombre VARCHAR(100) NOT NULL,
    slug VARCHAR(100) NOT NULL UNIQUE,
    descripcion TEXT,
    estado TINYINT(1) DEFAULT 1
);

-- Tabla de noticias/publicaciones
CREATE TABLE publicaciones (
    id INT AUTO_INCREMENT PRIMARY KEY,
    titulo VARCHAR(200) NOT NULL,
    slug VARCHAR(200) NOT NULL UNIQUE,
    contenido TEXT NOT NULL,
    imagen VARCHAR(255),
    extracto VARCHAR(255),
    categoria_id INT,
    usuario_id INT,
    destacado TINYINT(1) DEFAULT 0,
    visitas INT DEFAULT 0,
    estado TINYINT(1) DEFAULT 1,
    fecha_publicacion TIMESTAMP NULL,
    fecha_modificacion TIMESTAMP NULL,
    fecha_registro TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (categoria_id) REFERENCES categorias(id),
    FOREIGN KEY (usuario_id) REFERENCES usuarios(id)
);

-- Tabla de programas de estudio
CREATE TABLE programas (
    id INT AUTO_INCREMENT PRIMARY KEY,
    nombre VARCHAR(200) NOT NULL,
    slug VARCHAR(200) NOT NULL UNIQUE,
    descripcion TEXT,
    imagen VARCHAR(255),
    estado TINYINT(1) DEFAULT 1,
    fecha_registro TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- Tabla de docentes
CREATE TABLE docentes (
    id INT AUTO_INCREMENT PRIMARY KEY,
    nombre VARCHAR(100) NOT NULL,
    apellidos VARCHAR(100) NOT NULL,
    titulo VARCHAR(100),
    cargo VARCHAR(100),
    programa_id INT,
    descripcion TEXT,
    imagen VARCHAR(255),
    email VARCHAR(100),
    estado TINYINT(1) DEFAULT 1,
    fecha_registro TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (programa_id) REFERENCES programas(id)
);

-- Tabla de configuración del sitio
CREATE TABLE configuracion (
    id INT AUTO_INCREMENT PRIMARY KEY,
    nombre_sitio VARCHAR(100) NOT NULL,
    descripcion TEXT,
    logo VARCHAR(255),
    favicon VARCHAR(255),
    email VARCHAR(100),
    telefono VARCHAR(20),
    direccion VARCHAR(255),
    horario VARCHAR(100),
    facebook VARCHAR(255),
    twitter VARCHAR(255),
    instagram VARCHAR(255),
    youtube VARCHAR(255),
    fecha_modificacion TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

-- Tabla de sliders/banners
CREATE TABLE sliders (
    id INT AUTO_INCREMENT PRIMARY KEY,
    titulo VARCHAR(200),
    subtitulo VARCHAR(255),
    imagen VARCHAR(255) NOT NULL,
    enlace VARCHAR(255),
    orden INT DEFAULT 0,
    estado TINYINT(1) DEFAULT 1,
    fecha_registro TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- Tabla de enlaces importantes
CREATE TABLE enlaces (
    id INT AUTO_INCREMENT PRIMARY KEY,
    titulo VARCHAR(100) NOT NULL,
    url VARCHAR(255) NOT NULL,
    icono VARCHAR(50),
    orden INT DEFAULT 0,
    estado TINYINT(1) DEFAULT 1,
    fecha_registro TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- Tabla de documentos institucionales
CREATE TABLE documentos (
    id INT AUTO_INCREMENT PRIMARY KEY,
    titulo VARCHAR(200) NOT NULL,
    descripcion TEXT,
    archivo VARCHAR(255) NOT NULL,
    categoria VARCHAR(100),
    fecha_documento DATE,
    usuario_id INT,
    estado TINYINT(1) DEFAULT 1,
    fecha_registro TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (usuario_id) REFERENCES usuarios(id)
);

-- Tabla de mensajes de contacto
CREATE TABLE mensajes (
    id INT AUTO_INCREMENT PRIMARY KEY,
    nombre VARCHAR(100) NOT NULL,
    email VARCHAR(100) NOT NULL,
    asunto VARCHAR(200) NOT NULL,
    mensaje TEXT NOT NULL,
    telefono VARCHAR(20),
    leido TINYINT(1) DEFAULT 0,
    fecha_registro TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- Tabla de registro de visitas
CREATE TABLE visitas (
    id INT AUTO_INCREMENT PRIMARY KEY,
    ip VARCHAR(45) NOT NULL,
    fecha TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- Tabla de suscriptores al boletín
CREATE TABLE suscriptores (
    id INT AUTO_INCREMENT PRIMARY KEY,
    email VARCHAR(100) NOT NULL UNIQUE,
    estado TINYINT(1) DEFAULT 1,
    fecha_registro TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- Tabla de accesos al panel de administración
CREATE TABLE accesos (
    id INT AUTO_INCREMENT PRIMARY KEY,
    usuario_id INT NOT NULL,
    ip VARCHAR(45) NOT NULL,
    fecha TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (usuario_id) REFERENCES usuarios(id)
);

INSERT INTO categorias (nombre, slug, descripcion) 
VALUES 
('Noticias', 'noticias', 'Noticias institucionales'),
('Eventos', 'eventos', 'Eventos institucionales'),
('Comunicados', 'comunicados', 'Comunicados oficiales');

INSERT INTO programas (nombre, slug, descripcion) 
VALUES 
('Arquitectura de Plataformas y Servicios de Tecnología de la Información', 'arquitectura-ti', 'Programa de estudios de arquitectura de plataformas y servicios de tecnología de la información'),
('Enfermería Técnica', 'enfermeria-tecnica', 'Programa de estudios de enfermería técnica');

INSERT INTO configuracion (nombre_sitio, descripcion, email, telefono, direccion, horario) 
VALUES ('IESTP Glicerio Gomez Igarza', 'Instituto de Educación Superior Tecnológico Público Glicerio Gomez Igarza', 'iestpggi@gmail.com', '921 432 011', 'Jr. 28 de Julio # 525 - Llata, Huamalíes', 'Lunes a Viernes, 8AM a 1PM y 3PM a 6PM'); 