-- AgendaYa SaaS install.sql — ejecutar en agendaya_citas

USE agendaya_citas;

CREATE TABLE IF NOT EXISTS empresas (
    id INT AUTO_INCREMENT PRIMARY KEY,
    nombre VARCHAR(200) NOT NULL,
    slug VARCHAR(100) NOT NULL UNIQUE,
    email VARCHAR(200),
    telefono VARCHAR(30),
    color_primario VARCHAR(7) DEFAULT '#F43F5E',
    activo TINYINT(1) DEFAULT 1,
    plan ENUM('basico','pro','enterprise') DEFAULT 'basico',
    creado_en TIMESTAMP DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB;

CREATE TABLE IF NOT EXISTS usuarios (
    id INT AUTO_INCREMENT PRIMARY KEY,
    empresa_id INT NULL,
    nombre VARCHAR(150) NOT NULL,
    email VARCHAR(200) NOT NULL UNIQUE,
    password VARCHAR(255) NOT NULL,
    rol ENUM('super_admin','empresa_admin','profesional') NOT NULL DEFAULT 'empresa_admin',
    activo TINYINT(1) DEFAULT 1,
    ultimo_acceso TIMESTAMP NULL,
    creado_en TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (empresa_id) REFERENCES empresas(id) ON DELETE CASCADE
) ENGINE=InnoDB;

CREATE TABLE IF NOT EXISTS profesionales (
    id INT AUTO_INCREMENT PRIMARY KEY,
    empresa_id INT NOT NULL,
    usuario_id INT NULL,
    nombre VARCHAR(150) NOT NULL,
    especialidad VARCHAR(200),
    email VARCHAR(200),
    telefono VARCHAR(30),
    color VARCHAR(7) DEFAULT '#EC4899',
    activo TINYINT(1) DEFAULT 1,
    notas TEXT,
    creado_en TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (empresa_id) REFERENCES empresas(id) ON DELETE CASCADE,
    FOREIGN KEY (usuario_id) REFERENCES usuarios(id) ON DELETE SET NULL
) ENGINE=InnoDB;

CREATE TABLE IF NOT EXISTS clientes (
    id INT AUTO_INCREMENT PRIMARY KEY,
    empresa_id INT NOT NULL,
    nombre VARCHAR(150) NOT NULL,
    email VARCHAR(200),
    telefono VARCHAR(30) NOT NULL,
    notas TEXT,
    creado_en TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (empresa_id) REFERENCES empresas(id) ON DELETE CASCADE
) ENGINE=InnoDB;

CREATE TABLE IF NOT EXISTS agendamientos (
    id INT AUTO_INCREMENT PRIMARY KEY,
    empresa_id INT NOT NULL,
    cliente_id INT NOT NULL,
    profesional_id INT NULL,
    fecha DATE NOT NULL,
    hora TIME NOT NULL,
    servicio VARCHAR(200),
    estado ENUM('pendiente','confirmado','cancelado','reagendado') DEFAULT 'pendiente',
    notas TEXT,
    recordatorio_24h TINYINT(1) DEFAULT 0,
    recordatorio_2h TINYINT(1) DEFAULT 0,
    creado_en TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    actualizado_en TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    FOREIGN KEY (empresa_id) REFERENCES empresas(id) ON DELETE CASCADE,
    FOREIGN KEY (cliente_id) REFERENCES clientes(id) ON DELETE CASCADE,
    FOREIGN KEY (profesional_id) REFERENCES profesionales(id) ON DELETE SET NULL,
    INDEX idx_fecha (fecha),
    INDEX idx_empresa (empresa_id)
) ENGINE=InnoDB;

CREATE TABLE IF NOT EXISTS respuestas_wa (
    id INT AUTO_INCREMENT PRIMARY KEY,
    empresa_id INT NOT NULL,
    agendamiento_id INT NOT NULL,
    telefono_cliente VARCHAR(30),
    mensaje_recibido VARCHAR(100),
    accion ENUM('confirmar','cancelar','reagendar') NOT NULL,
    procesado TINYINT(1) DEFAULT 0,
    recibido_en TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (empresa_id) REFERENCES empresas(id) ON DELETE CASCADE,
    FOREIGN KEY (agendamiento_id) REFERENCES agendamientos(id) ON DELETE CASCADE
) ENGINE=InnoDB;

CREATE TABLE IF NOT EXISTS mensajes_log (
    id INT AUTO_INCREMENT PRIMARY KEY,
    empresa_id INT NOT NULL,
    agendamiento_id INT NOT NULL,
    tipo VARCHAR(50),
    mensaje TEXT,
    enviado_en TIMESTAMP DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB;

-- Super Admin (password: Admin2026#)
INSERT IGNORE INTO usuarios (nombre, email, password, rol, empresa_id) VALUES
('Super Admin','admin@agendaya.com.py','$2y$10$YQ7oMHL9pJ3eJfTpTl6CzOJSzMgTEBhk.1w4fEcWvpL5QKkqW3Eum','super_admin',NULL);

-- Empresas demo
INSERT IGNORE INTO empresas (nombre, slug, email, telefono, color_primario) VALUES
('Clinica San Antonio','clinica-san-antonio','clinica@demo.com','595981111111','#0D9488'),
('Spa Bella','spa-bella','spa@demo.com','595982222222','#EC4899');

-- Admins demo (password: demo1234)
INSERT IGNORE INTO usuarios (nombre, email, password, rol, empresa_id) VALUES
('Admin Clinica','clinica@demo.com','$2y$10$TKh8H1.PflcpKnBzN6n3luwHh/wFnmNm2CpAiEWMRPsxAUDsGnv2m','empresa_admin',1),
('Admin Spa','spa@demo.com','$2y$10$TKh8H1.PflcpKnBzN6n3luwHh/wFnmNm2CpAiEWMRPsxAUDsGnv2m','empresa_admin',2);
