fix/neighborhood

This commit is contained in:
João Gustavo 2025-11-13 17:04:27 -03:00
parent 82ac502553
commit 72898a48ff

View File

@ -53,7 +53,6 @@ export default function ResultadosClient() {
// Filtros/controles da UI - initialize with defaults to avoid hydration mismatch // Filtros/controles da UI - initialize with defaults to avoid hydration mismatch
const [tipoConsulta, setTipoConsulta] = useState<TipoConsulta>('teleconsulta') const [tipoConsulta, setTipoConsulta] = useState<TipoConsulta>('teleconsulta')
const [especialidadeHero, setEspecialidadeHero] = useState<string>('Psicólogo') const [especialidadeHero, setEspecialidadeHero] = useState<string>('Psicólogo')
const [convenio, setConvenio] = useState<string>('Todos')
const [bairro, setBairro] = useState<string>('Todos') const [bairro, setBairro] = useState<string>('Todos')
// Busca por nome do médico // Busca por nome do médico
const [searchQuery, setSearchQuery] = useState<string>('') const [searchQuery, setSearchQuery] = useState<string>('')
@ -649,11 +648,27 @@ export default function ResultadosClient() {
} }
} }
// Filtro visual (convenio/bairro são cosméticos; quando sem dado, mantemos tudo) // Extrair bairros únicos dos médicos
const bairrosDisponiveis = useMemo(() => {
const neighborhoods = new Set<string>();
(medicos || []).forEach((m: any) => {
if (m.neighborhood) {
neighborhoods.add(String(m.neighborhood))
}
})
return Array.from(neighborhoods).sort()
}, [medicos])
// Filtro visual (bairro é o único filtro; quando sem dado, mantemos tudo)
const profissionais = useMemo(() => { const profissionais = useMemo(() => {
let filtered = (medicos || []).filter((m: any) => { let filtered = (medicos || []).filter((m: any) => {
if (convenio !== 'Todos' && m.convenios && !m.convenios.includes(convenio)) return false // Se um bairro específico foi selecionado, filtrar rigorosamente
if (bairro !== 'Todos' && m.neighborhood && String(m.neighborhood).toLowerCase() !== String(bairro).toLowerCase()) return false if (bairro !== 'Todos') {
// Se o médico não tem neighborhood, não incluir
if (!m.neighborhood) return false
// Se tem neighborhood, deve corresponder ao filtro
if (String(m.neighborhood).toLowerCase() !== String(bairro).toLowerCase()) return false
}
return true return true
}) })
@ -668,7 +683,7 @@ export default function ResultadosClient() {
} }
return filtered return filtered
}, [medicos, convenio, bairro, medicoFiltro]) }, [medicos, bairro, medicoFiltro])
// Paginação local para a lista de médicos // Paginação local para a lista de médicos
const [currentPage, setCurrentPage] = useState(1) const [currentPage, setCurrentPage] = useState(1)
@ -824,23 +839,6 @@ export default function ResultadosClient() {
{/* divider visual */} {/* divider visual */}
<div className="sm:col-span-12 h-px bg-border/60 my-1" /> <div className="sm:col-span-12 h-px bg-border/60 my-1" />
{/* Convênio */}
<div className="sm:col-span-6 lg:col-span-4">
<Select value={convenio} onValueChange={setConvenio}>
<SelectTrigger className="h-10 w-full rounded-full border border-primary/30 bg-primary/5 text-primary hover:border-primary focus:ring-2 focus:ring-primary">
<SelectValue placeholder="Convênio" />
</SelectTrigger>
<SelectContent>
<SelectItem value="Todos">Todos os convênios</SelectItem>
<SelectItem value="Amil">Amil</SelectItem>
<SelectItem value="Unimed">Unimed</SelectItem>
<SelectItem value="SulAmérica">SulAmérica</SelectItem>
<SelectItem value="Bradesco Saúde">Bradesco Saúde</SelectItem>
<SelectItem value="Particular">Particular</SelectItem>
</SelectContent>
</Select>
</div>
{/* Bairro */} {/* Bairro */}
<div className="sm:col-span-6 lg:col-span-4"> <div className="sm:col-span-6 lg:col-span-4">
<Select value={bairro} onValueChange={setBairro}> <Select value={bairro} onValueChange={setBairro}>
@ -849,9 +847,11 @@ export default function ResultadosClient() {
</SelectTrigger> </SelectTrigger>
<SelectContent> <SelectContent>
<SelectItem value="Todos">Todos os bairros</SelectItem> <SelectItem value="Todos">Todos os bairros</SelectItem>
<SelectItem value="Centro">Centro</SelectItem> {bairrosDisponiveis.map((b: string) => (
<SelectItem value="Jardins">Jardins</SelectItem> <SelectItem key={b} value={b}>
<SelectItem value="Farolândia">Farolândia</SelectItem> {b}
</SelectItem>
))}
</SelectContent> </SelectContent>
</Select> </Select>
</div> </div>