File: /home/onlyfibr/public_html/cadastro/admin/editar_precadastro.php
<?php
// HABILITAR ERROS PARA DEBUG - REMOVER/COMENTAR EM PRODUÇÃO!
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
// ---------------------------------------------------------
session_start();
require_once '../config.php'; // Necessário para $pdo e constantes
require_once '../functions.php'; // Para cleanCpfCnpj(), etc.
// CRÍTICO: ADICIONE AQUI SUA LÓGICA DE AUTENTICAÇÃO !!!
// Exemplo MUITO BÁSICO (NÃO SEGURO PARA PRODUÇÃO):
/*
if (!isset($_SESSION['usuario_logado']) || $_SESSION['tipo_usuario'] !== 'admin') {
header('Location: login.php');
exit;
}
*/
$id_edicao = filter_input(INPUT_GET, 'id', FILTER_VALIDATE_INT);
$precadastro = null;
$mensagem_erro = '';
$mensagem_sucesso = '';
$erros_validacao = [];
// --- Busca os dados atuais do pré-cadastro ---
if ($id_edicao && $pdo) {
try {
$sql = "SELECT * FROM precadastros WHERE id = :id";
$stmt = $pdo->prepare($sql);
$stmt->bindParam(':id', $id_edicao, PDO::PARAM_INT);
$stmt->execute();
$precadastro = $stmt->fetch(PDO::FETCH_ASSOC);
if (!$precadastro) {
$mensagem_erro = "Erro: Pré-cadastro com ID {$id_edicao} não encontrado.";
$id_edicao = null; // Impede processamento POST
}
} catch (\PDOException $e) {
$mensagem_erro = "Erro ao buscar dados para edição.";
error_log("Erro busca edição ID {$id_edicao}: " . $e->getMessage());
$id_edicao = null;
}
} elseif (!$id_edicao) {
$mensagem_erro = "ID inválido para edição.";
} else {
$mensagem_erro = "Erro crítico: Conexão com banco de dados falhou.";
}
// --- Carrega Planos e Vencimentos (Necessário para os selects do formulário) ---
$lista_planos_disponiveis = [];
$lista_vencimentos_disponiveis = [];
$erro_busca_api = false;
try {
// 1. Buscar Planos via API SGP - postApiJson
$endpointPlanos = '/api/precadastro/plano/list';
$payloadPlanos = ['token' => APP_TOKEN, 'app' => APP_NAME];
$responsePlanos = postApiJson(BASE_URL, $endpointPlanos, $payloadPlanos);
$dadosApiPlanos = json_decode($responsePlanos, true);
if (json_last_error() === JSON_ERROR_NONE && is_array($dadosApiPlanos) && empty($dadosApiPlanos['error'])) {
foreach ($dadosApiPlanos as $plano) {
if (isset($plano['id'], $plano['descricao'])) {
$lista_planos_disponiveis[] = $plano;
}
}
} else {
$erro_busca_api = true;
error_log("Erro API Planos (Edit): " . $responsePlanos);
}
// 2. Buscar Vencimentos (Exemplo simplificado, copie o seu código)
$endpointVenc = '/api/precadastro/vencimento/list';
$payloadVenc = ['token' => APP_TOKEN, 'app' => APP_NAME];
$responseVenc = postApiJson(BASE_URL, $endpointVenc, $payloadVenc);
$dadosApiVenc = json_decode($responseVenc, true);
if (json_last_error() === JSON_ERROR_NONE && is_array($dadosApiVenc) && empty($dadosApiVenc['error'])) {
foreach ($dadosApiVenc as $venc) {
if (isset($venc['id'], $venc['dia'])) {
$lista_vencimentos_disponiveis[] = $venc;
}
}
usort($lista_vencimentos_disponiveis, function ($a, $b) {
return ($a['dia'] ?? 99) <=> ($b['dia'] ?? 99);
});
} else {
$erro_busca_api = true;
error_log("Erro API Vencimentos (Edit): " . $responseVenc);
}
if ($erro_busca_api) {
$mensagem_erro .= " Aviso: Falha ao carregar opções de planos/vencimentos.";
}
} catch (\Exception $e) {
$mensagem_erro .= " Erro inesperado ao carregar opções.";
error_log("Exceção busca planos/venc (Edit): " . $e->getMessage());
}
// (Fim da cópia da lógica de busca de Planos/Vencimentos)
// --- PROCESSAMENTO DO FORMULÁRIO DE EDIÇÃO (POST) ---
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['salvar_edicao']) && $id_edicao && $precadastro && $pdo) {
// ADICIONE VALIDAÇÃO CSRF TOKEN AQUI !!!
// 1. Coleta e Limpeza (Similar ao original, mas pegando de $_POST)
// Adapte os nomes dos campos conforme o formulário HTML abaixo
$tipo_pessoa = $_POST['tipo_pessoa'] ?? $precadastro['tipo']; // Pegar tipo do DB se não vier do form? Revisar lógica do seu form original para tipo PF/PJ
$nome = trim($_POST['nome'] ?? '');
$cpf_cnpj_input = trim($_POST['cpfcnpj'] ?? '');
$cpf_cnpj = cleanCpfCnpj($cpf_cnpj_input);
$email = filter_var(trim($_POST['email'] ?? ''), FILTER_SANITIZE_EMAIL);
$celular_input = trim($_POST['celular'] ?? '');
$celular = cleanCpfCnpj($celular_input);
$cep_input = trim($_POST['cep'] ?? '');
$cep = cleanCpfCnpj($cep_input);
$logradouro = trim($_POST['logradouro'] ?? '');
$numero = trim($_POST['numero'] ?? '');
$complemento = trim($_POST['complemento'] ?? '');
$bairro = trim($_POST['bairro'] ?? '');
$cidade = trim($_POST['cidade'] ?? '');
$uf = $_POST['uf'] ?? '';
$pontoreferencia = trim($_POST['pontoreferencia'] ?? '');
$tipo_moradia = trim($_POST['tipo_moradia'] ?? '');
$plano_id_selecionado = filter_input(INPUT_POST, 'plano_id', FILTER_VALIDATE_INT);
$vencimento_id_selecionado = filter_input(INPUT_POST, 'vencimento_id', FILTER_VALIDATE_INT);
$observacao = trim($_POST['observacao'] ?? '');
// Campos específicos PF/PJ - Adapte conforme necessidade de edição
$rg = ($tipo_pessoa === 'PF') ? trim($_POST['rg'] ?? '') : null;
$rg_emissor = ($tipo_pessoa === 'PF') ? trim($_POST['rg_emissor'] ?? '') : null;
$datanasc = ($tipo_pessoa === 'PF') ? trim($_POST['datanasc'] ?? '') : null;
$nome_fantasia = ($tipo_pessoa === 'PJ') ? trim($_POST['nomefantasia'] ?? '') : null;
$insc_estadual = ($tipo_pessoa === 'PJ') ? trim($_POST['insc_estadual'] ?? '') : null;
// Indicação e Vendedor - Adicione se precisar editar
$foi_indicado = isset($_POST['foi_indicado']) && $_POST['foi_indicado'] === 'sim';
$indicador_cpfcnpj_input = ($foi_indicado) ? trim($_POST['indicador_cpfcnpj'] ?? '') : null;
$indicador_cpfcnpj = cleanCpfCnpj($indicador_cpfcnpj_input);
$vendedor_id = filter_input(INPUT_POST, 'vendedor_id', FILTER_VALIDATE_INT); // Ajuste se 'vendedor_id' não for numérico
// 2. Validação Server-Side
$erros_validacao = [];
if (empty($nome)) {
$erros_validacao['nome'] = "Nome/Razão Social obrigatório.";
}
if (empty($cpf_cnpj)) {
$erros_validacao['cpfcnpj'] = "CPF/CNPJ obrigatório.";
}
if (empty($email) || !filter_var($email, FILTER_VALIDATE_EMAIL)) {
$erros_validacao['email'] = "E-mail inválido.";
}
if (empty($celular) || (strlen($celular) < 10 || strlen($celular) > 11)) {
$erros_validacao['celular'] = "Celular inválido.";
}
if (empty($cep) || strlen($cep) !== 8) {
$erros_validacao['cep'] = "CEP inválido.";
}
if (empty($logradouro)) {
$erros_validacao['logradouro'] = "Logradouro obrigatório.";
}
if (empty($numero)) {
$erros_validacao['numero'] = "Número obrigatório.";
}
if (empty($bairro)) {
$erros_validacao['bairro'] = "Bairro obrigatório.";
}
if (empty($tipo_moradia)) {
$erros_validacao['tipo_moradia'] = "Bairro obrigatório.";
}
if (empty($cidade)) {
$erros_validacao['cidade'] = "Cidade obrigatória.";
}
if (empty($uf) || strlen($uf) !== 2) {
$erros_validacao['uf'] = "UF inválida.";
}
if (empty($plano_id_selecionado)) {
$erros_validacao['plano_id'] = "Selecione um Plano.";
}
if (empty($vencimento_id_selecionado)) {
$erros_validacao['vencimento_id'] = "Selecione um Vencimento.";
}
// Validação tipo pessoa (se editável) e campos condicionais
// Validação indicador (se editável)
// 3. Se NÃO houver erros de validação...
if (empty($erros_validacao)) {
try {
// Query UPDATE
$sql = "UPDATE precadastros SET
nome = :nome, email = :email, celular = :cel, cpf_cnpj = :cpfcnpj,
cidade = :cid, estado = :estado, observacao = :obs, rg = :rg, rg_emissor = :rg_em,
data_nascimento = :dn, nome_fantasia = :nf, insc_estadual = :ie,
cep = :cep, logradouro = :logr, numero = :num, complemento = :comp,
bairro = :bai, ponto_referencia = :pref, tipo_moradia = :moradia, plano_id_selecionado = :pid,
vencimento_id_selecionado = :vid, vendedor_id = :vend_id, foi_indicado = :foi_ind,
indicador_cpfcnpj = :ind_cpf
-- Adicione outros campos que podem ser editados
WHERE id = :id";
$stmt = $pdo->prepare($sql);
// Bind dos valores (use bindValue ou execute com array)
$stmt->bindValue(':nome', $nome);
$stmt->bindValue(':email', $email);
$stmt->bindValue(':cel', $celular);
$stmt->bindValue(':cpfcnpj', $cpf_cnpj);
$stmt->bindValue(':cid', $cidade);
$stmt->bindValue(':estado', $uf);
$stmt->bindValue(':obs', $observacao ?: null);
$stmt->bindValue(':rg', $rg);
$stmt->bindValue(':rg_em', $rg_emissor);
$stmt->bindValue(':dn', $datanasc ?: null);
$stmt->bindValue(':nf', $nome_fantasia);
$stmt->bindValue(':ie', $insc_estadual);
$stmt->bindValue(':cep', $cep);
$stmt->bindValue(':logr', $logradouro);
$stmt->bindValue(':num', $numero);
$stmt->bindValue(':comp', $complemento);
$stmt->bindValue(':bai', $bairro);
$stmt->bindValue(':pref', $pontoreferencia ?: null);
$stmt->bindValue(':moradia', $tipo_moradia);
$stmt->bindValue(':pid', $plano_id_selecionado, PDO::PARAM_INT);
$stmt->bindValue(':vid', $vencimento_id_selecionado, PDO::PARAM_INT);
$stmt->bindValue(':vend_id', $vendedor_id, PDO::PARAM_INT); // Ou null se não aplicável
$stmt->bindValue(':foi_ind', $foi_indicado, PDO::PARAM_BOOL);
$stmt->bindValue(':ind_cpf', $indicador_cpfcnpj);
$stmt->bindValue(':id', $id_edicao, PDO::PARAM_INT); // WHERE clause
if ($stmt->execute()) {
$_SESSION['sucesso_dashboard'] = "Pré-cadastro ID {$id_edicao} atualizado com sucesso!";
header('Location: dashboard_precadastros.php'); // Volta para a lista
exit;
} else {
$mensagem_erro = "Erro ao salvar as alterações.";
}
} catch (\PDOException $e) {
$mensagem_erro = "Erro de banco de dados ao salvar: " . $e->getMessage();
error_log("Erro UPDATE pré-cadastro ID {$id_edicao}: " . $e->getMessage());
}
} else {
// Se houve erros, repopula o array $precadastro com os dados do POST para o form mostrar os valores errados
$precadastro = $_POST; // Cuidado: Isso pode sobrescrever dados que não estavam no form
$precadastro['id'] = $id_edicao; // Mantém o ID
$mensagem_erro = "Por favor, corrija os campos indicados.";
}
}
// Se não foi POST ou deu erro no POST, usa os dados buscados do DB (ou null se não achou)
$form_data = $precadastro ?? []; // Para preencher o formulário
?>
<!DOCTYPE html>
<html lang="pt-BR">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Editar Pré-Cadastro - ID <?php echo htmlspecialchars($id_edicao ?? 'Inválido'); ?></title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet">
<link href="css/form.css" rel="stylesheet">
</head>
<body>
<nav class="navbar navbar-expand-lg navbar-dark bg-dark mb-4">
<div class="container">
<a class="navbar-brand" href="#">Admin Pré-Cadastros</a>
<ul class="navbar-nav ms-auto">
<li class="nav-item"><a class="nav-link" href="dashboard_precadastros.php">Voltar ao Dashboard</a></li>
</ul>
</div>
</nav>
<div class="container">
<h1>Editar Pré-Cadastro #<?php echo htmlspecialchars($id_edicao ?? 'Inválido'); ?></h1>
<hr>
<?php if ($mensagem_erro): ?> <div class="alert alert-danger"><?php echo $mensagem_erro; ?></div> <?php endif; ?>
<?php if ($mensagem_sucesso): ?> <div class="alert alert-success"><?php echo htmlspecialchars($mensagem_sucesso); ?></div> <?php endif; ?>
<?php if ($id_edicao && !empty($form_data)): // Só mostra o form se achou o registro
?>
<form id="form-precadastro-edit" method="post" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']) . '?id=' . htmlspecialchars($id_edicao); ?>" novalidate>
<input type="hidden" name="salvar_edicao" value="1">
<?php // --- SEÇÕES DO FORMULÁRIO ---
// COPIE E ADAPTE AS SEÇÕES DO SEU FORMULÁRIO ORIGINAL (precadastro_form.php) AQUI
// Pré-preenchendo os 'value' com os dados de $form_data['nome_da_coluna'] <?php echo htmlspecialchars($form_data['cpf_cnpj'] ?? '');
// Exemplo para o campo Nome:
?>
<div class="form-section-card">
<legend>Dados Pessoais / Empresariais</legend>
<div class="mb-3">
<label for="nome" class="form-label">Nome Completo / Razão Social <span class="text-danger">*</span></label>
<input type="text" class="form-control <?php echo (!empty($erros_validacao['nome'])) ? 'is-invalid' : ''; ?>" id="nome" name="nome" value="<?php echo htmlspecialchars($form_data['nome'] ?? ''); ?>" required>
<div class="invalid-feedback"><?php echo htmlspecialchars($erros_validacao['nome'] ?? ''); ?></div>
</div>
<div class="mb-3">
<label for="cpfcnpj" class="form-label">CPF / CNPJ <span class="text-danger">*</span></label>
<input type="text" class="form-control <?php echo (!empty($erros_validacao['cpfcnpj'])) ? 'is-invalid' : ''; ?>" id="cpfcnpj" name="cpfcnpj" value="<?php echo htmlspecialchars($form_data['cpf_cnpj'] ?? ''); ?>" required placeholder="Apenas números">
<div class="invalid-feedback"><?php echo htmlspecialchars($erros_validacao['cpfcnpj'] ?? ''); ?></div>
</div>
<?php // TODO: Adicionar lógica para mostrar/esconder campos PF/PJ baseado no tipo original $form_data['tipo']? Ou tornar tipo editável?
?>
<div class="row g-3">
<div class="col-md-4 mb-3"><label for="rg" class="form-label">RG</label><input type="text" class="form-control" id="rg" name="rg" value="<?php echo htmlspecialchars($form_data['rg'] ?? ''); ?>"></div>
<div class="col-md-4 mb-3"><label for="rg_emissor" class="form-label">Órgão Emissor</label><input type="text" class="form-control" id="rg_emissor" name="rg_emissor" value="<?php echo htmlspecialchars($form_data['rg_emissor'] ?? ''); ?>"></div>
<div class="col-md-4 mb-3"><label for="datanasc" class="form-label">Data Nasc.</label><input type="date" class="form-control <?php echo (!empty($erros_validacao['datanasc'])) ? 'is-invalid' : ''; ?>" id="datanasc" name="datanasc" value="<?php echo htmlspecialchars($form_data['data_nascimento'] ?? ''); ?>">
<div class="invalid-feedback"><?php echo htmlspecialchars($erros_validacao['datanasc'] ?? ''); ?></div>
</div>
</div>
<div class="row g-3">
<div class="col-md-6 mb-3"><label for="nomefantasia" class="form-label">Nome Fantasia</label><input type="text" class="form-control <?php echo (!empty($erros_validacao['nomefantasia'])) ? 'is-invalid' : ''; ?>" id="nomefantasia" name="nomefantasia" value="<?php echo htmlspecialchars($form_data['nome_fantasia'] ?? ''); ?>">
<div class="invalid-feedback"><?php echo htmlspecialchars($erros_validacao['nomefantasia'] ?? ''); ?></div>
</div>
<div class="col-md-6 mb-3"><label for="insc_estadual" class="form-label">Inscrição Estadual</label><input type="text" class="form-control" id="insc_estadual" name="insc_estadual" value="<?php echo htmlspecialchars($form_data['insc_estadual'] ?? ''); ?>"></div>
</div>
</div>
<div class="form-section-card">
<legend>Contato</legend>
<div class="row g-3">
<div class="col-md-6 mb-3"><label for="email" class="form-label">E-mail <span class="text-danger">*</span></label><input type="email" class="form-control <?php echo (!empty($erros_validacao['email'])) ? 'is-invalid' : ''; ?>" id="email" name="email" value="<?php echo htmlspecialchars($form_data['email'] ?? ''); ?>" required>
<div class="invalid-feedback"><?php echo htmlspecialchars($erros_validacao['email'] ?? ''); ?></div>
</div>
<div class="col-md-6 mb-3"><label for="celular" class="form-label">Celular (DDD) <span class="text-danger">*</span></label><input type="tel" class="form-control <?php echo (!empty($erros_validacao['celular'])) ? 'is-invalid' : ''; ?>" id="celular" name="celular" value="<?php echo htmlspecialchars($form_data['celular'] ?? ''); ?>" required>
<div class="invalid-feedback"><?php echo htmlspecialchars($erros_validacao['celular'] ?? ''); ?></div>
</div>
</div>
</div>
<div class="form-section-card">
<legend>Endereço</legend>
<?php // COPIE A SEÇÃO DE ENDEREÇO DO FORM ORIGINAL, PREENCHENDO OS VALUES
?>
<div class="row g-3">
<div class="col-md-4 mb-3">
<label for="cep" class="form-label">CEP <span class="text-danger">*</span></label>
<input type="text" class="form-control <?php echo (!empty($erros_validacao['cep'])) ? 'is-invalid' : ''; ?>" id="cep" name="cep" value="<?php echo htmlspecialchars($form_data['cep'] ?? ''); ?>" required maxlength="8">
<div class="invalid-feedback"><?php echo htmlspecialchars($erros_validacao['cep'] ?? 'CEP inválido.'); ?></div>
</div>
<div class="col-md-8 mb-3">
<label for="logradouro" class="form-label">Logradouro <span class="text-danger">*</span></label>
<input type="text" class="form-control <?php echo (!empty($erros_validacao['logradouro'])) ? 'is-invalid' : ''; ?>" id="logradouro" name="logradouro" value="<?php echo htmlspecialchars($form_data['logradouro'] ?? ''); ?>" required>
<div class="invalid-feedback"><?php echo htmlspecialchars($erros_validacao['logradouro'] ?? 'Obrigatório.'); ?></div>
</div>
<div class="col-md-3 mb-3">
<label for="numero" class="form-label">Número <span class="text-danger">*</span></label>
<input type="text" class="form-control <?php echo (!empty($erros_validacao['numero'])) ? 'is-invalid' : ''; ?>" id="numero" name="numero" value="<?php echo htmlspecialchars($form_data['numero'] ?? ''); ?>" required>
<div class="invalid-feedback"><?php echo htmlspecialchars($erros_validacao['numero'] ?? 'Obrigatório.'); ?></div>
</div>
<div class="col-md-4 mb-3">
<label for="complemento" class="form-label">Compl.</label>
<input type="text" class="form-control" id="complemento" name="complemento" value="<?php echo htmlspecialchars($form_data['complemento'] ?? ''); ?>">
</div>
<div class="col-md-5 mb-3">
<label for="bairro" class="form-label">Bairro <span class="text-danger">*</span></label>
<input type="text" class="form-control <?php echo (!empty($erros_validacao['bairro'])) ? 'is-invalid' : ''; ?>" id="bairro" name="bairro" value="<?php echo htmlspecialchars($form_data['bairro'] ?? ''); ?>" required>
<div class="invalid-feedback"><?php echo htmlspecialchars($erros_validacao['bairro'] ?? 'Obrigatório.'); ?></div>
</div>
<div class="col-md-8 mb-3">
<label for="cidade" class="form-label">Cidade <span class="text-danger">*</span></label>
<input type="text" class="form-control <?php echo (!empty($erros_validacao['cidade'])) ? 'is-invalid' : ''; ?>" id="cidade" name="cidade" value="<?php echo htmlspecialchars($form_data['cidade'] ?? ''); ?>" required>
<div class="invalid-feedback"><?php echo htmlspecialchars($erros_validacao['cidade'] ?? 'Obrigatório.'); ?></div>
</div>
<div class="col-md-4 mb-3">
<label for="uf" class="form-label">UF <span class="text-danger">*</span></label>
<select class="form-select <?php echo (!empty($erros_validacao['uf'])) ? 'is-invalid' : ''; ?>" id="uf" name="uf" required>
<option value="">UF</option>
<?php $ufs = ['AC', 'AL', 'AP', 'AM', 'BA', 'CE', 'DF', 'ES', 'GO', 'MA', 'MT', 'MS', 'MG', 'PA', 'PB', 'PR', 'PE', 'PI', 'RJ', 'RN', 'RS', 'RO', 'RR', 'SC', 'SP', 'SE', 'TO'];
foreach ($ufs as $uf_opt) {
$selected = (isset($form_data['uf']) && $form_data['uf'] == $uf_opt) ? 'selected' : '';
echo "<option value=\"$uf_opt\" $selected>$uf_opt</option>";
} ?>
</select>
<div class="invalid-feedback"><?php echo htmlspecialchars($erros_validacao['uf'] ?? ''); ?></div>
</div>
<div class="col-12 mb-3">
<label for="pontoreferencia" class="form-label">Ponto de Referência</label>
<input type="text" class="form-control" id="pontoreferencia" name="pontoreferencia" value="<?php echo htmlspecialchars($form_data['ponto_referencia'] ?? ''); ?>">
</div>
<div class="form-section-card"> <?php // Ou adicione dentro de uma seção existente
?>
<legend>Informações Adicionais</legend>
<div class="mb-3">
<label for="tipo_moradia" class="form-label">Tipo de moradia:</label>
<select class="form-select <?php echo (!empty($erros_validacao['tipo_moradia'])) ? 'is-invalid' : ''; ?>" id="tipo_moradia" name="tipo_moradia">
<?php
$opcoes_moradia = [
'' => '-- Selecione (Obrigatório) --', // Chave vazia IMPORTANTE
'Casa Própria' => 'Casa Própria',
'Casa Alugada' => 'Casa Alugada',
'Casa dos Pais' => 'Casa dos Pais',
'Imóvel de Terceiros' => 'Imóvel de Terceiros',
'Prefiro não responder' => 'Prefiro não responder'
];
// Pega o valor submetido anteriormente (se houver erro e repopular) ou deixa vazio
$valor_selecionado_moradia = $form_data['tipo_moradia'] ?? '';
foreach ($opcoes_moradia as $valor => $texto): ?>
<option value="<?php echo htmlspecialchars($valor); ?>" <?php echo ($valor_selecionado_moradia === $valor) ? 'selected' : ''; ?>>
<?php echo htmlspecialchars($texto); ?>
</option>
<?php endforeach; ?>
</select>
<div class="invalid-feedback"><?php echo htmlspecialchars($erros_validacao['tipo_moradia'] ?? ''); ?></div>
</div>
</div>
</div>
</div>
<div class="form-section-card">
<legend>Plano e Vencimento</legend>
<div class="row g-3">
<div class="col-md-7 mb-3">
<label for="plano_id" class="form-label">Plano Desejado <span class="text-danger">*</span></label>
<select class="form-select <?php echo (!empty($erros_validacao['plano_id'])) ? 'is-invalid' : ''; ?>" id="plano_id" name="plano_id" required <?php echo empty($lista_planos_disponiveis) ? 'disabled' : ''; ?>>
<option value="">-- <?php echo empty($lista_planos_disponiveis) ? 'Erro' : 'Selecione'; ?> --</option>
<?php foreach ($lista_planos_disponiveis as $plano):
$planoId = $plano['id'] ?? null;
$planoDesc = $plano['descricao'] ?? 'Inválido';
$planoValor = $plano['valor'] ?? null;
if ($planoId && $planoDesc != 'Inválido'):
$textoOpt = htmlspecialchars($planoDesc);
if ($planoValor) $textoOpt .= " - R$ " . number_format($planoValor, 2, ',', '.'); ?>
<option value="<?php echo htmlspecialchars($planoId); ?>" <?php echo (isset($form_data['plano_id_selecionado']) && $form_data['plano_id_selecionado'] == $planoId) ? 'selected' : ''; ?>> <?php echo $textoOpt; ?> </option>
<?php endif;
endforeach; ?>
</select>
<div class="invalid-feedback"><?php echo htmlspecialchars($erros_validacao['plano_id'] ?? 'Selecione.'); ?></div>
</div>
<div class="col-md-5 mb-3">
<label for="vencimento_id" class="form-label">Vencimento <span class="text-danger">*</span></label>
<select class="form-select <?php echo (!empty($erros_validacao['vencimento_id'])) ? 'is-invalid' : ''; ?>" id="vencimento_id" name="vencimento_id" required <?php echo empty($lista_vencimentos_disponiveis) ? 'disabled' : ''; ?>>
<option value="">-- <?php echo empty($lista_vencimentos_disponiveis) ? 'Erro' : 'Selecione'; ?> --</option>
<?php foreach ($lista_vencimentos_disponiveis as $venc):
$vencId = $venc['id'] ?? null;
$vencDia = $venc['dia'] ?? '?';
if ($vencId !== null): ?>
<option value="<?php echo htmlspecialchars($vencId); ?>" <?php echo (isset($form_data['vencimento_id_selecionado']) && $form_data['vencimento_id_selecionado'] == $vencId) ? 'selected' : ''; ?>> Dia <?php echo htmlspecialchars($vencDia); ?> </option>
<?php endif;
endforeach; ?>
</select>
<div class="invalid-feedback"><?php echo htmlspecialchars($erros_validacao['vencimento_id'] ?? 'Selecione.'); ?></div>
</div>
</div>
</div>
<?php // TODO: Adicionar seções para Vendedor e Indicação se forem editáveis
?>
<div class="form-section-card">
<legend>Observações</legend>
<div class="mb-3">
<label for="observacao" class="form-label">Observações</label>
<textarea class="form-control <?php echo (!empty($erros_validacao['observacao'])) ? 'is-invalid' : ''; ?>" id="observacao" name="observacao" rows="4"><?php echo htmlspecialchars($form_data['observacao'] ?? ''); ?></textarea>
<div class="invalid-feedback"><?php echo htmlspecialchars($erros_validacao['observacao'] ?? ''); ?></div>
</div>
</div>
<?php // Botão Salvar
?>
<div class="mt-4 d-flex justify-content-end">
<a href="dashboard_precadastros.php" class="btn btn-secondary me-2">Cancelar</a>
<button type="submit" class="btn btn-primary">Salvar Alterações</button>
</div>
</form>
<?php elseif (!$mensagem_erro) : // Se $id_edicao era válido mas $form_data está vazio (erro na busca)
?>
<div class="alert alert-warning">Não foi possível carregar os dados para edição.</div>
<a href="dashboard_precadastros.php" class="btn btn-secondary">Voltar ao Dashboard</a>
<?php else: ?>
<a href="dashboard_precadastros.php" class="btn btn-secondary">Voltar ao Dashboard</a>
<?php endif; ?>
</div>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js"></script>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script src="../js/custom.js"></script> <?php // Adapte o custom.js para funcionar na edição
?>
</body>
</html>