diff --git a/src/app/admin/historial/page.tsx b/src/app/admin/historial/page.tsx index 80d1ed3..8c729c5 100644 --- a/src/app/admin/historial/page.tsx +++ b/src/app/admin/historial/page.tsx @@ -2,19 +2,19 @@ import { useState } from "react"; import Card from "@/components/ui/Card"; import Button from "@/components/ui/Button"; -import Input from "@/components/ui/Input"; +import Badge from "@/components/ui/Badge"; interface Cliente { id: string; nombre: string; apellido: string; email: string; autos: Auto[]; } interface Auto { id: string; marca: string; modelo: string; patente: string; anio: number; } -interface Registro { +interface Turno { id: string; - descripcion: string; - observaciones: string | null; - fechaRealizado: string; - admin: { nombre: string }; - tipoServicio: { nombre: string } | null; + fechaInicio: string; + fechaFin: string; + estado: "PENDIENTE" | "CONFIRMADO" | "CANCELADO" | "COMPLETADO"; + kilometros: number; + comentario: string | null; + tipoServicio: { nombre: string }; } -interface TipoServicio { id: string; nombre: string; } export default function AdminHistorialPage() { const [busqueda, setBusqueda] = useState(""); @@ -22,11 +22,7 @@ export default function AdminHistorialPage() { const [buscando, setBuscando] = useState(false); const [clienteSel, setClienteSel] = useState(null); const [autoSel, setAutoSel] = useState(null); - const [historial, setHistorial] = useState([]); - const [servicios, setServicios] = useState([]); - const [mostrarForm, setMostrarForm] = useState(false); - const [form, setForm] = useState({ descripcion: "", observaciones: "", tipoServicioId: "", fechaRealizado: new Date().toISOString().slice(0, 10) }); - const [guardando, setGuardando] = useState(false); + const [turnos, setTurnos] = useState([]); async function buscar(e: React.FormEvent) { e.preventDefault(); @@ -41,36 +37,18 @@ export default function AdminHistorialPage() { async function seleccionarAuto(auto: Auto) { setAutoSel(auto); - const [hRes, sRes] = await Promise.all([ - fetch(`/api/admin/historial?autoId=${auto.id}`), - fetch(`/api/admin/servicios`), - ]); - const [h, s] = await Promise.all([hRes.json(), sRes.json()]); - setHistorial(h); - setServicios(s.filter((sv: TipoServicio & { activo: boolean }) => sv.activo)); + const res = await fetch(`/api/admin/historial?autoId=${auto.id}`); + setTurnos(await res.json()); } - function set(f: string) { - return (e: React.ChangeEvent) => - setForm((v) => ({ ...v, [f]: e.target.value })); - } - - async function guardarRegistro(e: React.FormEvent) { - e.preventDefault(); - if (!autoSel) return; - setGuardando(true); - const res = await fetch("/api/admin/historial", { - method: "POST", - headers: { "Content-Type": "application/json" }, - body: JSON.stringify({ autoId: autoSel.id, ...form, tipoServicioId: form.tipoServicioId || null }), + function formatFecha(iso: string) { + return new Date(iso).toLocaleDateString("es-AR", { + weekday: "short", day: "2-digit", month: "short", year: "numeric", }); - if (res.ok) { - const nuevo = await res.json(); - setHistorial((h) => [nuevo, ...h]); - setMostrarForm(false); - setForm({ descripcion: "", observaciones: "", tipoServicioId: "", fechaRealizado: new Date().toISOString().slice(0, 10) }); - } - setGuardando(false); + } + + function formatHora(iso: string) { + return new Date(iso).toLocaleTimeString("es-AR", { hour: "2-digit", minute: "2-digit" }); } return ( @@ -80,11 +58,11 @@ export default function AdminHistorialPage() { {/* Buscar cliente */}
- setBusqueda(e.target.value)} - className="flex-1" + onChange={(e: React.ChangeEvent) => setBusqueda(e.target.value)} + className="flex-1 border border-gray-300 rounded-lg px-3 py-2 text-sm outline-none focus:ring-2 focus:ring-blue-500" /> @@ -94,7 +72,7 @@ export default function AdminHistorialPage() { {clientes.map((c) => ( - +
+

+ {autoSel.marca} {autoSel.modelo} · {autoSel.patente} +

- {mostrarForm && ( - -
-
- - -
- -
- -