Skip to content

Commit e06e6f4

Browse files
authored
Update obrigado.html
1 parent 56d26cc commit e06e6f4

File tree

1 file changed

+95
-79
lines changed

1 file changed

+95
-79
lines changed

obrigado.html

Lines changed: 95 additions & 79 deletions
Original file line numberDiff line numberDiff line change
@@ -288,16 +288,6 @@ <h3>🔒 Seu voto é 100% Auditável</h3>
288288
</div>
289289

290290
<script>
291-
// ==============================
292-
// DEBUG - MOSTRAR INFORMAÇÕES (remover depois)
293-
// ==============================
294-
function debugInfo(msg) {
295-
const debugDiv = document.getElementById("debugInfo");
296-
debugDiv.style.display = "block";
297-
debugDiv.innerHTML += msg + "<br>";
298-
console.log("🔍 DEBUG:", msg);
299-
}
300-
301291
// ==============================
302292
// BLOQUEIO TOTAL DE NAVEGAÇÃO
303293
// ==============================
@@ -324,50 +314,42 @@ <h3>🔒 Seu voto é 100% Auditável</h3>
324314
// CARREGAR DADOS DO VOTO - CORRIGIDO
325315
// ==============================
326316
async function carregarDadosVoto() {
327-
debugInfo("🚀 INICIANDO CARREGAMENTO...");
317+
console.log("🚀 INICIANDO CARREGAMENTO...");
328318

329319
const db = new PouchDB('terra_dourada_votos_local');
330320
const dbCandidatos = new PouchDB('terra_dourada_candidatos');
331321

332322
try {
333-
// DEBUG: Mostra todos os candidatos do banco
334-
const todosCandidatos = await dbCandidatos.allDocs({ include_docs: true });
335-
debugInfo("====== TODOS OS CANDIDATOS NO BANCO ======");
336-
todosCandidatos.rows.forEach(candidato => {
337-
debugInfo(`📋 ${candidato.doc._id}: ${candidato.doc.nome} - Foto: ${candidato.doc.foto || 'NÃO'}`);
338-
});
339-
debugInfo("===========================================");
340-
341323
// 1. PRIMEIRO: Tenta pegar do localStorage (mais rápido)
342324
const candidatoIdLocal = localStorage.getItem("voto_candidato");
343325
const cidPinataLocal = localStorage.getItem("voto_cid");
344326

345-
debugInfo("📱 LocalStorage - candidatoId: " + candidatoIdLocal);
346-
debugInfo("📱 LocalStorage - cidPinata: " + cidPinataLocal);
327+
console.log("📱 LocalStorage - candidatoId:", candidatoIdLocal);
328+
console.log("📱 LocalStorage - cidPinata:", cidPinataLocal);
347329

348330
if (candidatoIdLocal && candidatoIdLocal !== "branco") {
349-
debugInfo("✅ Usando dados do LocalStorage");
331+
console.log("✅ Usando dados do LocalStorage");
350332
await carregarCandidatoPorId(candidatoIdLocal, !!cidPinataLocal, cidPinataLocal);
351333
return;
352334
}
353335

354336
// 2. SEGUNDO: Se não tem no localStorage, busca no banco
355-
debugInfo("🔍 Buscando no banco de dados...");
337+
console.log("🔍 Buscando no banco de dados...");
356338
const cid = localStorage.getItem("user_cid");
357339

358340
if (!cid) {
359341
throw new Error("CID do usuário não encontrado");
360342
}
361343

362344
const allDocs = await db.allDocs({ include_docs: true });
363-
debugInfo("📊 Total de documentos no DB: " + allDocs.rows.length);
345+
console.log("📊 Total de documentos no DB:", allDocs.rows.length);
364346

365347
// Filtra votos deste usuário
366348
const votosUsuario = allDocs.rows.filter(row =>
367349
row.doc.eleitor === cid && row.doc.candidato_id
368350
);
369351

370-
debugInfo("🗳️ Votos deste usuário: " + votosUsuario.length);
352+
console.log("🗳️ Votos deste usuário:", votosUsuario.length);
371353

372354
if (votosUsuario.length > 0) {
373355
// Pega o voto mais recente
@@ -380,9 +362,9 @@ <h3>🔒 Seu voto é 100% Auditável</h3>
380362
const cidPinata = dadosVoto.cid_pinata;
381363
const candidatoId = dadosVoto.candidato_id;
382364

383-
debugInfo("✅ Último voto - candidatoId: " + candidatoId);
384-
debugInfo("✅ Último voto - usouBackend: " + usouBackend);
385-
debugInfo("✅ Último voto - cidPinata: " + cidPinata);
365+
console.log("✅ Último voto - candidatoId:", candidatoId);
366+
console.log("✅ Último voto - usouBackend:", usouBackend);
367+
console.log("✅ Último voto - cidPinata:", cidPinata);
386368

387369
// Salva no localStorage para próxima vez
388370
if (candidatoId && candidatoId !== "branco") {
@@ -399,7 +381,7 @@ <h3>🔒 Seu voto é 100% Auditável</h3>
399381
}
400382

401383
} catch (error) {
402-
debugInfo("❌ ERRO: " + error.message);
384+
console.error("❌ ERRO:", error.message);
403385

404386
// Fallback completo
405387
document.getElementById("fotoContainer").innerHTML = '<div class="foto-vazia">✓</div>';
@@ -412,53 +394,53 @@ <h3>🔒 Seu voto é 100% Auditável</h3>
412394
}
413395

414396
// ==============================
415-
// CARREGAR CANDIDATO POR ID - BUSCANDO FOTO DO CADASTRO
397+
// CARREGAR CANDIDATO POR ID - BUSCANDO FOTO DO CADASTRO (CORRIGIDO)
416398
// ==============================
417399
async function carregarCandidatoPorId(candidatoId, usouBackend, cidPinata, dadosVoto = null) {
418-
debugInfo("👤 Buscando candidato ID: " + candidatoId);
400+
console.log("👤 Buscando candidato ID:", candidatoId);
419401

420402
const dbCandidatos = new PouchDB('terra_dourada_candidatos');
421403

422404
try {
423-
// Busca TODOS os candidatos
424-
const candidatosResult = await dbCandidatos.allDocs({ include_docs: true });
425-
debugInfo("📋 Total de candidatos no DB: " + candidatosResult.rows.length);
426-
427-
// ⭐⭐ CORREÇÃO: Mostra todos os candidatos para debug
428-
candidatosResult.rows.forEach(row => {
429-
debugInfo("📝 Candidato no DB: " + row.doc._id + " - " + row.doc.nome + " - Foto: " + (row.doc.foto ? "SIM" : "NÃO"));
430-
});
431-
432-
// Procura o candidato pelo ID
433-
const candidatoEncontrado = candidatosResult.rows.find(row => row.doc._id === candidatoId);
405+
// ⭐⭐ CORREÇÃO: Busca o candidato DIRETAMENTE pelo ID
406+
let candidato;
434407

435-
if (candidatoEncontrado) {
436-
const candidato = candidatoEncontrado.doc;
437-
debugInfo("🎯 Candidato encontrado: " + candidato.nome);
438-
debugInfo("🎯 Foto do candidato: " + (candidato.foto ? candidato.foto : "NÃO TEM FOTO"));
408+
try {
409+
// Tenta buscar pelo ID exato primeiro (mais eficiente)
410+
candidato = await dbCandidatos.get(candidatoId);
411+
console.log("✅ Candidato encontrado via get():", candidato.nome);
412+
console.log("📸 Foto via get():", candidato.foto ? "Base64 presente" : "NÃO TEM FOTO");
439413

440-
// ⭐⭐ CORREÇÃO: Passa o candidato COMPLETO (com foto) para a interface
441-
atualizarInterfaceCandidato(candidato, usouBackend, cidPinata, dadosVoto);
442-
} else {
443-
debugInfo("❌ Candidato não encontrado no DB, usando fallback");
414+
} catch (getError) {
415+
console.log("⚠️ Não encontrado via get(), buscando em allDocs...");
444416

445-
// Fallback: usa dados do voto se disponível
446-
const candidatoFallback = {
447-
_id: candidatoId,
448-
nome: dadosVoto?.candidato_nome || "Candidato Escolhido",
449-
foto: null, // ⭐⭐ Não tem foto no fallback
450-
partido: dadosVoto?.candidato_partido || ""
451-
};
417+
// Fallback: busca em todos os documentos
418+
const todosCandidatos = await dbCandidatos.allDocs({ include_docs: true });
419+
const candidatoEncontrado = todosCandidatos.rows.find(row => row.id === candidatoId);
452420

453-
atualizarInterfaceCandidato(candidatoFallback, usouBackend, cidPinata, dadosVoto);
421+
if (candidatoEncontrado) {
422+
candidato = candidatoEncontrado.doc;
423+
console.log("✅ Candidato encontrado via allDocs():", candidato.nome);
424+
console.log("📸 Foto via allDocs():", candidato.foto ? "Base64 presente" : "NÃO TEM FOTO");
425+
} else {
426+
throw new Error("Candidato não encontrado em allDocs");
427+
}
428+
}
429+
430+
// ⭐⭐ CORREÇÃO: Verifica se a foto é Base64 válida
431+
if (candidato.foto && !candidato.foto.startsWith('data:image')) {
432+
console.warn("⚠️ Foto não é Base64 válida:", candidato.foto.substring(0, 50) + "...");
454433
}
434+
435+
atualizarInterfaceCandidato(candidato, usouBackend, cidPinata, dadosVoto);
436+
455437
} catch (error) {
456-
debugInfo("❌ Erro ao buscar candidato: " + error.message);
438+
console.error("❌ Erro ao buscar candidato:", error.message);
457439

458-
// Fallback de emergência
440+
// Fallback: usa dados do voto se disponível
459441
const candidatoFallback = {
460442
_id: candidatoId,
461-
nome: "Seu Candidato",
443+
nome: dadosVoto?.candidato_nome || "Candidato Escolhido",
462444
foto: null
463445
};
464446

@@ -467,54 +449,54 @@ <h3>🔒 Seu voto é 100% Auditável</h3>
467449
}
468450

469451
// ==============================
470-
// ATUALIZAR INTERFACE - CARREGANDO FOTO DO CANDIDATO
452+
// ATUALIZAR INTERFACE - CARREGANDO FOTO DO CANDIDATO (CORRIGIDO)
471453
// ==============================
472454
function atualizarInterfaceCandidato(candidato, usouBackend, cidPinata, dadosVoto) {
473455
const fotoContainer = document.getElementById("fotoContainer");
474456
const nomeElement = document.getElementById("nome");
475457
const statusElement = document.getElementById("statusVoto");
476458

477-
debugInfo("🎨 Atualizando interface: " + candidato.nome);
478-
debugInfo("🖼️ Foto disponível: " + (candidato.foto ? candidato.foto : "NÃO"));
459+
console.log("🎨 Atualizando interface:", candidato.nome);
460+
console.log("🖼️ Foto disponível:", !!candidato.foto);
479461

480462
// Atualiza nome
481463
nomeElement.textContent = candidato.nome;
482464

483465
// ⭐⭐ CORREÇÃO: Carrega a foto do candidato se existir
484-
if (candidato.foto) {
485-
debugInfo("📸 Tentando carregar foto do candidato...");
466+
if (candidato.foto && candidato.foto.startsWith('data:image')) {
467+
console.log("📸 Carregando foto Base64 do candidato...");
468+
469+
// Mostra loading enquanto a imagem carrega
470+
fotoContainer.innerHTML = '<div class="foto-vazia" style="color: #d4af37;">⏳</div>';
486471

487472
const img = new Image();
488473
img.className = "foto-candidato";
489474
img.alt = candidato.nome;
490475

491-
// Usa a foto original do cadastro do candidato
476+
// ⭐⭐ CORREÇÃO: Usa a foto Base64 diretamente
492477
img.src = candidato.foto;
493478

494479
img.onload = function() {
495-
debugInfo("✅ Foto do candidato carregada com sucesso!");
480+
console.log("✅ Foto do candidato carregada com sucesso!");
496481
fotoContainer.innerHTML = '';
497482
fotoContainer.appendChild(img);
498483
};
499484

500485
img.onerror = function() {
501-
debugInfo("❌ Erro ao carregar foto do candidato, usando ícone");
502-
// Se a foto não carregar, usa ícone baseado no tipo de voto
503-
if (candidato._id === "branco" || candidato.nome.includes("BRANCO")) {
486+
console.log("❌ Erro ao carregar foto do candidato, usando ícone");
487+
// Fallback para ícone
488+
if (candidato._id === "branco" || candidato.nome.toUpperCase().includes("BRANCO")) {
504489
fotoContainer.innerHTML = '<div class="foto-vazia">⚪</div>';
505490
} else {
506491
fotoContainer.innerHTML = '<div class="foto-vazia">👤</div>';
507492
}
508493
};
509494

510-
// Coloca a imagem imediatamente
511-
fotoContainer.innerHTML = '';
512-
fotoContainer.appendChild(img);
513-
514495
} else {
515-
debugInfo("📷 Candidato não tem foto cadastrada");
516-
// Candidato sem foto - usa ícone
517-
if (candidato._id === "branco" || candidato.nome.includes("BRANCO")) {
496+
console.log("📷 Candidato não tem foto Base64 válida:", candidato.foto ? "Tem campo mas não é Base64" : "Campo vazio");
497+
498+
// Candidato sem foto - usa ícone baseado no tipo
499+
if (candidato._id === "branco" || (candidato.nome && candidato.nome.toUpperCase().includes("BRANCO"))) {
518500
fotoContainer.innerHTML = '<div class="foto-vazia">⚪</div>';
519501
} else {
520502
fotoContainer.innerHTML = '<div class="foto-vazia">👤</div>';
@@ -533,6 +515,9 @@ <h3>🔒 Seu voto é 100% Auditável</h3>
533515
atualizarBotaoComprovante(usouBackend, cidPinata);
534516
}
535517

518+
// ==============================
519+
// ATUALIZAR BOTÃO DE COMPROVANTE
520+
// ==============================
536521
function atualizarBotaoComprovante(usouBackend, cidPinata) {
537522
const provaBtn = document.getElementById("provaBtn");
538523
const tooltipText = document.getElementById("tooltipText");
@@ -556,17 +541,48 @@ <h3>🔒 Seu voto é 100% Auditável</h3>
556541
}
557542
}
558543

544+
// ==============================
545+
// SAIR DO SISTEMA
546+
// ==============================
559547
function sairDoSistema() {
560548
localStorage.removeItem("voto_cid");
561549
localStorage.removeItem("voto_candidato");
562550
window.location.href = "index.html";
563551
}
564552

553+
// ==============================
554+
// DIAGNÓSTICO TEMPORÁRIO (REMOVER DEPOIS)
555+
// ==============================
556+
async function diagnosticoCompleto() {
557+
try {
558+
const dbCandidatos = new PouchDB('terra_dourada_candidatos');
559+
const todos = await dbCandidatos.allDocs({ include_docs: true });
560+
561+
console.log("====== DIAGNÓSTICO COMPLETO DOS CANDIDATOS ======");
562+
todos.rows.forEach(row => {
563+
const doc = row.doc;
564+
console.log(`📋 ${doc.nome} (${doc._id})`, {
565+
temFoto: !!doc.foto,
566+
tipoFoto: doc.foto ? (doc.foto.startsWith('data:image') ? 'Base64 Válida' : 'Formato Inválido') : 'NULL',
567+
previewFoto: doc.foto ? doc.foto.substring(0, 30) + '...' : 'N/A'
568+
});
569+
});
570+
console.log("=================================================");
571+
} catch (error) {
572+
console.error("Erro no diagnóstico:", error);
573+
}
574+
}
575+
565576
// ==============================
566577
// INICIALIZAÇÃO
567578
// ==============================
568579
document.addEventListener('DOMContentLoaded', function() {
569-
debugInfo("📄 Página carregada - iniciando...");
580+
console.log("📄 Página carregada - iniciando...");
581+
582+
// Executa diagnóstico temporário
583+
diagnosticoCompleto();
584+
585+
// Carrega dados do voto
570586
carregarDadosVoto();
571587

572588
window.onbeforeunload = function() {

0 commit comments

Comments
 (0)