Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
…stionTUP into dev
  • Loading branch information
MirandaAriano committed Dec 12, 2024
2 parents ebc5091 + ea50632 commit 81cc16a
Show file tree
Hide file tree
Showing 36 changed files with 976 additions and 329 deletions.
5 changes: 1 addition & 4 deletions FrontAdmin/src/API/AlumnosPendienteFirma.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,7 @@ export const FetchPendientesFirma = async () => {

if (response.ok) {
const data = await response.json();
return {
results: data.results, // Lista de resultados
count: data.count, // Total de elementos
};
return data;
} else {
throw new Error('Error en la respuesta del servidor');
}
Expand Down
6 changes: 3 additions & 3 deletions FrontAdmin/src/API/EstadoCuentaAlumno.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
import Cookies from 'js-cookie';

export const FetchEstadoCuenta = async (dni: number) => {
export const FetchEstadoCuenta = async (dni: number, limit: number, offset: number) => {
try {
const token = Cookies.get('tokennn');

const response = await fetch(`http://localhost:8000/api/cuotas/alumno/${dni}/`, {
const response = await fetch(`http://localhost:8000/api/cuotas/alumno/${dni}?limit=${limit}&offset=${offset}`, {
method: 'GET',
headers: {
'Content-Type': 'application/json',
Expand All @@ -14,7 +14,7 @@ export const FetchEstadoCuenta = async (dni: number) => {

if (response.ok) {
const data = await response.json();
return data.results;
return data;
} else {
throw new Error('Error en la respuesta del servidor');
}
Expand Down
38 changes: 16 additions & 22 deletions FrontAdmin/src/API/Inhabilitaciones.ts
Original file line number Diff line number Diff line change
Expand Up @@ -46,30 +46,24 @@ export const getAlumnosaInhabilitar = async () => {

};

export const inhabilitarAlumno = async (legajo: number) => {
try {
const token = Cookies.get('tokennn');
const response = await fetch(`http://localhost:8000/api/alumnos/alumno-a-inhabilitar/${legajo}/` , {
method: 'DELETE',
export const alumnosaHabilitar = async () => {
const token = Cookies.get('tokennn');
const response = await fetch('http://localhost:8000/api/alumnos/alumnos-a-habilitar', {
method: 'GET',
headers: {
'Content-Type': 'application/json',
Authorization: `Bearer ${token}`,
},
});
if (response.ok) {
if (response.status === 204) {
// No hay contenido en la respuesta
return {};
} else {
const data = await response.json();
return data;
}
} else {
throw new Error('Error en la respuesta del servidor');
'Content-Type': 'application/json',
'Authorization': `Bearer ${token}`
}
} catch (error) {
throw new Error('Network error: ' + error);
});
if (response.ok) {
const data = await response.json();
return data;
} else {
const errorData = await response.json();
throw new Error(
`Error en la respuesta del servidor: ${errorData.message}`
);
}
}

};

82 changes: 82 additions & 0 deletions FrontAdmin/src/API/TareasProgramadas.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
import Cookies from 'js-cookie';


export const actualizarpagos = async () => {
const token = Cookies.get('tokennn');
const response = await fetch('http://localhost:8000/api/pagos/actualizar-pagos', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${token}`
}
});
if (response.ok) {
const data = await response.json();
return data;
} else {
const errorData = await response.json();
throw new Error(
`Error en la respuesta del servidor: ${errorData.message}`
);
}
};

export const actualizarinhabilitaciones = async () => {
const token = Cookies.get('tokennn');
const response = await fetch('http://localhost:8000/api/alumnos/actualizar-inhabiliciones', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${token}`
}
});
if (response.ok) {
const data = await response.json();
return data;
} else {
const errorData = await response.json();
throw new Error(
`Error en la respuesta del servidor: ${errorData.message}`
);
}
};

export const actualizarmaterias = async () => {
const token = Cookies.get('tokennn');
const response = await fetch('http://localhost:8000/api/materias/actualizar-materias', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${token}`
}
});
if (response.ok) {
const data = await response.json();
return data;
} else {
const errorData = await response.json();
throw new Error(
`Error en la respuesta del servidor: ${errorData.message}`
);
}
};

export const actualizarcuotas = async () => {
const token = Cookies.get('tokennn');
const response = await fetch('http://localhost:8000/api/cuotas/actualizar-cuotas', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${token}`
}
});
if (response.ok) {
const data = await response.json();
return data;
} else {
const errorData = await response.json();
throw new Error(
`Error en la respuesta del servidor: ${errorData.message}`
);
}
};
6 changes: 5 additions & 1 deletion FrontAdmin/src/components/Header/HeaderContent.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import {
Text,
useDisclosure,
Avatar,
useBreakpointValue
} from '@chakra-ui/react';
import imgLogo from '../icons/Logos TUP_Mesa de trabajo 1.png';
import logoUser from '../icons/logo-user.png';
Expand All @@ -33,6 +34,9 @@ export function HeaderContent({ onOpen }: { onOpen: any }) {
return fullName.trim();
}

// Definir el ancho de la caja de SubMenuContent según el tamaño de la pantalla
const isMobile = useBreakpointValue({ base: true, xl: false });

// Perfil
const {
isOpen: isOpen1,
Expand Down Expand Up @@ -74,7 +78,7 @@ export function HeaderContent({ onOpen }: { onOpen: any }) {
color="white"
/>
<Flex direction={"row"} alignItems={"center"} gap={3}>
<Text fontFamily={"'Roboto',sans-serif"} fontWeight="600">{user}</Text>
<Text display={isMobile ? 'none' : ''} fontFamily={"'Roboto',sans-serif"} fontWeight="600">{user}</Text>
<MenuButton borderRadius={'full'}>
<Avatar
name={formatUserName(user || '')}
Expand Down
6 changes: 3 additions & 3 deletions FrontAdmin/src/components/Pages-Alumnos/CompromisoDePago.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,6 @@ export default function CompromisoDePago() {

useEffect(() => {
if (ultimo) {
console.log(ultimo);
if (ultimo.firmo_ultimo_compromiso === true) {
setUltimoCompromiso(true);
}
Expand Down Expand Up @@ -152,13 +151,14 @@ export default function CompromisoDePago() {
p={4}
borderRadius="md"
w="100%"
mt={4}
mt={1}
>
{pdfUrl ? (
<iframe
src={pdfUrl}
width={isMobile ? "100%" : "1000px"}
height={isMobile ? "500px" : "400px"}
style={{ display: 'block', margin: '0 auto' }}
/>
) : error? (
<Text>PDF no disponible</Text>
Expand All @@ -167,7 +167,7 @@ export default function CompromisoDePago() {
</Flex>

<Flex justifyContent={isMobile ? "center" : "flex-end"} mt={4} mb={4} flex={1} width="100%">
<Button colorScheme="teal" isDisabled={ultimoCompromiso || adeuda || error} onClick={handleFirmar}>
<Button colorScheme="teal" isDisabled={ultimoCompromiso || adeuda} onClick={handleFirmar}>
Firmar
</Button>
</Flex>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,12 @@ const DarseBaja = () => {
Compromiso de pago no firmado
</Alert>
)}

{!puedeSolicitarBaja && (
<Alert status="error">
<AlertIcon />
No se puede solicitar baja en este momento, debido a que no se encuentra dentro de la fecha permitida.
</Alert>
)}


<Box
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import React from "react";
import { Flex, Button, Text, Stack, Card, CardBody, Box,Tabs,TabList, TabPanels, TabPanel, Table, Tag,Thead,Tr, Th, Tbody, Tab,Td, Tooltip, Alert, AlertIcon } from "@chakra-ui/react";
import { useDisclosure } from "@chakra-ui/react";
import { useDisclosure, useBreakpointValue} from "@chakra-ui/react";
import {useState, useEffect} from 'react';
import {AttachmentIcon, ArrowLeftIcon, ArrowRightIcon, QuestionOutlineIcon} from '@chakra-ui/icons';
import { IoEyeOutline } from "react-icons/io5";
Expand All @@ -19,7 +19,7 @@ interface Cuota {
numero: number,
montoActual: number;
fechaVencimiento: string;
valorpagado: number;
monto_pagado: number;
estado: string;
tipo: string;
valorinformado: number;
Expand Down Expand Up @@ -97,6 +97,9 @@ function InformarPago() {

const [cuotaCompleta, setCuotaCompleta] = useState()

// Definir el ancho de la caja de SubMenuContent según el tamaño de la pantalla
const isMobile = useBreakpointValue({ base: true, xl: false });

const handleNextPage = () => {
if (offset + limit < totalCuotas) {
setOffset1(offset + limit);
Expand Down Expand Up @@ -158,6 +161,7 @@ function InformarPago() {
const fetchPagos = async () => {
try {
const data = await FetchResumenPagos(undefined);
console.log('pagos:', data);
setPagos(data);
} catch (error) {
setError(error);
Expand Down Expand Up @@ -269,48 +273,52 @@ function InformarPago() {
</Tag>
</Box>

<Box w="100%" mb={7} display="flex" gap={2} flexDirection={{ base: "column", sm: "row" }} alignItems="center" justifyContent="center" flexWrap="wrap">
<Box w="100%" mb={7} display="flex" gap={2} flexDirection={{ base: "column", sm: "row" }} alignItems="center" justifyContent="center" flexWrap="wrap" paddingBottom={isMobile ? '20px' : ''} borderBottom={isMobile ? '2px solid gray' : ''}>
<Tag flex="1" p="10px" fontSize={16}>
<Flex alignItems="center" direction={{ base: "column", md: "row" }}>
<Text color="gray" textAlign="center">
Último Compromiso de Pago:
Último Compromiso de Pago:
</Text>
<Text size="sm" fontWeight="semibold">
<Text size="sm" fontWeight="semibold" ml={'2px'}>
{compromisoFirmado && compromisoFirmado.results[0]?.firmo_ultimo_compromiso ? 'Firmado' : 'Pendiente de firma'}
</Text>
</Flex>
</Tag>
<Tag flex="1" p="10px" fontSize={16} bg={alumno?.estado_academico === 'Habilitado' ? "#C0EBA6" : "#FF8A8A"}>
<Flex alignItems="center" justifyContent="center" direction={{ base: "column", md: "row" }}>
<Text color="gray">
Condición Sysacad:
Condición Sysacad:
</Text>
<Text size="sm" fontWeight="semibold">
<Text size="sm" fontWeight="semibold" ml={'2px'}>
{alumno?.estado_academico}
</Text>
</Flex>
</Tag>
{alumno?.estado_financiero === 'Inhabilitado' ? (
<Tag flex="1" p="10px" fontSize={16} bg="#FF8A8A">
<Text color="gray">
Motivo:
</Text>
<Text size="sm" pl="8px" fontWeight="semibold">
Deudor
</Text>
</Tag>
) : (
<Tag flex="1" p="10px" fontSize={16}>
<Text color="gray">
Ultimo Periodo Cursado
</Text>
<Text size="sm" pl="8px" fontWeight="semibold">
{alumnoInfo.ultimo_cursado}
</Text>
</Tag>
)}
</Box>

{ isMobile ? (//mobile
<Box>
{cuotas && cuotas.map((cuota, index) => (
<Box
key={index}
borderWidth="1px"
borderRadius="lg"
overflow="hidden"
p={4}
mb={4}
background={'blue.50'}
>
<Text textAlign={'center'} fontWeight={'600'}>Cuota Número: {cuota.numero}</Text>
<Text>Fecha Vto.:{formatoFechaISOaDDMMAAAA(cuota.fechaVencimiento)}</Text>
<Text>Monto Actual: {'$ ' + new Intl.NumberFormat('es-ES').format(cuota.montoActual)}</Text>
<Text>Monto Pagado: {'$ ' + new Intl.NumberFormat('es-ES').format(cuota.monto_pagado)}</Text>
<Text>Valor Informado: {'$ ' + new Intl.NumberFormat('es-ES').format( cuota.valorinformado)}</Text>
<Text>Valor Adeudado: {'$ ' + new Intl.NumberFormat('es-ES').format(cuota.montoActual - cuota.monto_pagado )}</Text>
</Box>
))}
</Box>
)
: (
<Box w={"100%"} display={"flex"} justifyContent={"center"} >
{cuotas.length > 0 ? (
<Table variant="simple" width="90%" borderColor={"gray.200"}
Expand Down Expand Up @@ -349,11 +357,11 @@ function InformarPago() {
<Td textAlign="center">{cuota.numero}</Td>
<Td textAlign="center">{formatoFechaISOaDDMMAAAA(cuota.fechaVencimiento)}</Td>
<Td textAlign="center">{'$ ' + new Intl.NumberFormat('es-ES').format(cuota.montoActual)}</Td>
<Td textAlign="center">{'$ ' + new Intl.NumberFormat('es-ES').format(cuota.valorpagado)}</Td>
<Td textAlign="center">{'$ ' + new Intl.NumberFormat('es-ES').format(cuota.monto_pagado)}</Td>
<Td textAlign="center">{'$ ' + new Intl.NumberFormat('es-ES').format(cuota.valorinformado)}</Td>
<Td textAlign="center">{'$ ' + new Intl.NumberFormat('es-ES').format(cuota.montoActual - cuota.valorpagado - cuota.valorinformado)}</Td>
<Td textAlign="center">{'$ ' + new Intl.NumberFormat('es-ES').format(cuota.montoActual - cuota.monto_pagado)}</Td>
<Td textAlign="center" p="8px">{
cuota.valorinformado > 0 || cuota.valorpagado > 0 ?
cuota.monto_pagado > 0 ?
<Button bg='transparent' _hover='transparent' m="0px" p="0px" onClick={() => handleDetailPay(cuota)}><IoEyeOutline size="22px"> </IoEyeOutline> </Button>
:
<Button bg='transparent' _hover='transparent' disabled cursor="not-allowed" pointerEvents="none"> <IoEyeOutline color='gray' size="22px"> </IoEyeOutline> </Button>
Expand All @@ -377,13 +385,15 @@ function InformarPago() {
)}

</Box>
)}

{cuotas.length > 0 ?
<Box w="90%" mt="20px" ml="70px">
<Flex justifyContent="space-between" >
<Box w="90%" mt="20px" ml={isMobile? '' : "70px"}>
<Flex justifyContent="space-between">
<Button onClick={handlePreviousPage} isDisabled={offset === 0} _hover="none" color="white" leftIcon={<ArrowLeftIcon/>}>
Anterior
</Button>
<Text textAlign={"center"} mb={0}>Página {Math.ceil(offset / limit) + 1} de {Math.ceil(totalCuotas / limit)}</Text>
<Text m={isMobile? '2px' : ""} textAlign={"center"} mb={0}>Página {Math.ceil(offset / limit) + 1} de {Math.ceil(totalCuotas / limit)}</Text>
<Button onClick={handleNextPage} isDisabled={offset + limit >= totalCuotas} _hover="none" color="white" rightIcon={<ArrowRightIcon/>}>
Siguiente
</Button>
Expand Down Expand Up @@ -420,11 +430,11 @@ function InformarPago() {
<Td textAlign="center">{cuota.nro_cuota}</Td>
<Td textAlign="center">{'$ ' + new Intl.NumberFormat('es-ES').format(cuota.tipo === "Matrícula" ? (detalleCompromiso?.matricula ?? 0) : (cuotaCompleta ? (detalleCompromiso?.monto_completo) ?? 0 : (detalleCompromiso?.cuota_reducida) ?? 0) )}</Td>
<Td textAlign="center">
{'$ ' + new Intl.NumberFormat('es-ES').format(cuota.tipo === "Matrícula" ? 0 : (calcularMontoConMora(pago.fecha, cuota.cuota_completa, cuota.fecha_vencimiento) ?? 0) - (cuota.cuota_completa ? (detalleCompromiso?.monto_completo) ?? 0 : (detalleCompromiso?.cuota_reducida) ?? 0) ) }
{'$ 0 '/* + new Intl.NumberFormat('es-ES').format(cuota.tipo === "Matrícula" ? 0 : (calcularMontoConMora(pago.fecha, cuota.cuota_completa, cuota.fecha_vencimiento) ?? 0) - (cuota.cuota_completa ? (detalleCompromiso?.monto_completo) ?? 0 : (detalleCompromiso?.cuota_reducida) ?? 0) ) */ }
</Td>
<Td textAlign="center">{'$ ' + new Intl.NumberFormat('es-ES').format(cuota.monto)}</Td>
<Td textAlign="center">{formatoFechaISOaDDMMAAAA(pago.fecha)}</Td>
<Td textAlign="center">{'$ ' + new Intl.NumberFormat('es-ES').format(pago.monto_informado > cuota.monto ? cuota.monto : pago.monto_informado)}</Td>
<Td textAlign="center">{'$ ' + new Intl.NumberFormat('es-ES').format(cuota.monto)}</Td>
</>
) : null
))}
Expand Down
Loading

0 comments on commit 81cc16a

Please sign in to comment.