diff --git a/cosiap_frontend/src/App.jsx b/cosiap_frontend/src/App.jsx
index ea4bc2962499ea2574f4cac4b8175f91fa34786d..7a199b1ba543bbf351e96e91343145df81776ca0 100644
--- a/cosiap_frontend/src/App.jsx
+++ b/cosiap_frontend/src/App.jsx
@@ -7,6 +7,7 @@ import {
LoginRequiredRoute,
IsAdminRequiredRoute,
IsLogged,
+ IsSolicitanteRequiredRoute,
} from "@/components/common/utility/LoginRequiredRoute";
import "./App.css";
import PageLoader from "@/components/common/ui/PageLoader";
@@ -31,6 +32,8 @@ import Perfil from '@/components/users/Perfil/Perfil';
import ListaSolicitudes from "./components/solicitudes/HistorialSolicitudes";
import EditarSolicitud from "./components/solicitudes/EditarSolicitud";
import VisualizarSolicitud from "./components/solicitudes/VerSolicitud";
+import RecepcionApoyo from "./components/users/RecepcionApoyo/RecepcionApoyo";
+import Solicitudes from "./components/SolicitudesAdmin/Solicitudes";
function App() {
const [viewPageLoader, setViewPageLoader] = useState(false);
@@ -100,13 +103,15 @@ function RoutesApp({ setViewPageLoader }) {
path="/modalidades"
element={}
/>
- } />
- } />
- } />
- } />
- } />
- } />
- } />
+ }>
+ } />
+ } />
+ } />
+ } />
+ } />
+ } />
+ } />
+
{/* Solo administradores pueden acceder a estas url */}
} />
- } />
+ } />
} />
} />
diff --git a/cosiap_frontend/src/api.js b/cosiap_frontend/src/api.js
index a4ce7fb04a8041e58fb64a64b9da4a8c9a7639dc..02c4b17de64f43a4b49c8ad2b6d09afed2767441 100644
--- a/cosiap_frontend/src/api.js
+++ b/cosiap_frontend/src/api.js
@@ -59,6 +59,13 @@ const api = {
getId: () => ax.get('api/usuarios/uid/'),
getIsCompleteData: () => ax.get('api/usuarios/user-complete-data/'),
+ datos_bancarios: {
+ get: () => ax.get('api/usuarios/datos-bancarios'),
+ post: (data) => ax.post('api/usuarios/datos-bancarios/', data),
+ update: (id, data) => ax.put(`api/usuarios/datos-bancarios/${id}`, data),
+ delete: (id) => ax.delete(`api/usuarios/datos-bancarios/${id}`),
+ },
+
administradores: {
get: () => ax.get('api/usuarios/administradores'),
post: (data) => ax.post('api/usuarios/administradores/', data),
diff --git a/cosiap_frontend/src/components/FormsValidations.jsx b/cosiap_frontend/src/components/FormsValidations.jsx
index a9ec178075353e00f9e5db491b8d78c50580dcae..934eaae76f5aefcae6a308f6e5a462de13d8ecb8 100644
--- a/cosiap_frontend/src/components/FormsValidations.jsx
+++ b/cosiap_frontend/src/components/FormsValidations.jsx
@@ -116,4 +116,40 @@ export const IdentificationValidationSchema = Yup.object().shape({
.test("fileSize", "El archivo supera el tamaño máximo", (value) => {
return value && value[0] && value[0].size <= FILE_SIZE;
})
-});
\ No newline at end of file
+});
+
+export const DatosBancariosValidationSchema = Yup.object().shape({
+ nombre_banco: Yup.string()
+ .required('El nombre del banco es obligatorio')
+ .max(20, 'El nombre del banco no puede exceder los 20 caracteres'),
+
+ cuenta_bancaria: Yup.string()
+ .required('El número de cuenta es obligatorio')
+ .matches(/^\d{10}$/, 'El número de cuenta debe tener 10 dígitos'),
+
+ clabe_bancaria: Yup.string()
+ .required('La CLABE bancaria es obligatoria')
+ .matches(/^\d{16}$/, 'La CLABE bancaria debe tener 16 dígitos'),
+
+ doc_estado_cuenta: Yup.mixed()
+ .nullable()
+ .test('fileType', 'Solo se permiten archivos PDF', value => {
+ return !value || (value && value[0] && value[0].type === 'application/pdf');
+ }),
+
+ doc_constancia_sat: Yup.mixed()
+ .nullable()
+ .test('fileType', 'Solo se permiten archivos PDF', value => {
+ return !value || (value && value[0] && value[0].type === 'application/pdf');
+ }),
+
+ codigo_postal_fiscal: Yup.string()
+ .required('El código postal fiscal es obligatorio')
+ .matches(/^\d{5}$/, 'El código postal debe tener 5 dígitos'),
+
+ regimen: Yup.string()
+ .required('El régimen fiscal es obligatorio')
+ .oneOf([
+ '1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'
+ ], 'Selecciona un régimen válido')
+});
diff --git a/cosiap_frontend/src/components/SolicitudesAdmin/Solicitudes.jsx b/cosiap_frontend/src/components/SolicitudesAdmin/Solicitudes.jsx
new file mode 100644
index 0000000000000000000000000000000000000000..065d4b6cbb271b9351063125bc4bedb80d07c86a
--- /dev/null
+++ b/cosiap_frontend/src/components/SolicitudesAdmin/Solicitudes.jsx
@@ -0,0 +1,12 @@
+import SectionContainer from "../common/ui/SectionContainers/SectionContainer";
+
+export default function Solicitudes( {} ){
+ return (
+ <>
+
+
+
+
+ >
+ );
+}
\ No newline at end of file
diff --git a/cosiap_frontend/src/components/common/layouts/LayoutBaseNavigation.jsx b/cosiap_frontend/src/components/common/layouts/LayoutBaseNavigation.jsx
index d24a7f67581868cacef44eb7ad3807a4b4a7a6c7..bd0869a0b55306ed02df49bbcfe2d6e40936f202 100644
--- a/cosiap_frontend/src/components/common/layouts/LayoutBaseNavigation.jsx
+++ b/cosiap_frontend/src/components/common/layouts/LayoutBaseNavigation.jsx
@@ -42,8 +42,8 @@ const linksItemsSolicitante = [
},
{
nameIcon: 'mark_as_unread',
- nameItem: 'Recepción de ayuda',
- navigate: '/recepcion_ayuda',
+ nameItem: 'Recepción de apoyo',
+ navigate: '/recepcion_apoyo',
isSelected: false
},
{
diff --git a/cosiap_frontend/src/components/common/utility/LoginRequiredRoute.jsx b/cosiap_frontend/src/components/common/utility/LoginRequiredRoute.jsx
index 0a613044aae140624d3d170fb2a2456bfa78101c..49dca2b05bfd7b7c26b28b70e1841d0499df8d8a 100644
--- a/cosiap_frontend/src/components/common/utility/LoginRequiredRoute.jsx
+++ b/cosiap_frontend/src/components/common/utility/LoginRequiredRoute.jsx
@@ -26,6 +26,18 @@ export const IsAdminRequiredRoute = ({ setViewPageLoader }) => {
}
};
+export const IsSolicitanteRequiredRoute = ({ setViewPageLoader }) => {
+ const {isAdmin} = useAutenticacion();
+
+ if (isAdmin === true) {
+ return ;
+ } else if (isAdmin === undefined) {
+ return null;
+ }else {
+ return ;
+ }
+};
+
export const IsLogged = () => {
const { token } = useAutenticacion();
if (token === null) {
diff --git a/cosiap_frontend/src/components/users/Perfil/InformacionIdentificacion.jsx b/cosiap_frontend/src/components/users/Perfil/InformacionIdentificacion.jsx
index 06557d2a31315188c8c93676bfcc06347d0e40fe..194a4021f55a22d3d3ef3c67e5335705fe9c9968 100644
--- a/cosiap_frontend/src/components/users/Perfil/InformacionIdentificacion.jsx
+++ b/cosiap_frontend/src/components/users/Perfil/InformacionIdentificacion.jsx
@@ -13,7 +13,6 @@ export default function InformacionIdentificacion( {datosSolicitante, setViewPag
const [isEditing, setIsEditing] = useState(false); // Estado para controlar si está en modo edición
const [modifiedFields, setModifiedFields] = useState({}); // Campos que han sido modificados
const [showModalConfirmation, setShowModalConfirmation] = useState(false); // Control para mostrar el modal de confirmación
- const [urlFileIne, setUrlFileIne] = useState(null);
// Hook para manejar formularios
const {
register, // Registra los inputs en el formulario
@@ -39,9 +38,6 @@ export default function InformacionIdentificacion( {datosSolicitante, setViewPag
// useEffect que se ejecuta cada vez que los datos del solicitante cambian
useEffect(() => {
resetData(); // Resetea los datos cuando cambia datosSolicitante
- if(datosSolicitante.INE){//Si el usuario ya tiene un archivo ine subido
- setUrlFileIne(apiUrl + datosSolicitante.INE);//Declaramos la ruta con el archivo subido
- }
}, [datosSolicitante, reset]);
// Función que maneja el envío del formulario
@@ -102,9 +98,6 @@ export default function InformacionIdentificacion( {datosSolicitante, setViewPag
setIsEditing(false); // Deshabilitar el modo edición
resetData(); // Restablecer los datos originales
setModifiedFields({}); // Limpiar los campos modificados
- if(datosSolicitante.INE){//Si el usuario ya tiene un archivo ine subido
- setUrlFileIne(apiUrl + datosSolicitante.INE);//Declaramos la ruta con el archivo subido
- }
};
// Función para manejar el clic de "Guardar" con validación
@@ -148,7 +141,7 @@ export default function InformacionIdentificacion( {datosSolicitante, setViewPag
{
const file = e.target.files[0]; // Capturamos el archivo seleccionado
// Si no hay archivo seleccionado, restablecemos el estado
@@ -52,8 +53,8 @@ export default function Label_InputFile({urlFile, label, id, name, type, placeho
{urlFile && (