-- =====================================================================
-- Correção do erro 500 em https://forms.motionfitacademia.com.br/0/formularios.php
--
-- Causa: o código PHP usa colunas que NÃO existem no banco atual.
-- Rode este script no phpMyAdmin, banco `motionfi2b8aa4b4_gestao_forms`,
-- aba SQL. Execute UMA instrução por vez se alguma der "Duplicate column"
-- (isso só significa que aquela coluna já foi criada antes).
--
-- Faça backup antes (Exportar) — as alterações abaixo são aditivas e não
-- apagam dados, mas backup é sempre a regra.
-- =====================================================================


-- ---------------------------------------------------------------------
-- 1) formularios.categoria  -> ESTA É A CAUSA DIRETA DO ERRO 500
-- ---------------------------------------------------------------------
-- formularios.php linha 200 executa:
--   SELECT DISTINCT COALESCE(NULLIF(TRIM(categoria), ''), 'Sem categoria')
--   FROM formularios
-- Como a coluna não existe, o PDO lança exceção fora de try/catch -> 500.
-- Também usada em: formularios.php (165, 213, 217, 225),
-- home.php (33, 38), buscar_respostas.php (91), diagnostico_formularios.php.

ALTER TABLE `formularios`
  ADD COLUMN `categoria` VARCHAR(100)
    CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci
    NULL DEFAULT NULL
    AFTER `nome`;


-- ---------------------------------------------------------------------
-- 2) formulario_respostas_campos.correto
-- ---------------------------------------------------------------------
-- processa_formulario.php linha 154 faz INSERT ... (resposta_id, campo_id,
-- valor, correto) sem nenhuma verificação. Sem esta coluna, TODO envio de
-- formulário público quebra com 500.
-- buscar_respostas.php linha 180 também faz SELECT rc.correto.

ALTER TABLE `formulario_respostas_campos`
  ADD COLUMN `correto` TINYINT(1) NULL DEFAULT NULL
    AFTER `valor`;


-- ---------------------------------------------------------------------
-- 3) formulario_campos.resposta_correta
-- ---------------------------------------------------------------------
-- Usada em processa_formulario.php linha 144-145 para corrigir os
-- formulários de OnBoard. O código está protegido por array_key_exists(),
-- então não gera erro 500 — mas sem a coluna a correção automática do
-- OnBoard nunca pontua nada (o campo `correto` fica sempre NULL).

ALTER TABLE `formulario_campos`
  ADD COLUMN `resposta_correta` VARCHAR(255)
    CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci
    NULL DEFAULT NULL
    AFTER `opcoes`;


-- ---------------------------------------------------------------------
-- 4) formulario_campos.tipo — faltam 'file' e 'porcentagem' no ENUM
-- ---------------------------------------------------------------------
-- formulario_edit.php oferece os tipos "Arquivo" (file) e "Porcentagem"
-- (porcentagem), mas o ENUM atual não os aceita. Salvar um campo com esses
-- tipos hoje grava string vazia ou dá erro dependendo do sql_mode.

ALTER TABLE `formulario_campos`
  MODIFY COLUMN `tipo` ENUM(
    'text','textarea','number','email','select','radio','checkbox',
    'warning','image','file','cpf','telefone','cep','date','rg','cnpj',
    'porcentagem'
  ) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL;


-- ---------------------------------------------------------------------
-- 5) Índices de apoio (opcional, melhora a listagem e as contagens)
-- ---------------------------------------------------------------------

ALTER TABLE `formularios`              ADD INDEX `idx_categoria` (`categoria`);
ALTER TABLE `formulario_campos`        ADD INDEX `idx_form_hidden` (`formulario_id`, `hidden`);
ALTER TABLE `formulario_respostas`     ADD INDEX `idx_form_lida` (`formulario_id`, `lida`);
ALTER TABLE `formulario_respostas_campos` ADD INDEX `idx_resposta` (`resposta_id`);
ALTER TABLE `formulario_respostas_campos` ADD INDEX `idx_campo` (`campo_id`);


-- ---------------------------------------------------------------------
-- 6) Conferência — rode depois para validar
-- ---------------------------------------------------------------------
-- SHOW COLUMNS FROM `formularios` LIKE 'categoria';
-- SHOW COLUMNS FROM `formulario_respostas_campos` LIKE 'correto';
-- SHOW COLUMNS FROM `formulario_campos` LIKE 'resposta_correta';
-- SHOW COLUMNS FROM `formulario_campos` LIKE 'tipo';
