"use client"; import Cookies from "js-cookie"; import { useState } from "react"; import { useRouter } from "next/navigation"; import { PostImpressions } from "@/app/lib/postImpressions"; import toast from "react-hot-toast"; import Swal from "sweetalert2"; interface CostOption { value: number; } interface ImpressionsProps { costs: CostOption[]; numAcount: number | null; id_servicio: number; } function Impressions({ costs, numAcount, id_servicio }: ImpressionsProps) { const [pages, setPages] = useState(""); const [cost, setCost] = useState(""); const router = useRouter(); const handleLogout = () => { Cookies.remove("token"); Cookies.remove("session"); router.push("/Login"); }; const handlePayment = async () => { if (!numAcount) { toast.error("busca de nuevo al estudiante"); return; } if (!pages) { toast.error("Ingresa el numero de hojas a imprimir"); return; } if (!cost) { toast.error("Selecciona un costo"); return; } const result = await PostImpressions({ id_cuenta: numAcount, numero_hojas: parseInt(pages), monto: parseInt(cost) * parseInt(pages), id_servicio, }); if (result?.error) { if (result.message === "Token inválido") { handleLogout(); } else { toast.error(result.message); } return; } setPages(""); setCost(""); toast.success("Impresion cobrada correctamente"); Swal.fire({ title: "Cobro exitoso!", icon: "success", draggable: true }); router.refresh(); }; return (
{ e.preventDefault(); handlePayment(); }} >
{ const value = e.target.value; if (/^\d*$/.test(value)) { setPages(value); } }} placeholder="Numero de hojas a imprimir..." inputMode="numeric" pattern="[0-9]*" />
); } export default Impressions; //IO