diff --git a/FrontAdmin/src/API/DatosAlumnosV2.ts b/FrontAdmin/src/API/DatosAlumnosV2.ts deleted file mode 100644 index d63628f..0000000 --- a/FrontAdmin/src/API/DatosAlumnosV2.ts +++ /dev/null @@ -1,24 +0,0 @@ -import Cookies from 'js-cookie'; - -export const FetchAlumnos = async () => { - try { - const token = Cookies.get('access_token'); - - const response = await fetch('http://localhost:8000/alumnos/', { - method: 'GET', - headers: { - 'Content-Type': 'application/json', - Authorization: `Bearer ${token}`, - }, - }); - - if (response.ok) { - const data = await response.json(); - return data; - } else { - throw new Error('Error en la respuesta del servidor'); - } - } catch (error) { - throw new Error('Network error: ' + error); - } -}; diff --git a/FrontAdmin/src/API/DetalleAlumno.ts b/FrontAdmin/src/API/DetalleAlumno.ts deleted file mode 100644 index 7c516aa..0000000 --- a/FrontAdmin/src/API/DetalleAlumno.ts +++ /dev/null @@ -1,24 +0,0 @@ -import Cookies from 'js-cookie'; - -export const FetchDetalleAlumno = async (dni) => { - try { - const token = Cookies.get('access_token'); - - const response = await fetch(`http://localhost:8000/alumnos/${dni}/`, { - method: 'GET', - headers: { - 'Content-Type': 'application/json', - Authorization: `Bearer ${token}`, - }, - }); - - if (response.ok) { - const data = await response.json(); - return data; - } else { - throw new Error('Error en la respuesta del servidor'); - } - } catch (error) { - throw new Error('Network error: ' + error); - } -}; diff --git a/FrontAdmin/src/API/Materias.ts b/FrontAdmin/src/API/Materias.ts index 58c3ad5..7a641fa 100644 --- a/FrontAdmin/src/API/Materias.ts +++ b/FrontAdmin/src/API/Materias.ts @@ -1,4 +1,3 @@ - import Cookies from 'js-cookie'; const URL= import.meta.env.VITE_URL_DEV; diff --git a/FrontAdmin/src/API/Montos.ts b/FrontAdmin/src/API/Montos.ts index ba4d0d9..2f0cf7b 100644 --- a/FrontAdmin/src/API/Montos.ts +++ b/FrontAdmin/src/API/Montos.ts @@ -28,9 +28,10 @@ export const FetchMontos = async (offset: number, limit:number ) => { } }; -export const createCompromiso = async (compromisoData: any, selectFile: any) => { +export const createCompromiso = async (compromisoData: any) => { try { const token = Cookies.get('access_token'); + console.log(compromisoData); const response = await fetch(`${URL}/pagos/compromisos/`, { method: 'POST', @@ -43,7 +44,6 @@ export const createCompromiso = async (compromisoData: any, selectFile: any) => if (response.ok) { const data = await response.json(); - await loadPDF(data.id_comp_pago ,selectFile); return data; } else { const errorResponse = await response.json(); @@ -53,29 +53,3 @@ export const createCompromiso = async (compromisoData: any, selectFile: any) => throw new Error('Network error: ' + error); } }; - -export const loadPDF = async (id :string,file: File) => { - try { - const token = Cookies.get('access_token'); - - const formData = new FormData(); - formData.append('archivo_pdf', file); - - const response = await fetch(`${URL}/pagos/compromisos/${id}/`, { - method: 'PATCH', - headers: { - Authorization: `Bearer ${token}`, - }, - body: formData, - }); - - if (response.ok) { - const data = await response.json(); - return data; - } else { - throw new Error('Error en la respuesta del servidor'); - } - } catch (error) { - throw new Error('Network error: ' + error); - } -} diff --git a/FrontAdmin/src/API/Sysacad.ts b/FrontAdmin/src/API/Sysacad.ts deleted file mode 100644 index 0d342d3..0000000 --- a/FrontAdmin/src/API/Sysacad.ts +++ /dev/null @@ -1,401 +0,0 @@ -const data = -{ - "93.0": { - "Apellido y Nombres": null, - "Celular": null, - "Tel. Resid": "Tel. Resid", - "Teléfono": "Teléfono" - }, - "97.0": { - "Apellido y Nombres": null, - "Celular": null, - "Tel. Resid": "Tel. Resid", - "Teléfono": null - }, - "98.0": { - "Apellido y Nombres": null, - "Celular": null, - "Tel. Resid": "Tel. Resid", - "Teléfono": null - }, - "240.0": { - "Apellido y Nombres": "Apellido y Nombres", - "Celular": null, - "Tel. Resid": null, - "Teléfono": null - }, - "241.0": { - "Apellido y Nombres": "Apellido y Nombres", - "Celular": null, - "Tel. Resid": null, - "Teléfono": null - }, - "242.0": { - "Apellido y Nombres": "Apellido y Nombres", - "Celular": null, - "Tel. Resid": null, - "Teléfono": null - }, - "274.0": { - "Apellido y Nombres": null, - "Celular": null, - "Tel. Resid": "Tel. Resid", - "Teléfono": "Teléfono" - }, - "280.0": { - "Apellido y Nombres": null, - "Celular": null, - "Tel. Resid": "Tel. Resid", - "Teléfono": null - }, - "281.0": { - "Apellido y Nombres": null, - "Celular": null, - "Tel. Resid": "Tel. Resid", - "Teléfono": null - }, - "282.0": { - "Apellido y Nombres": null, - "Celular": null, - "Tel. Resid": "Tel. Resid", - "Teléfono": null - }, - "313.0": { - "Apellido y Nombres": null, - "Celular": null, - "Tel. Resid": "Tel. Resid", - "Teléfono": "Teléfono" - }, - "314.0": { - "Apellido y Nombres": null, - "Celular": null, - "Tel. Resid": "Tel. Resid", - "Teléfono": "Teléfono" - }, - "315.0": { - "Apellido y Nombres": null, - "Celular": null, - "Tel. Resid": "Tel. Resid", - "Teléfono": "Teléfono" - }, - "316.0": { - "Apellido y Nombres": null, - "Celular": null, - "Tel. Resid": "Tel. Resid", - "Teléfono": "Teléfono" - }, - "340.0": { - "Apellido y Nombres": null, - "Celular": null, - "Tel. Resid": "Tel. Resid", - "Teléfono": null - }, - "349.0": { - "Apellido y Nombres": null, - "Celular": null, - "Tel. Resid": "Tel. Resid", - "Teléfono": null - }, - "350.0": { - "Apellido y Nombres": null, - "Celular": null, - "Tel. Resid": "Tel. Resid", - "Teléfono": null - }, - "410.0": { - "Apellido y Nombres": "Apellido y Nombres", - "Celular": null, - "Tel. Resid": null, - "Teléfono": null - }, - "411.0": { - "Apellido y Nombres": "Apellido y Nombres", - "Celular": null, - "Tel. Resid": null, - "Teléfono": null - }, - "412.0": { - "Apellido y Nombres": null, - "Celular": null, - "Tel. Resid": "Tel. Resid", - "Teléfono": null - }, - "490.0": { - "Apellido y Nombres": null, - "Celular": null, - "Tel. Resid": "Tel. Resid", - "Teléfono": null - }, - "493.0": { - "Apellido y Nombres": null, - "Celular": null, - "Tel. Resid": "Tel. Resid", - "Teléfono": null - }, - "503.0": { - "Apellido y Nombres": null, - "Celular": "Celular", - "Tel. Resid": "Tel. Resid", - "Teléfono": null - }, - "504.0": { - "Apellido y Nombres": null, - "Celular": "Celular", - "Tel. Resid": "Tel. Resid", - "Teléfono": null - }, - "542.0": { - "Apellido y Nombres": null, - "Celular": null, - "Tel. Resid": "Tel. Resid", - "Teléfono": null - }, - "543.0": { - "Apellido y Nombres": null, - "Celular": null, - "Tel. Resid": "Tel. Resid", - "Teléfono": null - }, - "544.0": { - "Apellido y Nombres": null, - "Celular": null, - "Tel. Resid": "Tel. Resid", - "Teléfono": null - }, - "545.0": { - "Apellido y Nombres": null, - "Celular": null, - "Tel. Resid": "Tel. Resid", - "Teléfono": null - }, - "685.0": { - "Apellido y Nombres": "Apellido y Nombres", - "Celular": null, - "Tel. Resid": null, - "Teléfono": null - }, - "686.0": { - "Apellido y Nombres": "Apellido y Nombres", - "Celular": null, - "Tel. Resid": null, - "Teléfono": null - }, - "687.0": { - "Apellido y Nombres": "Apellido y Nombres", - "Celular": null, - "Tel. Resid": null, - "Teléfono": null - }, - "688.0": { - "Apellido y Nombres": "Apellido y Nombres", - "Celular": null, - "Tel. Resid": null, - "Teléfono": null - }, - "701.0": { - "Apellido y Nombres": "Apellido y Nombres", - "Celular": null, - "Tel. Resid": null, - "Teléfono": null - }, - "702.0": { - "Apellido y Nombres": "Apellido y Nombres", - "Celular": null, - "Tel. Resid": null, - "Teléfono": null - }, - "703.0": { - "Apellido y Nombres": "Apellido y Nombres", - "Celular": null, - "Tel. Resid": null, - "Teléfono": null - }, - "712.0": { - "Apellido y Nombres": null, - "Celular": null, - "Tel. Resid": "Tel. Resid", - "Teléfono": "Teléfono" - }, - "713.0": { - "Apellido y Nombres": null, - "Celular": null, - "Tel. Resid": "Tel. Resid", - "Teléfono": "Teléfono" - }, - "714.0": { - "Apellido y Nombres": null, - "Celular": null, - "Tel. Resid": "Tel. Resid", - "Teléfono": "Teléfono" - }, - "715.0": { - "Apellido y Nombres": null, - "Celular": null, - "Tel. Resid": "Tel. Resid", - "Teléfono": "Teléfono" - }, - "716.0": { - "Apellido y Nombres": null, - "Celular": null, - "Tel. Resid": "Tel. Resid", - "Teléfono": "Teléfono" - }, - "771.0": { - "Apellido y Nombres": null, - "Celular": null, - "Tel. Resid": "Tel. Resid", - "Teléfono": null - }, - "772.0": { - "Apellido y Nombres": null, - "Celular": null, - "Tel. Resid": "Tel. Resid", - "Teléfono": null - }, - "773.0": { - "Apellido y Nombres": null, - "Celular": null, - "Tel. Resid": "Tel. Resid", - "Teléfono": null - }, - "774.0": { - "Apellido y Nombres": null, - "Celular": null, - "Tel. Resid": "Tel. Resid", - "Teléfono": null - }, - "775.0": { - "Apellido y Nombres": null, - "Celular": null, - "Tel. Resid": "Tel. Resid", - "Teléfono": null - }, - "814.0": { - "Apellido y Nombres": null, - "Celular": null, - "Tel. Resid": "Tel. Resid", - "Teléfono": null - }, - "815.0": { - "Apellido y Nombres": null, - "Celular": null, - "Tel. Resid": "Tel. Resid", - "Teléfono": null - }, - "816.0": { - "Apellido y Nombres": null, - "Celular": null, - "Tel. Resid": "Tel. Resid", - "Teléfono": null - }, - "817.0": { - "Apellido y Nombres": null, - "Celular": null, - "Tel. Resid": "Tel. Resid", - "Teléfono": null - }, - "818.0": { - "Apellido y Nombres": null, - "Celular": null, - "Tel. Resid": "Tel. Resid", - "Teléfono": "Teléfono" - }, - "819.0": { - "Apellido y Nombres": null, - "Celular": null, - "Tel. Resid": "Tel. Resid", - "Teléfono": "Teléfono" - }, - "820.0": { - "Apellido y Nombres": null, - "Celular": null, - "Tel. Resid": "Tel. Resid", - "Teléfono": "Teléfono" - }, - "821.0": { - "Apellido y Nombres": null, - "Celular": null, - "Tel. Resid": "Tel. Resid", - "Teléfono": "Teléfono" - }, - "822.0": { - "Apellido y Nombres": null, - "Celular": null, - "Tel. Resid": "Tel. Resid", - "Teléfono": "Teléfono" - }, - "861.0": { - "Apellido y Nombres": "Apellido y Nombres", - "Celular": null, - "Tel. Resid": null, - "Teléfono": null - }, - "862.0": { - "Apellido y Nombres": "Apellido y Nombres", - "Celular": null, - "Tel. Resid": null, - "Teléfono": null - }, - "863.0": { - "Apellido y Nombres": "Apellido y Nombres", - "Celular": null, - "Tel. Resid": null, - "Teléfono": null - }, - "864.0": { - "Apellido y Nombres": "Apellido y Nombres", - "Celular": null, - "Tel. Resid": null, - "Teléfono": null - }, - "865.0": { - "Apellido y Nombres": "Apellido y Nombres", - "Celular": null, - "Tel. Resid": null, - "Teléfono": null - }, - "873.0": { - "Apellido y Nombres": "Apellido y Nombres", - "Celular": null, - "Tel. Resid": null, - "Teléfono": null - }, - "874.0": { - "Apellido y Nombres": "Apellido y Nombres", - "Celular": null, - "Tel. Resid": null, - "Teléfono": null - }, - "875.0": { - "Apellido y Nombres": "Apellido y Nombres", - "Celular": null, - "Tel. Resid": null, - "Teléfono": null - }, - "876.0": { - "Apellido y Nombres": "Apellido y Nombres", - "Celular": null, - "Tel. Resid": null, - "Teléfono": null - }, - "882.0": { - "Apellido y Nombres": null, - "Celular": null, - "Tel. Resid": "Tel. Resid", - "Teléfono": null - }, - "883.0": { - "Apellido y Nombres": null, - "Celular": null, - "Tel. Resid": "Tel. Resid", - "Teléfono": null - }, - "884.0": { - "Apellido y Nombres": null, - "Celular": null, - "Tel. Resid": "Tel. Resid", - "Teléfono": null - } - } - -export default data; \ No newline at end of file diff --git a/FrontAdmin/src/Context.tsx b/FrontAdmin/src/Context.tsx index 558beea..550a9a4 100644 --- a/FrontAdmin/src/Context.tsx +++ b/FrontAdmin/src/Context.tsx @@ -1,6 +1,5 @@ -import { createContext, useState, ReactNode, useContext, useEffect } from 'react'; +import { createContext, useState, ReactNode, useContext } from 'react'; import Cookies from 'js-cookie'; -const URL= import.meta.env.VITE_URL_DEV; interface AuthContextType { isAuthenticated: boolean; @@ -16,59 +15,10 @@ const AuthProvider = ({ children }: { children: ReactNode }) => { !Cookies.get('access_token') ? false : true ); const [rolUser, setRolUser] = useState(Cookies.get('username') === 'admin' ? true : false); - let refreshTimeout: NodeJS.Timeout; - - const refreshToken = async () => { - const refresh = Cookies.get('refresh_token'); - if (!refresh) { - onLogout(); - return; - } - - try { - const response = await fetch(`${URL}/users/token/refresh/`, { - method: 'POST', - headers: { - 'Content-Type': 'application/json', - }, - body: JSON.stringify({ refresh }), - }); - - if (response.ok) { - console.log('Token refreshed'); - const data = await response.json(); - console.log(data); - Cookies.set('access_token', data.access); - Cookies.set('refresh_token', data.refresh); - Cookies.set('access_expiration', data.access_expiration); - Cookies.set('refresh_expiration', data.refresh_expiration); - TokenRefresh(data.access_expiration); - } else { - onLogout(); - } - } catch (error) { - console.error('Error refreshing token:', error); - onLogout(); - } - }; - - const TokenRefresh = (accessExpiration: string) => { - const expirationTime = new Date(accessExpiration).getTime(); - const currentTime = new Date().getTime(); - const timeout = expirationTime - currentTime - 30000; - - if (timeout > 0) { - refreshTimeout = setTimeout(refreshToken, timeout); - } - }; const onLogin = () => { setRolUser(Cookies.get('username') === 'admin' ? true : false); setIsAuthenticated(true); - const accessExpiration = Cookies.get('access_expiration'); - if (accessExpiration) { - TokenRefresh(accessExpiration); - } }; @@ -80,25 +30,9 @@ const AuthProvider = ({ children }: { children: ReactNode }) => { Cookies.remove('username'); console.log('logout'); setIsAuthenticated(false); - if (refreshTimeout) { - clearTimeout(refreshTimeout); - } + }; - useEffect(() => { - if (isAuthenticated) { - const accessExpiration = Cookies.get('access_expiration'); - if (accessExpiration) { - TokenRefresh(accessExpiration); - } - } - return () => { - if (refreshTimeout) { - clearTimeout(refreshTimeout); - } - }; - }, [isAuthenticated]); - return ( {children} diff --git a/FrontAdmin/src/components/Modal/ModalAgregarMateria.tsx b/FrontAdmin/src/components/Modal/ModalAgregarMateria.tsx index 701f17a..9796bb8 100644 --- a/FrontAdmin/src/components/Modal/ModalAgregarMateria.tsx +++ b/FrontAdmin/src/components/Modal/ModalAgregarMateria.tsx @@ -9,13 +9,9 @@ import { Input, Button, Stack, - RadioGroup, - Radio, - Text, } from '@chakra-ui/react'; import React, { useState } from 'react'; - interface ModalComponentProps { isOpen: boolean; onClose: () => void; @@ -52,47 +48,39 @@ import { - - setIdMateria(e.target.value)} - /> - setNombre(e.target.value)} - /> - - < Stack direction="row" mt={5} alignItems="center"> - setAnioCursada(e.target.value)} - /> - - Cuatrimestre - setCuatrimestre(value.toString())}> - - 1 - 2 - - - - + setIdMateria(e.target.value)} + /> + setNombre(e.target.value)} + /> + setAnioCursada(e.target.value)} + /> + setCuatrimestre(e.target.value)} + /> setPlan(e.target.value)} /> @@ -120,5 +108,4 @@ import { ); - } - + } \ No newline at end of file diff --git a/FrontAdmin/src/components/Modal/ModalEditarMateria.tsx b/FrontAdmin/src/components/Modal/ModalEditarMateria.tsx index 0b16976..9edaf99 100644 --- a/FrontAdmin/src/components/Modal/ModalEditarMateria.tsx +++ b/FrontAdmin/src/components/Modal/ModalEditarMateria.tsx @@ -11,8 +11,6 @@ import { Stack, Text, Flex, - RadioGroup, - Radio, } from '@chakra-ui/react'; import React, { useState, useEffect } from 'react'; @@ -57,8 +55,7 @@ import { Editar {materia.nombre} - - + ID Materia - - Nombre - setNombre(e.target.value)} - variant = "flushed" - ml={1} - /> + + Nombre + setNombre(e.target.value)} + variant = "flushed" + ml={1} + /> - - Año - - Cuatrimestre - setCuatrimestre(value)}> - - 1 - 2 - - - - + + Cuatrimestre + setCuatrimestre(e.target.value)} + variant = "flushed" + ml={1} + /> + Plan setPlan(e.target.value)} - variant="flushed" - ml={1} + value={plan} + placeholder="Plan" + size='md' + onChange={(e) => setPlan(e.target.value)} + variant = "flushed" + ml={1} /> - - - - - - - - - - - ); -} + + + + + + + + + + + ); + } \ No newline at end of file diff --git a/FrontAdmin/src/components/Pages/Alumnos/Alumnos.tsx b/FrontAdmin/src/components/Pages/Alumnos/Alumnos.tsx index 04a4a1a..3a6a73d 100644 --- a/FrontAdmin/src/components/Pages/Alumnos/Alumnos.tsx +++ b/FrontAdmin/src/components/Pages/Alumnos/Alumnos.tsx @@ -2,7 +2,6 @@ import { Flex, Box } from '@chakra-ui/react'; import { createTheme, ThemeProvider } from '@mui/material'; import Table from '../../Table/Table'; import { esES } from '@mui/material/locale'; -import { Outlet } from 'react-router-dom'; export default function Alumnos() { const lightTheme = createTheme({ @@ -12,7 +11,7 @@ export default function Alumnos() { }); return ( - +
); } diff --git a/FrontAdmin/src/components/Pages/Alumnos/SubPages/FichaAlumno.tsx b/FrontAdmin/src/components/Pages/Alumnos/SubPages/FichaAlumno.tsx deleted file mode 100644 index 6a69303..0000000 --- a/FrontAdmin/src/components/Pages/Alumnos/SubPages/FichaAlumno.tsx +++ /dev/null @@ -1,132 +0,0 @@ -import { useParams } from 'react-router-dom'; -import { - Flex, - Box, - Image, - Heading, - Text, - Spacer, - useColorModeValue, - Button, -} from '@chakra-ui/react'; -import { createTheme, ThemeProvider } from '@mui/material'; -import logoUser from '../../../icons/logo-user.png'; -import { useNavigate } from 'react-router-dom'; -import { FetchDetalleAlumno } from '../../../../API/DetalleAlumno.ts'; -import React, { useState, useEffect, useMemo } from 'react'; -import { ArrowLeftIcon, ChevronLeftIcon } from '@chakra-ui/icons'; - -function FichaAlumno() { - const { dni } = useParams(); - const [alumno, setAlumno] = useState(null); // Define el estado con un valor inicial de null - const [loading, setLoading] = useState(true); - const [error, setError] = useState(null); - const navigate = useNavigate(); - - const handleBackClick = () => { - navigate(-1); // Retrocede en el historial de navegación - }; - - useEffect(() => { - const fetchData = async () => { - try { - const data = await FetchDetalleAlumno(dni); - setAlumno(data); // Asegúrate de que `data.results` sea el formato correcto - } catch (error) { - setError(error); - console.error('Error al obtener los datos', error); - } finally { - setLoading(false); - } - }; - - if (dni) { - fetchData(); - } - }, [dni]); // Incluye `dni` como dependencia - - if (loading) { - return Cargando...; - } - - if (error) { - return Error al cargar los datos.; - } - - if (!alumno) { - return No se encontraron datos.; - } - - return ( - - - - - - - Apellido y nombre - {`${alumno.apellido}, ${alumno.nombre}`} - - Número DNI: - - - {alumno.dni} - - - Legajo: - - - {alumno.legajo} - - - Email: - - - {alumno.email} - - - Celular - - - {alumno.telefono} - - -
- - - Compromiso de Pago:{' '} - - - Firmado - - - Estado: - - - {alumno.estado} - - - Deuda: - - - - - -
-
- ); -} - -export default FichaAlumno; diff --git a/FrontAdmin/src/components/Pages/Configuracion/Configuracion.tsx b/FrontAdmin/src/components/Pages/Configuracion/Configuracion.tsx index ceddc5e..e13c5d4 100644 --- a/FrontAdmin/src/components/Pages/Configuracion/Configuracion.tsx +++ b/FrontAdmin/src/components/Pages/Configuracion/Configuracion.tsx @@ -1,4 +1,4 @@ -import { Grid, GridItem, Flex, Button, Text, Box } from '@chakra-ui/react'; +import { Grid, GridItem, Flex, Button, Text } from '@chakra-ui/react'; import Montos from './Montos/Montos'; import { FetchMontos } from '../../../API/Montos'; import { useEffect, useState } from 'react'; @@ -12,24 +12,24 @@ function Configuracion() { const [limit] = useState(10); const [totalCount, setTotalCount] = useState(0); - const fetchMontos = async (offset: number, limit: number) => { - try { - const data = await FetchMontos(offset, limit); - setMontos(data.results); - setTotalCount(data.count); - } catch (error) { - if (error instanceof Error) { - setError(error.message); - } else { - setError('An unknown error occurred'); + useEffect(() => { + const getMontos = async (offset: number, limit: number) => { + try { + const data = await FetchMontos(offset, limit); + setMontos(data.results); + setTotalCount(data.count); + } catch (error) { + if (error instanceof Error) { + setError(error.message); + } else { + setError('An unknown error occurred'); + } + } finally { + setLoading(false); } - } finally { - setLoading(false); - } - }; + }; - useEffect(() => { - fetchMontos(offset, limit); + getMontos(offset, limit); }, [offset, limit]); const handleNextPage = () => { @@ -45,24 +45,24 @@ function Configuracion() { }; return ( - + - fetchMontos(offset, limit)} /> + - + - Página {Math.ceil(offset / limit) + 1} de {Math.ceil(totalCount / limit)} - - + ); } diff --git a/FrontAdmin/src/components/Pages/Sysacad/Materias/TablaMaterias.tsx b/FrontAdmin/src/components/Pages/Configuracion/Materias/TablaMaterias.tsx similarity index 84% rename from FrontAdmin/src/components/Pages/Sysacad/Materias/TablaMaterias.tsx rename to FrontAdmin/src/components/Pages/Configuracion/Materias/TablaMaterias.tsx index 270d80d..ae32bf1 100644 --- a/FrontAdmin/src/components/Pages/Sysacad/Materias/TablaMaterias.tsx +++ b/FrontAdmin/src/components/Pages/Configuracion/Materias/TablaMaterias.tsx @@ -33,43 +33,33 @@ export default function TablaMaterias() { useEffect(() => { const fetchData = async () => { - try { const data = await FetchMaterias(); setMaterias(data); console.log(data); - } catch (error) { - console.error('Network error', error); - showToast('Error', 'No se pudieron cargar las materias', 'error'); - } }; fetchData(); }, []); - const handleBorrar = (materia: any) => { - setSelectedMateria(materia); - onOpen1(); - }; + const handleBorrar = (materia: any) => { + setSelectedMateria(materia); + onOpen1(); + }; - const handleConfirmarBorrado = async () => { - try { - await FetchDeleteMateria(selectedMateria.codigo_materia); - showToast('Exito', 'Materia eliminada con exito', 'success'); - setMaterias((prevMaterias) => - prevMaterias.filter((m) => m.codigo_materia !== selectedMateria.codigo_materia) - ); // Elimina del estado - } catch (error) { - console.error('Network error', error); - showToast('Error', 'No se pudo eliminar la materia', 'error'); - } - onClose1(); - }; + const handleConfirmarBorrado = () => { + // Aca la solicitud DELETE para eliminar la materia + try { + const Data = FetchDeleteMateria(selectedMateria.codigo_materia); + showToast('Exito', 'Materia eliminada con exito', 'success'); + setMaterias(materias.filter(m => m.codigo_materia !== selectedMateria.codigo_materia)); // Elimina del estado + } catch (error) { + console.error('Network error', error); + showToast('Error', 'No se pudo eliminar la materia', 'error'); + } + + onClose1(); + }; const handleAgregar = (codigo_materia: string, anio_cursada: string, nombre: string, anio_plan: string, cuatrimestre:string) => { - // Validar si todos los campos están completos - if (!codigo_materia || !anio_cursada || !nombre || !anio_plan || !cuatrimestre) { - showToast('Error', 'No se pudo agregar la materia, todos los campos deben ser completados', 'error'); - return; - } // Aca la solicitud POST para agregar la materia try { console.log({ codigo_materia, anio_plan, nombre }); @@ -90,10 +80,6 @@ export default function TablaMaterias() { }; const handleConfirmarEditar = (codigo_materia:string, anio_cursado:string, nombre: string, cuatrimestre:string, anio_plan: string) => { - if (!codigo_materia || !anio_cursado || !nombre || !anio_plan || !cuatrimestre) { - showToast('Error', 'No se pudo editar la materia, todos los campos deben ser completados', 'error'); - return; - } // Aca la solicitud PUT para editar la materia try { const Data = FetchPutMateria(parseInt(codigo_materia), parseInt(anio_cursado), parseInt(anio_plan), nombre, parseInt(cuatrimestre)); @@ -122,10 +108,7 @@ export default function TablaMaterias() { onClose3(); } - // onClose3(); - //}; - - return ( + return ( @@ -190,8 +173,6 @@ export default function TablaMaterias() { confirmar={handleConfirmarEditar} materia={selectedMateriaEditar} /> - - - ); - -} + + ); +} \ No newline at end of file diff --git a/FrontAdmin/src/components/Pages/Configuracion/Montos/ModalVerHistorial.tsx b/FrontAdmin/src/components/Pages/Configuracion/Montos/ModalVerHistorial.tsx new file mode 100644 index 0000000..515442e --- /dev/null +++ b/FrontAdmin/src/components/Pages/Configuracion/Montos/ModalVerHistorial.tsx @@ -0,0 +1,189 @@ +import { + Modal, + ModalOverlay, + ModalContent, + ModalHeader, + ModalFooter, + ModalBody, + ModalCloseButton, + Text, + Button, + Table, + Thead, + Tbody, + Tr, + Th, + Td, + Box, + Input, + Flex, +} from '@chakra-ui/react'; +import { useEffect, useState } from 'react'; +import { FetchMontos } from '../../../../API/Montos'; +import { CloseIcon } from '@chakra-ui/icons'; +import Cookies from 'js-cookie'; + +interface ModalComponentProps { + isOpen: boolean; + onClose: () => void; +} + +export default function VerHistorial({ isOpen, onClose }: ModalComponentProps) { + const [montos, setMontos] = useState([]); + const [pdfUrl, setPdfUrl] = useState(null); + const [startDate, setStartDate] = useState(''); + const [endDate, setEndDate] = useState(''); + const [filteredMontos, setFilteredMontos] = useState(false); + + useEffect(() => { + if (isOpen) { + const fetchData = async () => { + const data = await FetchMontos(); + setMontos(data.results); + }; + fetchData(); + } + }, [isOpen]); + + useEffect(() => { + console.log(montos); + }, [montos]); + + const handleViewPdf = async (url: string) => { + try { + const token = Cookies.get('access_token'); + const response = await fetch(url, { + headers: { + Authorization: `Bearer ${token}`, + }, + }); + const blob = await response.blob(); + const pdfUrl = URL.createObjectURL(blob); + setPdfUrl(pdfUrl); + } catch (error) { + console.error('Error al obtener el PDF:', error); + } + }; + + const handleFilter = () => { + const filteredMontos = montos.filter((monto) => { + const fecha = new Date(monto.fecha_carga_comp_pdf); + const start = new Date(startDate); + const end = new Date(endDate); + start.setDate(start.getDate() + 1); + start.setHours(0, 0, 0, 0); + end.setDate(end.getDate() + 1); + end.setHours(23, 59, 59, 999); + return fecha >= start && fecha <= end; + }); + setMontos(filteredMontos); + setFilteredMontos(true); + }; + + const handleClearFilter = async () => { + const data = await FetchMontos(); + setMontos(data); + setStartDate(''); + setEndDate(''); + setFilteredMontos(false); + }; + + return ( + + + + Historial + + + {pdfUrl ? ( +