fix(resultados-client): mostrar apenas horários posteriores ao horário atual

This commit is contained in:
M-Gabrielly 2025-11-06 16:24:10 -03:00
parent 6611055211
commit b265b72f75

View File

@ -244,8 +244,12 @@ export default function ResultadosClient() {
} }
const onlyAvail = (res?.slots || []).filter((s: any) => s.available) const onlyAvail = (res?.slots || []).filter((s: any) => s.available)
const nowMs = Date.now()
for (const s of onlyAvail) { for (const s of onlyAvail) {
const dt = new Date(s.datetime) const dt = new Date(s.datetime)
const dtMs = dt.getTime()
// Filtrar: só mostrar horários que são posteriores ao horário atual
if (dtMs < nowMs) continue
const key = dt.toISOString().split('T')[0] const key = dt.toISOString().split('T')[0]
const bucket = days.find(d => d.dateKey === key) const bucket = days.find(d => d.dateKey === key)
if (!bucket) continue if (!bucket) continue
@ -260,7 +264,6 @@ export default function ResultadosClient() {
// compute nearest slot (earliest available in the returned window, but after now) // compute nearest slot (earliest available in the returned window, but after now)
let nearest: { iso: string; label: string } | null = null let nearest: { iso: string; label: string } | null = null
const nowMs = Date.now()
const allSlots = days.flatMap(d => d.horarios || []) const allSlots = days.flatMap(d => d.horarios || [])
const futureSorted = allSlots const futureSorted = allSlots
.map(s => ({ ...s, ms: new Date(s.iso).getTime() })) .map(s => ({ ...s, ms: new Date(s.iso).getTime() }))
@ -582,17 +585,24 @@ export default function ResultadosClient() {
}) })
const merged = Array.from(mergedMap.values()).sort((a:any,b:any) => new Date(a.datetime).getTime() - new Date(b.datetime).getTime()) const merged = Array.from(mergedMap.values()).sort((a:any,b:any) => new Date(a.datetime).getTime() - new Date(b.datetime).getTime())
const formatted = (merged || []).map((s:any) => ({ iso: s.datetime, label: new Date(s.datetime).toLocaleTimeString('pt-BR', { hour: '2-digit', minute: '2-digit' }) })) const nowMs = Date.now()
// Filtrar: só mostrar horários que são posteriores ao horário atual
const futureOnly = merged.filter((s: any) => new Date(s.datetime).getTime() >= nowMs)
const formatted = (futureOnly || []).map((s:any) => ({ iso: s.datetime, label: new Date(s.datetime).toLocaleTimeString('pt-BR', { hour: '2-digit', minute: '2-digit' }) }))
setMoreTimesSlots(formatted) setMoreTimesSlots(formatted)
return formatted return formatted
} else { } else {
const slots = (av.slots || []).map((s:any) => ({ iso: s.datetime, label: new Date(s.datetime).toLocaleTimeString('pt-BR', { hour: '2-digit', minute: '2-digit' }) })) const nowMs = Date.now()
// Filtrar: só mostrar horários que são posteriores ao horário atual
const slots = (av.slots || []).filter((s:any) => new Date(s.datetime).getTime() >= nowMs).map((s:any) => ({ iso: s.datetime, label: new Date(s.datetime).toLocaleTimeString('pt-BR', { hour: '2-digit', minute: '2-digit' }) }))
setMoreTimesSlots(slots) setMoreTimesSlots(slots)
return slots return slots
} }
} catch (e) { } catch (e) {
console.warn('[ResultadosClient] erro ao filtrar por disponibilidades', e) console.warn('[ResultadosClient] erro ao filtrar por disponibilidades', e)
const slots = (av.slots || []).map((s:any) => ({ iso: s.datetime, label: new Date(s.datetime).toLocaleTimeString('pt-BR', { hour: '2-digit', minute: '2-digit' }) })) const nowMs = Date.now()
// Filtrar: só mostrar horários que são posteriores ao horário atual
const slots = (av.slots || []).filter((s:any) => new Date(s.datetime).getTime() >= nowMs).map((s:any) => ({ iso: s.datetime, label: new Date(s.datetime).toLocaleTimeString('pt-BR', { hour: '2-digit', minute: '2-digit' }) }))
setMoreTimesSlots(slots) setMoreTimesSlots(slots)
return slots return slots
} }