-- 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 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;

-- 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');
