From 1aa9f28cc628065d69c1ecb2debeeb5f3462ebc6 Mon Sep 17 00:00:00 2001
From: SirRobert-1 <rviverosgonzalez@gmail.com>
Date: Mon, 10 Mar 2025 07:54:08 -0600
Subject: [PATCH] Add search functionality to Informacion component and update
 concert filtering logic

---
 .../src/components/vistas/Informacion.jsx     | 24 ++++++++++++++++++-
 ventaboletos/src/pages/index.js               | 20 ++++++----------
 2 files changed, 30 insertions(+), 14 deletions(-)

diff --git a/ventaboletos/src/components/vistas/Informacion.jsx b/ventaboletos/src/components/vistas/Informacion.jsx
index 95ca5d7..7d6d061 100644
--- a/ventaboletos/src/components/vistas/Informacion.jsx
+++ b/ventaboletos/src/components/vistas/Informacion.jsx
@@ -14,21 +14,32 @@ import {
   SelectValue,
 } from "@/components/ui/select";
 import { Button } from "@/components/ui/button";
+import { Input } from "@/components/ui/input";
 
 function Informacion() {
   const [open, setOpen] = useState(false);
   const [conciertos, setConciertos] = useState([]);
+  const [filteredConciertos, setFilteredConciertos] = useState([]);
   const [selectedConcierto, setSelectedConcierto] = useState(null);
   const [tipoAsiento, setTipoAsiento] = useState([]);
   const [numeroAsiento, setNumeroAsiento] = useState([]);
   const [selectedCategoria, setSelectedCategoria] = useState("");
   const [asientoSeleccionado, setAsientoSeleccionado] = useState("");
+  const [searchTerm, setSearchTerm] = useState("");
 
   useEffect(() => {
     fetchConciertos();
     fetchAsientos();
   }, []);
 
+  useEffect(() => {
+    setFilteredConciertos(
+      conciertos.filter((concierto) =>
+        concierto.nombre.toLowerCase().includes(searchTerm.toLowerCase())
+      )
+    );
+  }, [searchTerm, conciertos]);
+
   const fetchConciertos = async () => {
     let { data, error } = await supabaseClient.from("conciertos").select("*");
     if (error) {
@@ -86,7 +97,18 @@ function Informacion() {
   return (
     <>
       <div className="space-y-4">
-        {conciertos.map((concierto) => (
+        <div className="w-full flex items-end">
+          <div className="flex">
+            <Input
+              placeholder="Búsqueda por nombre"
+              className="w-60"
+              value={searchTerm}
+              onChange={(e) => setSearchTerm(e.target.value)}
+            />
+            <img src="/search.jpg" alt="search" className="h-7 w-7" />
+          </div>
+        </div>
+        {filteredConciertos.map((concierto) => (
           <div
             key={concierto.id}
             className="flex items-center gap-4 p-4 border rounded-lg"
diff --git a/ventaboletos/src/pages/index.js b/ventaboletos/src/pages/index.js
index b1b4bb1..7c8948a 100644
--- a/ventaboletos/src/pages/index.js
+++ b/ventaboletos/src/pages/index.js
@@ -19,13 +19,13 @@ export default function ConcertList() {
       <div className="flex flex-col items-center w-[80%]">
         <Tabs defaultValue="account" className="w-full">
           <div className="w-full flex">
-          <TabsList className="grid w-full grid-cols-2">
-            <TabsTrigger value="info">Información</TabsTrigger>
-            <TabsTrigger value="reportes">Reportes</TabsTrigger>
-          </TabsList>
-          <Link href="/carrito">
-          <img src="/carrito.svg" alt="carrito" className="h-10 w-10"/>
-          </Link>
+            <TabsList className="grid w-full grid-cols-2">
+              <TabsTrigger value="info">Información</TabsTrigger>
+              <TabsTrigger value="reportes">Reportes</TabsTrigger>
+            </TabsList>
+            <Link href="/carrito">
+              <img src="/carrito.svg" alt="carrito" className="h-10 w-10" />
+            </Link>
           </div>
           <TabsContent value="info">
             <Card>
@@ -34,12 +34,6 @@ export default function ConcertList() {
                 <CardDescription></CardDescription>
               </CardHeader>
               <CardContent className="space-y-2">
-                <div className="w-full flex items-end">
-                  <div className="flex">
-                  <Input placeholder="Búsqueda por nombre" className="w-60"></Input>
-                  <img src="/search.jpg" alt="search" className="h-7 w-7"/>
-                  </div>
-                </div>
                 <Informacion />
               </CardContent>
               <CardFooter></CardFooter>