/* Sahkey Imóveis — painel administrativo de demonstração (CRUD de anúncios) */ const form = document.getElementById("form-anuncio"); const btnCancelar = document.getElementById("btn-cancelar"); const btnSalvar = document.getElementById("btn-salvar"); function lerFormulario() { return { tipo_negocio: document.getElementById("a-tipo-negocio").value, tipo_imovel: document.getElementById("a-tipo-imovel").value, titulo: document.getElementById("a-titulo").value, descricao: document.getElementById("a-descricao").value, endereco: document.getElementById("a-endereco").value, bairro: document.getElementById("a-bairro").value, cidade: document.getElementById("a-cidade").value, estado: document.getElementById("a-estado").value, cep: document.getElementById("a-cep").value, preco: Number(document.getElementById("a-preco").value || 0), condominio: Number(document.getElementById("a-condominio").value || 0), iptu: Number(document.getElementById("a-iptu").value || 0), area_util: Number(document.getElementById("a-area-util").value || 0), area_total: Number(document.getElementById("a-area-total").value || 0), quartos: Number(document.getElementById("a-quartos").value || 0), suites: Number(document.getElementById("a-suites").value || 0), banheiros: Number(document.getElementById("a-banheiros").value || 0), vagas_garagem: Number(document.getElementById("a-vagas").value || 0), status: document.getElementById("a-status").value, destaque: document.getElementById("a-destaque").checked, corretor_responsavel: document.getElementById("a-corretor").value, telefone_contato: document.getElementById("a-telefone").value, fotos: "", }; } function preencherFormulario(a) { document.getElementById("a-id").value = a.id; document.getElementById("a-tipo-negocio").value = a.tipo_negocio; document.getElementById("a-tipo-imovel").value = a.tipo_imovel; document.getElementById("a-titulo").value = a.titulo; document.getElementById("a-descricao").value = a.descricao || ""; document.getElementById("a-endereco").value = a.endereco || ""; document.getElementById("a-bairro").value = a.bairro || ""; document.getElementById("a-cidade").value = a.cidade; document.getElementById("a-estado").value = a.estado; document.getElementById("a-cep").value = a.cep || ""; document.getElementById("a-preco").value = a.preco; document.getElementById("a-condominio").value = a.condominio || 0; document.getElementById("a-iptu").value = a.iptu || 0; document.getElementById("a-area-util").value = a.area_util || 0; document.getElementById("a-area-total").value = a.area_total || 0; document.getElementById("a-quartos").value = a.quartos || 0; document.getElementById("a-suites").value = a.suites || 0; document.getElementById("a-banheiros").value = a.banheiros || 0; document.getElementById("a-vagas").value = a.vagas_garagem || 0; document.getElementById("a-status").value = a.status; document.getElementById("a-destaque").checked = !!a.destaque; document.getElementById("a-corretor").value = a.corretor_responsavel || ""; document.getElementById("a-telefone").value = a.telefone_contato || ""; btnSalvar.textContent = `Atualizar anúncio #${a.id}`; btnCancelar.style.display = ""; form.scrollIntoView({ behavior: "smooth" }); } function limparFormulario() { form.reset(); document.getElementById("a-id").value = ""; document.getElementById("a-estado").value = "PR"; btnSalvar.textContent = "Salvar anúncio"; btnCancelar.style.display = "none"; } async function carregarLista() { const tbody = document.getElementById("admin-tbody"); tbody.innerHTML = `Carregando anúncios…`; try { const data = await apiGet("/", { limit: 200, ordenar_por: "mais_recentes" }); document.getElementById("admin-total").textContent = `${data.total} anúncio(s) na base`; if (!data.resultados.length) { tbody.innerHTML = `Nenhum anúncio cadastrado ainda.`; return; } tbody.innerHTML = data.resultados.map((a) => ` #${a.id} ${escapeHtml(a.titulo)} ${a.tipo_negocio} ${escapeHtml(a.cidade)} ${formatMoney(a.preco, a.tipo_negocio).replace(/<[^>]+>/g, "")} ${a.status} `).join(""); } catch (err) { tbody.innerHTML = `Erro ao carregar: ${escapeHtml(err.message)}`; } } document.getElementById("admin-tbody").addEventListener("click", async (e) => { const btn = e.target.closest("button[data-acao]"); if (!btn) return; const id = btn.dataset.id; if (btn.dataset.acao === "ver") { window.open(`imovel.html?id=${id}`, "_blank"); return; } if (btn.dataset.acao === "editar") { try { const a = await apiGet(`/${id}`); preencherFormulario(a); } catch (err) { toast(err.message, true); } return; } if (btn.dataset.acao === "excluir") { if (!confirm(`Excluir o anúncio #${id}? Essa ação não pode ser desfeita.`)) return; try { await apiSend("DELETE", `/${id}`); toast(`Anúncio #${id} removido.`); carregarLista(); } catch (err) { toast(err.message, true); } } }); form.addEventListener("submit", async (e) => { e.preventDefault(); const id = document.getElementById("a-id").value; const payload = lerFormulario(); btnSalvar.disabled = true; try { if (id) { await apiSend("PUT", `/${id}`, payload); toast(`Anúncio #${id} atualizado.`); } else { const criado = await apiSend("POST", "/", payload); toast(`Anúncio #${criado.id} criado.`); } limparFormulario(); carregarLista(); } catch (err) { toast(err.message, true); } finally { btnSalvar.disabled = false; } }); btnCancelar.addEventListener("click", limparFormulario); document.addEventListener("DOMContentLoaded", carregarLista);