diff --git a/src/app/casos-activos/ofertas/page.tsx b/src/app/casos-activos/ofertas/page.tsx index 6064a57..dbd314f 100644 --- a/src/app/casos-activos/ofertas/page.tsx +++ b/src/app/casos-activos/ofertas/page.tsx @@ -6,6 +6,7 @@ import Pagination from '@/components/Pagination'; import { tiposAyudaOptions } from '@/helpers/constants'; import { useRouter, useSearchParams } from 'next/navigation'; import OfferCard from '@/components/OfferCard'; +import { useTowns } from '@/context/TownProvider'; import { HelpRequestData } from '@/types/Requests'; export const dynamic = 'force-dynamic'; @@ -21,7 +22,7 @@ export default function OfertasPage() { function Ofertas() { const searchParams = useSearchParams(); const router = useRouter(); - const {} = router; + const { towns, isLoading: townsLoading, error: townsError } = useTowns(); const [loading, setLoading] = useState(true); const [error, setError] = useState(null); @@ -35,7 +36,7 @@ function Ofertas() { return Math.ceil(count / itemsPerPage) || 0; }; - const updateFilter = (filter: 'ayuda' | 'page', value: string | number) => { + const updateFilter = (filter: 'ayuda' | 'pueblo' | 'page', value: string | number) => { const params = new URLSearchParams(searchParams.toString()); params.set(filter, value.toString()); router.push(`?${params.toString()}`); @@ -43,9 +44,10 @@ function Ofertas() { const [filtroData, setFiltroData] = useState({ ayuda: searchParams.get('acepta') || 'todas', + pueblo: searchParams.get('pueblo') || 'todos', }); - const changeDataFilter = (type: 'ayuda', newFilter: string) => { + const changeDataFilter = (type: 'ayuda' | 'pueblo', newFilter: string) => { setFiltroData((prev) => ({ ...prev, [type]: newFilter, @@ -67,11 +69,16 @@ function Ofertas() { // Comenzamos la consulta const query = supabase.from('help_requests').select('*', { count: 'exact' }).eq('type', 'ofrece'); - // Solo agregar filtro si no es "todos" + // Solo agregar filtro de ayuda si no es "todos" if (filtroData.ayuda !== 'todas') { query.contains('help_type', [filtroData.ayuda]); } + // Solo agregar filtro de pueblo si no es "todos" + if (filtroData.pueblo !== 'todos') { + query.eq('town_id', filtroData.pueblo); // Filtra por el ID del pueblo + } + query.neq('status', 'finished'); // Ejecutar la consulta con paginaciĆ³n const { data, count, error } = await query @@ -112,12 +119,15 @@ function Ofertas() { ); } + const sortedTowns = towns.slice().sort((a, b) => (a.name ?? '').localeCompare(b.name ?? '')); // Organizamos de A-Z los nombres de los pueblos obtenidos. + return ( <> {/* FILTROS */}

Filtros

+ {/* Filtro de Ayuda */} + + {/* Filtro de Pueblo */} +
diff --git a/src/app/casos-activos/solicitudes/page.tsx b/src/app/casos-activos/solicitudes/page.tsx index 10e9b3e..de5a89c 100644 --- a/src/app/casos-activos/solicitudes/page.tsx +++ b/src/app/casos-activos/solicitudes/page.tsx @@ -149,6 +149,8 @@ function Solicitudes() { ); } + const sortedTowns = towns.slice().sort((a, b) => (a.name ?? '').localeCompare(b.name ?? '')); // Organizamos de A-Z los nombres de los pueblos obtenidos. + return ( <> {/* FILTROS */} @@ -186,7 +188,7 @@ function Solicitudes() { className="px-4 py-2 rounded-lg w-full border border-gray-300 focus:ring-2 focus:ring-blue-500 focus:border-blue-500 bg-white text-gray-900 shadow-sm" > - {towns.map((item) => ( + {sortedTowns.map((item) => (