<?php
session_start();
include 'conexao.php';
$conn = conectar_banco();

// Captura o ID de atualização. Se estiver vazio, o PHP entende que é um novo registro.
$id_update = !empty($_POST['id_update']) ? (int)$_POST['id_update'] : null;

// Verifica critério salvarvazio do status selecionado
$id_status_fk_post = isset($_POST['id_status_fk']) ? (int)$_POST['id_status_fk'] : 0;
$salvarvazio = 'N';
if ($id_status_fk_post) {
    $stmt_sv = $conn->prepare("SELECT salvarvazio FROM statusdoquestionario WHERE id_status = ?");
    if ($stmt_sv) {
        $stmt_sv->bind_param('i', $id_status_fk_post);
        $stmt_sv->execute();
        $res_sv = $stmt_sv->get_result()->fetch_assoc();
        if ($res_sv && isset($res_sv['salvarvazio'])) $salvarvazio = $res_sv['salvarvazio'];
        $stmt_sv->close();
    }
}

// Se salvarvazio != 'S', validar campos obrigatórios no servidor
if (($salvarvazio ?? 'N') !== 'S') {
    $missing = [];
    $required = [
        'quem_entrevistou', 'data_entrevista', 'id_status_fk', 'aceite_pesquisa'
    ];
    foreach ($required as $field) {
        $val = $_POST[$field] ?? '';
        if (is_string($val)) $val = trim($val);
        if ($val === '' || $val === null) $missing[] = $field;
    }
    if (!empty($missing)) {
        echo "Erro: campos obrigatórios ausentes: " . implode(', ', $missing);
        exit;
    }
}

// --- Lógica de Cálculo de Notas (Baseada no Questionário PAIPE) ---
$nota_total = 0;

// P1: Tomador de Decisão (20, 10, 0)
if (($_POST['p1_tomador_decisao'] ?? '') === 'Sim') {
    $nota_total += 20;
} elseif (($_POST['p1_tomador_decisao'] ?? '') === 'Influencia') {
    $nota_total += 10;
}

// P2: Modelo Desenvolvimento (15, 10, 5)
if (($_POST['p2_modelo_desenvolvimento'] ?? '') === 'Terceirizado') {
    $nota_total += 15;
} elseif (($_POST['p2_modelo_desenvolvimento'] ?? '') === 'Hibrido') {
    $nota_total += 10;
} elseif (($_POST['p2_modelo_desenvolvimento'] ?? '') === 'Interno') {
    $nota_total += 5;
}

// P3: Experiência com Fornecedores (múltiplos checkboxes, máx 30)
$p3_total = 0;
if (isset($_POST['p3_prazo']) && $_POST['p3_prazo'] == 1) $p3_total += 5;
if (isset($_POST['p3_qualidade']) && $_POST['p3_qualidade'] == 1) $p3_total += 5;
if (isset($_POST['p3_comunicacao']) && $_POST['p3_comunicacao'] == 1) $p3_total += 5;
if (isset($_POST['p3_custos']) && $_POST['p3_custos'] == 1) $p3_total += 10;
if (isset($_POST['p3_escalabilidade']) && $_POST['p3_escalabilidade'] == 1) $p3_total += 5;
$nota_total += min($p3_total, 30);

// P4: Tipo de Demanda (15, 10, 10, 0)
if (($_POST['p4_tipo_demanda'] ?? '') === 'Desenvolvimento') {
    $nota_total += 15;
} elseif (($_POST['p4_tipo_demanda'] ?? '') === 'Fabrica') {
    $nota_total += 10;
} elseif (($_POST['p4_tipo_demanda'] ?? '') === 'Alocacao') {
    $nota_total += 10;
}

// P5: Projetos em Pipeline (20, 15, 10, 0)
if (($_POST['p5_projetos_pipeline'] ?? '') === 'Curto') {
    $nota_total += 20;
} elseif (($_POST['p5_projetos_pipeline'] ?? '') === 'Medio') {
    $nota_total += 15;
} elseif (($_POST['p5_projetos_pipeline'] ?? '') === 'Longo') {
    $nota_total += 10;
}

// P6: Tamanho da Operação TI (10, 15, 20, 25)
if (($_POST['p6_tamanho_operacao_ti'] ?? '') === 'Ate10') {
    $nota_total += 10;
} elseif (($_POST['p6_tamanho_operacao_ti'] ?? '') === 'De11a30') {
    $nota_total += 15;
} elseif (($_POST['p6_tamanho_operacao_ti'] ?? '') === 'De31a100') {
    $nota_total += 20;
} elseif (($_POST['p6_tamanho_operacao_ti'] ?? '') === 'Acima100') {
    $nota_total += 25;
}

// P7: Abertura para Conversa (15, 5, 0)
if (($_POST['p7_abertura_conversa'] ?? '') === 'Sim') {
    $nota_total += 15;
} elseif (($_POST['p7_abertura_conversa'] ?? '') === 'Talvez') {
    $nota_total += 5;
}

// --- Preparação dos Dados ---
// Se estiver atualizando e campos estiverem vazios, preencher com dados atuais
$quem_entrevistou = $_POST['quem_entrevistou'] ?? '';
$data_entrevista = $_POST['data_entrevista'] ?? '';
$hora_entrevista = $_POST['hora_entrevista'] ?? '';

// Se for UPDATE e campos estiverem vazios, preencher automaticamente
if ($id_update) {
    // Validar mudança para "Não trabalhados"
    $status_anterior_id = $_POST['status_anterior'] ?? '';
    $status_novo_id = $_POST['id_status_fk'] ?? 0;
    
    if ($status_anterior_id && $status_novo_id && $status_anterior_id != $status_novo_id) {
        // Buscar nomes dos status
        $stmt_status_anterior = $conn->prepare("SELECT nome_status FROM statusdoquestionario WHERE id_status = ?");
        $stmt_status_anterior->bind_param('i', $status_anterior_id);
        $stmt_status_anterior->execute();
        $res_anterior = $stmt_status_anterior->get_result()->fetch_assoc();
        $nome_status_anterior = $res_anterior['nome_status'] ?? '';
        $stmt_status_anterior->close();
        
        $stmt_status_novo = $conn->prepare("SELECT nome_status FROM statusdoquestionario WHERE id_status = ?");
        $stmt_status_novo->bind_param('i', $status_novo_id);
        $stmt_status_novo->execute();
        $res_novo = $stmt_status_novo->get_result()->fetch_assoc();
        $nome_status_novo = $res_novo['nome_status'] ?? '';
        $stmt_status_novo->close();
        
        // Se está mudando PARA "Não trabalhados" e o anterior NÃO ERA "Não trabalhados"
        if (stripos($nome_status_novo, 'não trabalhad') !== false && 
            stripos($nome_status_anterior, 'não trabalhad') === false) {
            echo "Erro: Não é possível alterar o status para 'Não trabalhados' quando o status anterior não era 'Não trabalhados'.";
            exit;
        }
    }
    
    if (empty(trim($quem_entrevistou))) {
        $quem_entrevistou = $_SESSION['usuario_nome'] ?? '';
    }
    if (empty(trim($data_entrevista))) {
        $data_entrevista = date('Y-m-d');
    }
    if (empty(trim($hora_entrevista)) || $hora_entrevista === '00:00' || $hora_entrevista === '00:00:00') {
        $hora_entrevista = date('H:i');
    }
}

$dados = [
    $quem_entrevistou, $data_entrevista, $hora_entrevista, 
    $_POST['agendamento_data_retorno'] ?? '', $_POST['agendamento_hora_retorno'] ?? '',
    $_POST['id_status_fk'] ?? 0, $_POST['aceite_pesquisa'] ?? '', $_POST['razao_social'] ?? '', 
    $_POST['nome_fantasia'] ?? '', $_POST['cnae'] ?? '', $_POST['descricao_atividade'] ?? '', $_POST['ddd'] ?? '', $_POST['fone'] ?? '', $_POST['cnpj'] ?? '', $_POST['endereco'] ?? '', $_POST['cidade'] ?? '', $_POST['uf'] ?? '', 
    $_POST['numerodefuncionarios'] ?? '', $_POST['site'] ?? '',
    // Perguntas PAIPE
    $_POST['p1_tomador_decisao'] ?? '', $_POST['p2_modelo_desenvolvimento'] ?? '', 
    $_POST['p3_prazo'] ?? 0, $_POST['p3_qualidade'] ?? 0, $_POST['p3_comunicacao'] ?? 0, $_POST['p3_custos'] ?? 0, $_POST['p3_escalabilidade'] ?? 0,
    $_POST['p4_tipo_demanda'] ?? '', $_POST['p5_projetos_pipeline'] ?? '', $_POST['p6_tamanho_operacao_ti'] ?? '', 
    $_POST['p7_abertura_conversa'] ?? '',
    $_POST['fechamento_reuniao_data'] ?? '', $_POST['fechamento_reuniao_hora1'] ?? '', $_POST['fechamento_reuniao_hora2'] ?? '',
    $_POST['fechamento_email'] ?? '', $_POST['fechamento_telefone'] ?? '',
    $_POST['observacao_encerramento'] ?? '', $_POST['observacoesinternas'] ?? '', $nota_total
];

if ($id_update) {
    // --- LÓGICA DE UPDATE (Edição) ---
    $sql = "UPDATE qualificacao_belgo SET 
        quem_entrevistou=?, data_entrevista=?, hora_entrevista=?, agendamento_data_retorno=?, agendamento_hora_retorno=?, id_status_fk=?, 
        aceite_pesquisa=?, razao_social=?, nome_fantasia=?, cnae=?, descricao_atividade=?, ddd=?, fone=?, cnpj=?, endereco=?, cidade=?, uf=?, 
        numerodefuncionarios=?, site=?,
        p1_tomador_decisao=?, p2_modelo_desenvolvimento=?, 
        p3_prazo=?, p3_qualidade=?, p3_comunicacao=?, p3_custos=?, p3_escalabilidade=?,
        p4_tipo_demanda=?, p5_projetos_pipeline=?, p6_tamanho_operacao_ti=?, 
        p7_abertura_conversa=?,
        fechamento_reuniao_data=?, fechamento_reuniao_hora1=?, fechamento_reuniao_hora2=?,
        fechamento_email=?, fechamento_telefone=?,
        observacao_encerramento=?, observacoesinternas=?, 
        nota_total=? 
        WHERE id=?";

    $stmt = $conn->prepare($sql);
    // Adiciona o ID ao final do array de dados para o WHERE
    $dados[] = $id_update;
    // Debug: verificar número de elementos
    $count = count($dados);
    // Gerar string de tipos dinamicamente
    $types = '';
    foreach ($dados as $val) {
        if (is_int($val)) {
            $types .= 'i';
        } else {
            $types .= 's';
        }
    }
    $stmt->bind_param($types, ...$dados);
} else {
    // --- LÓGICA DE INSERT (Novo Registro) ---
    $sql = "INSERT INTO qualificacao_belgo (
        quem_entrevistou, data_entrevista, hora_entrevista, agendamento_data_retorno, agendamento_hora_retorno, id_status_fk, 
        aceite_pesquisa, razao_social, nome_fantasia, cnae, descricao_atividade, ddd, fone, cnpj, endereco, cidade, uf, 
        numerodefuncionarios, site,
        p1_tomador_decisao, p2_modelo_desenvolvimento, 
        p3_prazo, p3_qualidade, p3_comunicacao, p3_custos, p3_escalabilidade,
        p4_tipo_demanda, p5_projetos_pipeline, p6_tamanho_operacao_ti, 
        p7_abertura_conversa,
        fechamento_reuniao_data, fechamento_reuniao_hora1, fechamento_reuniao_hora2,
        fechamento_email, fechamento_telefone,
        observacao_encerramento, observacoesinternas, 
        nota_total, data_registro) 
        VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, NOW())";

    $stmt = $conn->prepare($sql);
    // Gerar string de tipos dinamicamente
    $types = '';
    foreach ($dados as $val) {
        if (is_int($val)) {
            $types .= 'i';
        } else {
            $types .= 's';
        }
    }
    $stmt->bind_param($types, ...$dados);
}

if ($stmt->execute()) {
    $filter_params = $_POST['filter_params'] ?? '';
    $redirect_url = "principal.php?msg=sucesso";
    if ($filter_params) {
        $redirect_url .= "&" . $filter_params;
    }
    header("Location: " . $redirect_url);
} else {
    echo "Erro ao processar: " . $conn->error;
}

$conn->close();
?>