Captações Recentes
{captures.length} imóveis cadastradosNenhuma captação encontrada.
{cap.bairro}, {cap.cidade}
R$ {cap.valor}
import React, { useState, useEffect } from 'react'; import { initializeApp } from 'firebase/app'; import { getAuth, signInAnonymously, onAuthStateChanged } from 'firebase/auth'; import { getFirestore, collection, addDoc, onSnapshot, query, timestamp } from 'firebase/firestore'; import { User, Home, MapPin, DollarSign, FileText, CheckCircle2, LogOut, Plus, List, Calendar, Phone, LayoutDashboard, ShieldCheck } from 'lucide-react'; // Configuração Firebase (Injetada pelo ambiente) const firebaseConfig = JSON.parse(__firebase_config); const app = initializeApp(firebaseConfig); const auth = getAuth(app); const db = getFirestore(app); const appId = typeof __app_id !== 'undefined' ? __app_id : 'master-imoveis-captacao'; const BROKERS = ["Douglas", "Adair", "Wilian", "José Wilton", "Aline"]; const PROPERTY_TYPES = ["Casa", "Apartamento", "Lote", "Chácara", "Ponto comercial", "Outro"]; const PAYMENT_METHODS = ["À vista", "Entrada + parcelamento", "Financiamento bancário", "Aceita veículo"]; export default function App() { const [user, setUser] = useState(null); const [password, setPassword] = useState(''); const [loginError, setLoginError] = useState(''); const [view, setView] = useState('form'); // 'form' ou 'list' const [captures, setCaptures] = useState([]); const [loading, setLoading] = useState(false); const [successMsg, setSuccessMsg] = useState(''); // Estado do Formulário const [formData, setFormData] = useState({ corretor: '', dataCaptacao: new Date().toISOString().split('T')[0], exclusividade: 'Não', anuncio: 'Sim', proprietarioNome: '', proprietarioContato: '', bairro: '', cidade: 'SJE', tipoImovel: 'Casa', medidaArea: '', finalidade: 'Venda', valor: '', condicoesPagamento: [], detalhes: '', marketingResponsavel: '', periodoRepost: '30' }); // 1. Autenticação (Regra 3) useEffect(() => { const initAuth = async () => { // Usaremos uma senha simples para o "Login" simulando acesso restrito // Na prática, o Firebase Auth gerencia a sessão. }; initAuth(); const unsubscribe = onAuthStateChanged(auth, setUser); return () => unsubscribe(); }, []); // 2. Busca de dados (Regra 2) useEffect(() => { if (!user) return; const q = collection(db, 'artifacts', appId, 'public', 'data', 'captures'); const unsubscribe = onSnapshot(q, (snapshot) => { const data = snapshot.docs.map(doc => ({ id: doc.id, ...doc.data() })); setCaptures(data); }, (err) => console.error("Erro ao buscar:", err)); return () => unsubscribe(); }, [user]); const handleLogin = async (e) => { e.preventDefault(); if (password === '1234') { // Senha simples definida para o sistema try { await signInAnonymously(auth); } catch (err) { setLoginError("Erro ao conectar ao servidor."); } } else { setLoginError("Senha incorreta."); } }; const handleTogglePayment = (method) => { setFormData(prev => ({ ...prev, condicoesPagamento: prev.condicoesPagamento.includes(method) ? prev.condicoesPagamento.filter(m => m !== method) : [...prev.condicoesPagamento, method] })); }; const handleSubmit = async (e) => { e.preventDefault(); if (!user) return; setLoading(true); try { await addDoc(collection(db, 'artifacts', appId, 'public', 'data', 'captures'), { ...formData, createdAt: new Date().toISOString(), userId: user.uid }); setSuccessMsg("Captação salva com sucesso!"); setTimeout(() => setSuccessMsg(''), 3000); setFormData({ ...formData, proprietarioNome: '', proprietarioContato: '', bairro: '', medidaArea: '', valor: '', detalhes: '', condicoesPagamento: [] }); } catch (err) { console.error(err); } finally { setLoading(false); } }; if (!user) { return (
Sistema Interno de Captação
Nenhuma captação encontrada.
R$ {cap.valor}