diff --git a/src/app/(Operador)/escaner/page.tsx b/src/app/(Operador)/escaner/page.tsx index b9909e0..2105340 100644 --- a/src/app/(Operador)/escaner/page.tsx +++ b/src/app/(Operador)/escaner/page.tsx @@ -2,11 +2,12 @@ import { useState } from "react"; import { useRouter } from "next/navigation"; -import "../../styles/layout/escaner.scss"; import BarcodeScanner from "@/components/BarcodeScanner"; import axios from "axios"; import Image from "next/image"; import toast from "react-hot-toast"; +import Cookies from "js-cookie"; +import "../../styles/layout/escaner.scss"; export default function Page() { const router = useRouter(); @@ -17,12 +18,16 @@ export default function Page() { const buscarEquipo = async () => { if (!search) return toast.error("Ingresa un número de inventario"); + const token = Cookies.get("token"); + const headers = { Authorization: `Bearer ${token}` }; try { - const { data } = await axios.get(`${api_url}/equipos/${search}`); + const { data } = await axios.get(`${api_url}/equipos/buscar/${search}`, { + headers, + }); if (data) { - router.push(`/editar?equipoId=${data.id}`); + router.push(`/editar?equipoId=${data.inventario}`); } else { toast.error("Equipo no encontrado"); } @@ -35,14 +40,18 @@ export default function Page() { setIsScanning(false); if (!code) return; + const token = Cookies.get("token"); + const headers = { Authorization: `Bearer ${token}` }; try { - const { data } = await axios.get(`${api_url}/equipos/${code}`); + const { data } = await axios.get(`${api_url}/equipos/buscar/${code}`, { + headers, + }); if (data) { - router.push(`/editar?equipoId=${data.id}`); + router.push(`/editar?equipoId=${data.inventario}`); } else { - router.push(`/agregarEquipo?equipoId=${data.id}`); + router.push(`/agregarEquipo?equipoId=${data.inventario}`); } } catch (error) { toast.error("Error No se encontro el equipo"); diff --git a/src/components/AgregarEquipo.tsx b/src/components/AgregarEquipo.tsx index 9e94c70..40ab880 100644 --- a/src/components/AgregarEquipo.tsx +++ b/src/components/AgregarEquipo.tsx @@ -23,18 +23,17 @@ export default function Page() { serie: "", lugar: "", fechaFactura: new Date(), - antiguedad: "0 años", + antiguedad: "MENORES DE 2", modelo: "", - estado: "", - adscripcion: "", - tipoEquipo: "", - sistemaOperativo: "", - procesador: "", - tipoUso: "", - marca: "", - tipoPeriferico: "", - isImpresora: , - observaciones: "", + id_estado: "", + id_adscripcion: "", + id_tipo_equipo: "", + id_sistema_operativo: "", + id_procesador: "", + id_uso: "", + id_marca: "", + id_periferico: "", + isImpresora: false, }); useEffect(() => { @@ -99,7 +98,7 @@ export default function Page() { adscripcion: [] as string[], }); - const mostrarCamposComputadora = formData.tipoEquipo !== "PERIFÉRICO"; + const mostrarCamposComputadora = formData.id_tipo_equipo !== "9"; const api_url = process.env.NEXT_PUBLIC_API_URL; useEffect(() => { @@ -157,7 +156,7 @@ export default function Page() { const headers = { Authorization: `Bearer ${token}` }; const response = await axios.get( - `${api_url}/equipos/procesador-tipo-equipos/${formData.tipoEquipo}`, + `${api_url}/equipos/procesador-tipo-equipos/${formData.id_tipo_equipo}`, { headers, } @@ -170,7 +169,7 @@ export default function Page() { useEffect(() => { const fetchPerifericos = async () => { - if (formData.tipoEquipo !== "PERIFÉRICO") return; + if (formData.id_tipo_equipo !== "9") return; const token = Cookies.get("token"); const headers = { Authorization: `Bearer ${token}` }; @@ -187,32 +186,26 @@ export default function Page() { }; fetchPerifericos(); - }, [formData.tipoEquipo]); + }, [formData.id_tipo_equipo]); - const handleInputChange = (field: string, value: string) => { - setFormData((prev) => ({ ...prev, [field]: value })); + const handleInputChange = (field: string, value: any) => { + setFormData((prev) => { + let newValue = value; - if (field === "adscripcion") { - if (value.length < 3) { - setSuggestions((prev) => ({ ...prev, adscripcion: [] })); - return; + if (field.startsWith("id_")) { + newValue = value ? Number(value) : ""; } - const normalize = (str: string) => - str - .normalize("NFD") - .replace(/[\u0300-\u036f]/g, "") - .toLowerCase() - .trim(); + if (field === "id_tipo_equipo") { + const tipoSeleccionado = tiposEquipo.find( + (t) => t.id_tipo_de_equipo === Number(value) + ); + const esPeriferico = tipoSeleccionado?.tipo_equipo === "PERIFÉRICO"; + return { ...prev, [field]: newValue, isImpresora: esPeriferico }; + } - const searchValue = normalize(value); - - const matches = AREAS.map((a) => a.label) - .filter((label) => normalize(label).includes(searchValue)) - .slice(0, 5); - - setSuggestions((prev) => ({ ...prev, adscripcion: matches })); - } + return { ...prev, [field]: newValue }; + }); }; const handleSelectSuggestion = (field: string, value: string) => { @@ -221,35 +214,20 @@ export default function Page() { }; const handleGuardar = async () => { - const adscripcionesValidas = AREAS.map((a) => a.label); - if (!adscripcionesValidas.includes(formData.adscripcion)) { - toast.error("Debes seleccionar una adscripción válida."); - return; - } - try { const token = Cookies.get("token"); const headers = { Authorization: `Bearer ${token}` }; - await axios.post(`${api_url}/equipos/crear`, formData, { headers }); + + const dataToSend = { + ...formData, + fechaFactura: new Date(formData.fechaFactura) + .toISOString() + .split("T")[0], // "YYYY-MM-DD" + antiguedad: formData.antiguedad || "0 años", + }; + + await axios.post(`${api_url}/equipos/crear`, dataToSend, { headers }); toast.success("Equipo guardado correctamente"); - setFormData({ - inventario: "", - serie: "", - fechaFactura: new Date(), - antiguedad: "", - marca: "", - modelo: "", - tipoEquipo: "", - estado: "", - sistemaOperativo: "", - procesador: "", - tipoUso: "", - observaciones: "", - adscripcion: "", - lugar: "", - isImpresora:"", - tipoPeriferico: "", - }); } catch (err) { toast.error("Error al guardar el equipo"); } @@ -293,12 +271,12 @@ export default function Page() { - handleInputChange("tipoEquipo", e.target.value) + handleInputChange("id_tipo_equipo", e.target.value) } > {tiposEquipo.map((t) => ( - ))} @@ -339,12 +317,12 @@ export default function Page() { handleInputChange("tipoUso", e.target.value)} + value={formData.id_uso} + onChange={(e) => handleInputChange("id_uso", e.target.value)} > {tiposUso.map((t) => ( - ))} @@ -372,32 +350,37 @@ export default function Page() {
@@ -409,14 +392,14 @@ export default function Page() {