-- ============================================================
--  CLINICALBIKE v3 — Ejecutar en phpMyAdmin
--
--  ANTES DE EJECUTAR:
--  1. Crea la BD desde cPanel > Database Wizard
--  2. En phpMyAdmin selecciona tu BD en el panel izquierdo
--  3. Pega TODO este contenido en la pestana SQL
--  4. Clic en Ejecutar
--
--  No incluye CREATE DATABASE porque cPanel no lo permite.
-- ============================================================

CREATE TABLE clientes (
    id INT AUTO_INCREMENT PRIMARY KEY,
    rut VARCHAR(15) NOT NULL UNIQUE,
    nombre VARCHAR(120) NOT NULL,
    telefono VARCHAR(25),
    email VARCHAR(150),
    notas TEXT,
    creado_en TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

CREATE TABLE bicicletas (
    id INT AUTO_INCREMENT PRIMARY KEY,
    cliente_id INT NOT NULL,
    modelo VARCHAR(160) NOT NULL,
    marca VARCHAR(80),
    tipo VARCHAR(80),
    serial VARCHAR(100),
    anio YEAR,
    color VARCHAR(50),
    FOREIGN KEY (cliente_id) REFERENCES clientes(id) ON DELETE CASCADE
);

CREATE TABLE usuarios (
    id INT AUTO_INCREMENT PRIMARY KEY,
    usuario VARCHAR(50) NOT NULL UNIQUE,
    password_hash VARCHAR(255) NOT NULL,
    nombre VARCHAR(100),
    rol ENUM('admin','tecnico') DEFAULT 'tecnico',
    creado_en TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- NUMERACIÓN:
--   Manual (talonario físico): 000079, 000080, etc. — Evelyn/Ignacio ingresan el número
--   Web (formulario online):   W001, W002, W003...  — generado automáticamente
--   Talonario actualmente en: 000078 → próximo: 000079
-- ESTADOS: 0=Pend.Aprobación 1=Aprobada 2=Recepcionada 3=En Taller 4=Esp.Retiro 5=Pagada 6=Entregada
CREATE TABLE ordenes (
    id VARCHAR(20) PRIMARY KEY,
    cliente_id INT,
    bicicleta_id INT,
    usuario_id INT,
    estado TINYINT DEFAULT 0,
    prioridad ENUM('baja','media','alta') DEFAULT 'media',
    diagnostico TEXT,
    origen ENUM('web','manual') DEFAULT 'web',
    fecha_ingreso DATE,
    duracion_aprox VARCHAR(10),
    token_consulta VARCHAR(64),
    web_nombre VARCHAR(120),
    web_email VARCHAR(150),
    web_tel VARCHAR(25),
    web_tipo_bici VARCHAR(80),
    web_marca VARCHAR(80),
    web_estado_bici VARCHAR(80),
    web_entrega VARCHAR(100),
    web_dir TEXT,
    web_servicios TEXT,
    web_horario VARCHAR(100),
    web_obs TEXT,
    creado_en TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    actualizado_en TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    FOREIGN KEY (cliente_id) REFERENCES clientes(id),
    FOREIGN KEY (bicicleta_id) REFERENCES bicicletas(id)
);

CREATE TABLE orden_servicios (
    id INT AUTO_INCREMENT PRIMARY KEY,
    orden_id VARCHAR(20) NOT NULL,
    codigo VARCHAR(20),
    nombre VARCHAR(200) NOT NULL,
    precio INT DEFAULT 0,
    aprobado TINYINT DEFAULT 0,
    FOREIGN KEY (orden_id) REFERENCES ordenes(id) ON DELETE CASCADE
);

CREATE TABLE historial_estados (
    id INT AUTO_INCREMENT PRIMARY KEY,
    orden_id VARCHAR(20) NOT NULL,
    estado_anterior TINYINT,
    estado_nuevo TINYINT,
    usuario_nombre VARCHAR(100),
    cambiado_en TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (orden_id) REFERENCES ordenes(id)
);

CREATE TABLE email_log (
    id INT AUTO_INCREMENT PRIMARY KEY,
    destinatario VARCHAR(150),
    asunto VARCHAR(200),
    tipo VARCHAR(50),
    referencia VARCHAR(50),
    ok TINYINT DEFAULT 1,
    enviado_en TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- usuario=ignacio clave=clinicalbike2025 / usuario=evelyn clave=clinicalbike2025
INSERT INTO usuarios (usuario,password_hash,nombre,rol) VALUES
('ignacio','$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi','Ignacio','admin'),
('evelyn', '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi','Evelyn','tecnico');

INSERT INTO clientes (rut,nombre,telefono,email) VALUES ('12345678-9','Carlos Riveros','+56988214433','carlos@email.com');
INSERT INTO bicicletas (cliente_id,modelo,marca,tipo,anio,color) VALUES (1,'Turbo Levo 4 Comp','Specialized','E-Bike',2024,'Verde');
