-- ============================================================
--  PLAN MKT — Sistema de Requerimientos Ventas → Marketing
--  Base de datos MySQL
-- ============================================================


-- ------------------------------------------------------------
--  Tabla: usuarios (administración de marketing)
-- ------------------------------------------------------------
CREATE TABLE IF NOT EXISTS usuarios (
  id            INT AUTO_INCREMENT PRIMARY KEY,
  nombre        VARCHAR(120) NOT NULL,
  usuario       VARCHAR(60)  NOT NULL UNIQUE,
  password_hash VARCHAR(255) NOT NULL,
  rol           ENUM('admin','marketing') NOT NULL DEFAULT 'marketing',
  activo        TINYINT(1)   NOT NULL DEFAULT 1,
  creado_en     DATETIME     NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- ------------------------------------------------------------
--  Tabla: ejecutivos (diseñadores / responsables a asignar)
-- ------------------------------------------------------------
CREATE TABLE IF NOT EXISTS ejecutivos (
  id        INT AUTO_INCREMENT PRIMARY KEY,
  nombre    VARCHAR(120) NOT NULL,
  area      VARCHAR(80)  DEFAULT 'Marketing',
  activo    TINYINT(1)   NOT NULL DEFAULT 1
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- ------------------------------------------------------------
--  Tabla: marcas (empresas / marcas del grupo)
-- ------------------------------------------------------------
CREATE TABLE IF NOT EXISTS marcas (
  id        INT AUTO_INCREMENT PRIMARY KEY,
  nombre    VARCHAR(120) NOT NULL,
  color     VARCHAR(9)   DEFAULT '#3B2EAB',   -- color identificador
  activo    TINYINT(1)   NOT NULL DEFAULT 1
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- ------------------------------------------------------------
--  Tabla: requerimientos (lo que envía Ventas)
-- ------------------------------------------------------------
CREATE TABLE IF NOT EXISTS requerimientos (
  id                 INT AUTO_INCREMENT PRIMARY KEY,
  codigo             VARCHAR(20)  NOT NULL UNIQUE,
  acceso_token       VARCHAR(40)  NOT NULL UNIQUE,  -- enlace de seguimiento de ventas
  marca_id           INT          NULL,             -- empresa / marca
  -- Datos que llena VENTAS
  solicitante        VARCHAR(120) NOT NULL,
  titulo             VARCHAR(180) NOT NULL,
  objetivo           TEXT         NOT NULL,   -- ¿para qué es el evento?
  descripcion        TEXT         NOT NULL,   -- información completa
  fecha_evento       DATE         NULL,
  fecha_subida       DATE         NULL,       -- fecha deseada de publicación
  horario_subida     VARCHAR(40)  NULL,       -- horario deseado de subida
  plazo_entrega      VARCHAR(80)  NULL,       -- en qué tiempo quiere el video/arte
  -- Redes solicitadas por ventas (1 = solicitada)
  red_instagram      TINYINT(1)   NOT NULL DEFAULT 0,
  red_tiktok         TINYINT(1)   NOT NULL DEFAULT 0,
  red_youtube        TINYINT(1)   NOT NULL DEFAULT 0,
  red_linkedin       TINYINT(1)   NOT NULL DEFAULT 0,
  red_facebook       TINYINT(1)   NOT NULL DEFAULT 0,
  tipo_pieza         VARCHAR(60)  NULL,        -- arte / video / reel / flyer ...
  observaciones      TEXT         NULL,        -- detalle de observación de ventas
  prioridad          ENUM('baja','media','alta') NOT NULL DEFAULT 'media',
  -- Gestión de MARKETING (back administración)
  estado             ENUM('pendiente','en_proceso','revision','publicado','rechazado')
                       NOT NULL DEFAULT 'pendiente',
  ejecutivo_id       INT          NULL,        -- quién lo va a hacer
  notas_marketing    TEXT         NULL,
  tiempo_estimado    VARCHAR(80)  NULL,        -- tiempo en que estará el video
  -- Publicación: marca lo que ya se subió
  pub_instagram      TINYINT(1)   NOT NULL DEFAULT 0,
  pub_tiktok         TINYINT(1)   NOT NULL DEFAULT 0,
  pub_youtube        TINYINT(1)   NOT NULL DEFAULT 0,
  pub_linkedin       TINYINT(1)   NOT NULL DEFAULT 0,
  pub_facebook       TINYINT(1)   NOT NULL DEFAULT 0,
  creado_en          DATETIME     NOT NULL DEFAULT CURRENT_TIMESTAMP,
  actualizado_en     DATETIME     NOT NULL DEFAULT CURRENT_TIMESTAMP
                       ON UPDATE CURRENT_TIMESTAMP,
  CONSTRAINT fk_req_ejecutivo FOREIGN KEY (ejecutivo_id)
    REFERENCES ejecutivos(id) ON DELETE SET NULL,
  CONSTRAINT fk_req_marca FOREIGN KEY (marca_id)
    REFERENCES marcas(id) ON DELETE SET NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- ------------------------------------------------------------
--  Tabla: adjuntos (archivos subidos por ventas)
-- ------------------------------------------------------------
CREATE TABLE IF NOT EXISTS adjuntos (
  id               INT AUTO_INCREMENT PRIMARY KEY,
  requerimiento_id INT          NOT NULL,
  nombre_original  VARCHAR(255) NOT NULL,
  archivo          VARCHAR(255) NOT NULL,
  tipo             VARCHAR(80)  NULL,
  peso_kb          INT          NULL,
  creado_en        DATETIME     NOT NULL DEFAULT CURRENT_TIMESTAMP,
  CONSTRAINT fk_adj_req FOREIGN KEY (requerimiento_id)
    REFERENCES requerimientos(id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- ------------------------------------------------------------
--  Tabla: entregables (links de videos/artes terminados)
-- ------------------------------------------------------------
CREATE TABLE IF NOT EXISTS entregables (
  id               INT AUTO_INCREMENT PRIMARY KEY,
  requerimiento_id INT          NOT NULL,
  titulo           VARCHAR(160) NOT NULL,
  url              VARCHAR(500) NOT NULL,    -- link del video/arte hecho
  plataforma       VARCHAR(60)  NULL,        -- instagram / youtube / drive ...
  -- Flujo de aprobación de ventas
  estado_aprob     ENUM('pendiente','aprobado','correccion')
                     NOT NULL DEFAULT 'pendiente',
  comentario_ventas TEXT        NULL,        -- qué corregir, lo escribe ventas
  revisado_en      DATETIME     NULL,
  creado_en        DATETIME     NOT NULL DEFAULT CURRENT_TIMESTAMP,
  CONSTRAINT fk_ent_req FOREIGN KEY (requerimiento_id)
    REFERENCES requerimientos(id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- ------------------------------------------------------------
--  Datos iniciales
-- ------------------------------------------------------------
-- Usuario admin por defecto  (usuario: admin / clave: planmkt2026)
INSERT INTO usuarios (nombre, usuario, password_hash, rol) VALUES
  ('Administrador', 'admin',
   '$2y$10$REEMPLAZAR_POR_HASH_GENERADO', 'admin');

INSERT INTO ejecutivos (nombre, area) VALUES
  ('Jeremy', 'Marketing'),
  ('Milagros', 'Marketing'),
  ('Antonella', 'Marketing');

INSERT INTO marcas (nombre, color) VALUES
  ('Riverdock', '#1E73BE'),
  ('Sky Travel', '#FF5A47'),
  ('Zone Kidds', '#19C39C'),
  ('Club del Río', '#7A5CC4'),
  ('Cristina Tutiven (náutico)', '#0F6E5B');

-- ------------------------------------------------------------
--  Tabla: pauta_planner (planner mensual de pauta)
-- ------------------------------------------------------------
CREATE TABLE IF NOT EXISTS pauta_planner (
  id              INT AUTO_INCREMENT PRIMARY KEY,
  anio            INT          NOT NULL,
  mes             INT          NOT NULL,
  marca_id        INT          NULL,
  programa        VARCHAR(180) NOT NULL,
  plataforma      ENUM('meta','tiktok','ambas') NOT NULL DEFAULT 'meta',
  presupuesto     DECIMAL(10,2) NOT NULL DEFAULT 0,
  copy_texto      TEXT         NULL,
  link            VARCHAR(500) NULL,
  comentario      TEXT         NULL,
  fecha_pub       DATE         NULL,
  pauta_desde     DATE         NULL,
  pauta_hasta     DATE         NULL,
  ejecutivo_id    INT          NULL,
  estado          ENUM('planificado','pautado','activo','finalizado','pausado')
                    NOT NULL DEFAULT 'planificado',
  observacion     TEXT         NULL,
  creado_en       DATETIME     NOT NULL DEFAULT CURRENT_TIMESTAMP,
  actualizado_en  DATETIME     NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  CONSTRAINT fk_pauta_marca FOREIGN KEY (marca_id) REFERENCES marcas(id) ON DELETE SET NULL,
  CONSTRAINT fk_pauta_ejec  FOREIGN KEY (ejecutivo_id) REFERENCES ejecutivos(id) ON DELETE SET NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- ------------------------------------------------------------
--  Tabla: pauta_meta_mensual (presupuesto objetivo por mes)
-- ------------------------------------------------------------
CREATE TABLE IF NOT EXISTS pauta_meta_mensual (
  id          INT AUTO_INCREMENT PRIMARY KEY,
  anio        INT          NOT NULL,
  mes         INT          NOT NULL,
  meta_meta   DECIMAL(10,2) NOT NULL DEFAULT 0,
  meta_tiktok DECIMAL(10,2) NOT NULL DEFAULT 0,
  UNIQUE KEY uq_mes (anio, mes)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
