Refactor Informacion component to use fetched data for concerts and seats, and optimize category filtering logic

This commit is contained in:
SirRobert-1 2025-03-10 07:40:29 -06:00
parent 53b6041973
commit bc2b125ac2
1 changed files with 10 additions and 19 deletions
ventaboletos/src/components/vistas

View File

@ -34,7 +34,7 @@ function Informacion() {
if (error) { if (error) {
console.error(error); console.error(error);
} else { } else {
setConciertos(conciertos); setConciertos(data);
} }
}; };
@ -45,21 +45,11 @@ function Informacion() {
if (error) { if (error) {
console.error(error); console.error(error);
} else { } else {
setNumeroAsiento(asientos); const uniqueCategories = [
} ...new Set(data.map((asiento) => asiento.categoria)),
}; ];
const fetchTipoAsiento = async () => {
let { data: asientos, error } = await supabaseClient
.from("asientos")
.select("categoria");
if (error) {
console.error(error);
} else {
const uniqueCategories = asientos
.map((asiento) => asiento.categoria)
.filter((value, index, self) => self.indexOf(value) === index);
setTipoAsiento(uniqueCategories); setTipoAsiento(uniqueCategories);
setNumeroAsiento(data);
} }
}; };
@ -70,12 +60,9 @@ function Informacion() {
const handleCategoriaChange = (categoria) => { const handleCategoriaChange = (categoria) => {
setSelectedCategoria(categoria); setSelectedCategoria(categoria);
setAsientoSeleccionado("");
}; };
const filteredAsientos = numeroAsiento
.filter((asiento) => asiento.categoria === selectedCategoria)
.sort((a, b) => a.numero_asiento - b.numero_asiento);
const handleAgregarAlCarrito = () => { const handleAgregarAlCarrito = () => {
if (!selectedConcierto || !asientoSeleccionado) { if (!selectedConcierto || !asientoSeleccionado) {
alert("Selecciona un tipo de asiento antes de continuar."); alert("Selecciona un tipo de asiento antes de continuar.");
@ -92,6 +79,10 @@ function Informacion() {
setOpen(false); setOpen(false);
}; };
const filteredAsientos = numeroAsiento
.filter((asiento) => asiento.categoria === selectedCategoria)
.sort((a, b) => a.numero_asiento - b.numero_asiento);
return ( return (
<> <>
<div className="space-y-4"> <div className="space-y-4">