diff --git a/app/Components/Login/Login.tsx b/app/Components/Login/Login.tsx
index 6cf63fc..c86b84d 100644
--- a/app/Components/Login/Login.tsx
+++ b/app/Components/Login/Login.tsx
@@ -4,11 +4,12 @@ import { loginUser } from "@/app/lib/login";
import { useRouter } from "next/navigation";
import "./Login.css";
+import AlertBox from "../AlertBox/AlertBox";
function Login() {
const [user, setUser] = useState("");
const [password, setPassword] = useState("");
- const [message, setMessage] = useState("");
+ const [error, setError] = useState("");
const router = useRouter();
@@ -18,10 +19,16 @@ function Login() {
const data = await loginUser(user, password);
if ("error" in data) {
- setMessage(data.error);
+ setError(data.error);
} else {
- document.cookie = `token=${data.access_token}; path=/; SameSite=Strict`;
- setMessage("Inicio de sesión exitoso");
+ const token = data.access_token;
+ const payload = JSON.parse(atob(token.split(".")[1]));
+ const id_usuario = payload.id;
+
+ document.cookie = `token=${token}; path=/; SameSite=Strict`;
+ document.cookie = `id_usuario=${id_usuario}; path=/; SameSite=Strict`;
+
+ setError("Inicio de sesión exitoso");
router.push("/Impresiones");
}
};
@@ -63,16 +70,7 @@ function Login() {
Iniciar sesión
- {message && (
-
- {message}
-
- )}
+ {error &&
}
);
diff --git a/app/Components/Receipt/Receipt.tsx b/app/Components/Receipt/Receipt.tsx
index 817af7c..ba453b5 100644
--- a/app/Components/Receipt/Receipt.tsx
+++ b/app/Components/Receipt/Receipt.tsx
@@ -1,141 +1,133 @@
-'use client'
-import { useEffect, useState } from "react";
-import "./Receipt.css"
-import { PostReceipt } from "@/app/lib/receipt";
+"use client";
+import AlertBox from "../AlertBox/AlertBox";
+import { useState } from "react";
+import { PostReceipt } from "@/app/lib/postReceipt";
+import Cookies from "js-cookie";
-function Receipt() {
- const [folio, setFolio] = useState('');
- const [amount, setAmount] = useState('');
- const [date, setDate] = useState('');
+import "./Receipt.css";
- const [error, setError] = useState('');
- const [alert, setAlert] = useState('');
- const [showError, setShowError] = useState(false);
- const [showAlert, setShowAlert] = useState(false);
-
- //restrict this month//
- const day = new Date();
- const year = day.getFullYear();
- const month = day.getMonth();
- const today = day.getDate();
-
- const minFecha = new Date(year, month, 1).toISOString().split('T')[0];
- const maxFecha = new Date(year, month, today).toISOString().split('T')[0];
- //restrict this month//
-
- //fadeOut alert and error
- useEffect(() => {
- if (alert) {
- setShowAlert(true);
- const timeout = setTimeout(() => {
- setShowAlert(false);
- setTimeout(() => setAlert(''), 500);
- }, 6000);
- return () => clearTimeout(timeout);
- }
- }, [alert]);
-
- useEffect(() => {
- if (error) {
- setShowError(true);
- const timeout = setTimeout(() => {
- setShowError(false);
- setTimeout(() => setError(''), 500);
- }, 6000);
- return () => clearTimeout(timeout);
- }
- }, [error]);
- //fadeOut alert and error//
-
- const handleSaveReceipt = ( )=>{
- //PostReceipt(data{folio,amount,date})
- }
-
- return (
-
- )
+interface ReceiptsProps {
+ numAccount: number | null;
}
-export default Receipt
-//IO
\ No newline at end of file
+function Receipt({ numAccount }: ReceiptsProps) {
+ const [folio, setFolio] = useState("");
+ const [amount, setAmount] = useState("");
+ const [date, setDate] = useState("");
+
+ const [error, setError] = useState("");
+ const [alert, setAlert] = useState("");
+
+ //restrict this month//
+ const day = new Date();
+ const year = day.getFullYear();
+ const month = day.getMonth();
+ const today = day.getDate();
+
+ const minFecha = new Date(year, month, 1).toISOString().split("T")[0];
+ const maxFecha = new Date(year, month, today).toISOString().split("T")[0];
+ //restrict this month//
+
+ const handleSaveReceipt = () => {
+ if (!numAccount) {
+ setError("Error busca denuevo al estudiante");
+ return;
+ }
+
+ if (!folio) {
+ setError("Ingresa el folio del tiket");
+ return;
+ }
+
+ if (!amount) {
+ setError("coloca el monto a depositar");
+ return;
+ }
+
+ if (!date) {
+ setError("coloca la fecha");
+ return;
+ }
+
+ PostReceipt({
+ id_cuenta: numAccount,
+ folio_recibo: folio,
+ monto: Number(amount),
+ fecha_recibo: date,
+ });
+ };
+
+ return (
+
+ );
+}
+
+export default Receipt;
+//IO
diff --git a/app/lib/apiClient.ts b/app/lib/apiClient.ts
new file mode 100644
index 0000000..5fd0104
--- /dev/null
+++ b/app/lib/apiClient.ts
@@ -0,0 +1,23 @@
+import axios from "axios";
+import Cookies from "js-cookie";
+import { envConfig } from "./config";
+
+const apiClient = axios.create({
+ baseURL: envConfig.apiUrl,
+ headers: {
+ "Content-Type": "application/json",
+ },
+});
+
+apiClient.interceptors.request.use((config) => {
+ const token = Cookies.get("token");
+ console.log(token)
+ if (token) {
+ if (config.headers && "set" in config.headers) {
+ config.headers.set("Authorization", `Bearer ${token}`);
+ }
+ }
+ return config;
+});
+
+export default apiClient;
diff --git a/app/lib/login.ts b/app/lib/login.ts
index 680a445..b32f0db 100644
--- a/app/lib/login.ts
+++ b/app/lib/login.ts
@@ -2,14 +2,17 @@ import axios from "axios";
import { envConfig } from "./config";
export async function loginUser(usuario: string, password: string) {
- try {
- const response = await axios.post(`${envConfig.apiUrl}/user`, { usuario, password });
- return response.data;
- } catch (error: any) {
- const msg =
- error.response?.data?.message ||
- error.message ||
- "Error desconocido en el login";
- return { error: msg };
- }
+ try {
+ const response = await axios.post(`${envConfig.apiUrl}/user`, {
+ usuario,
+ password,
+ });
+ return response.data;
+ } catch (error: any) {
+ const msg =
+ error.response?.data?.message ||
+ error.message ||
+ "Error desconocido en el login";
+ return { error: msg };
+ }
}
diff --git a/app/lib/postImpressions.ts b/app/lib/postImpressions.ts
new file mode 100644
index 0000000..cb462df
--- /dev/null
+++ b/app/lib/postImpressions.ts
@@ -0,0 +1,14 @@
+import apiClient from "@/app/lib/apiClient";
+
+export async function PostImpressions(data: any) {
+ try {
+ const response = await apiClient.post("/operations", data);
+ return response.data;
+ } catch (error: any) {
+ const msg =
+ error.response?.data?.error ||
+ error.message ||
+ "Error desconocido al cobrar impresión";
+ return { error: msg };
+ }
+}
diff --git a/app/lib/postReceipt.ts b/app/lib/postReceipt.ts
new file mode 100644
index 0000000..5a9fc62
--- /dev/null
+++ b/app/lib/postReceipt.ts
@@ -0,0 +1,15 @@
+import apiClient from "./apiClient";
+
+export async function PostReceipt(data: any) {
+ try {
+ const response = await apiClient.post("/recibo", data);
+ console.log(response.data);
+ return response.data;
+ } catch (error: any) {
+ const msg =
+ error.response?.data?.message ||
+ error.message ||
+ "Error desconocido al crear recibo";
+ return { error: msg };
+ }
+}
diff --git a/app/lib/receipt.ts b/app/lib/receipt.ts
deleted file mode 100644
index 6385567..0000000
--- a/app/lib/receipt.ts
+++ /dev/null
@@ -1,18 +0,0 @@
-import axios from "axios";
-import { envConfig } from "./config";
-
-export async function PostReceipt(usuario: string, password: string) {
- try {
- const response = await axios.post(`${envConfig.apiUrl}/operations`, {
- usuario,
- password,
- });
- return response.data;
- } catch (error: any) {
- const msg =
- error.response?.data?.message ||
- error.message ||
- "Error desconocido en el guardado del Recibo";
- return { error: msg };
- }
-}
diff --git a/package.json b/package.json
index e142761..3e66ed6 100644
--- a/package.json
+++ b/package.json
@@ -5,7 +5,7 @@
"scripts": {
"dev": "next dev --turbopack",
"build": "next build",
- "start": "source ~/.nvm/nvm.sh && node --version && nvm use 22.10.0 && npm install && next build && next start -p 3356",
+ "start": "next start",
"lint": "next lint"
},
"dependencies": {