Files
advx/src/App.tsx
T
2025-04-10 23:07:21 -03:00

150 lines
6.9 KiB
TypeScript

import React from "react";
import {
createBrowserRouter,
RouterProvider,
createRoutesFromElements,
Route,
Navigate
} from "react-router-dom";
import { LoginPage } from "./components/LoginPage";
import { Dashboard } from "./components/Dashboard";
import { MainLayout } from "./components/layouts/MainLayout";
import { PrivateRoute } from "./components/PrivateRoute";
import { AuthProvider } from "./contexts/AuthContext";
import { ClientesPage } from "./components/clientes/ClientesPage";
import { QueryClient, QueryClientProvider } from "react-query";
import { ClienteDetalhes } from "./components/clientes/ClienteDetalhes";
import { ProcessosPage } from "./components/processos/ProcessosPage";
import { ProcessoDetalhes } from "./components/processos/ProcessoDetalhes";
import { UsuariosPage } from "./components/usuarios/UsuariosPage";
import { AdminRoute } from "./components/AdminRoute";
import { PerfilPage } from "./components/perfil/PerfilPage";
import { AtendimentosPage } from "./components/atendimentos/AtendimentosPage";
import { AtendimentoDetalhes } from "./components/atendimentos/AtendimentoDetalhes";
import { LocalizationProvider } from '@mui/x-date-pickers';
import { AdapterDateFns } from '@mui/x-date-pickers/AdapterDateFns';
import { ptBR } from 'date-fns/locale';
import { ThemeProvider } from './contexts/ThemeContext';
import { TarefasPage } from "./components/tarefas/TarefasPage";
import { DocumentosPage } from './components/DocumentosPage';
import { ToastContainer } from 'react-toastify';
import 'react-toastify/dist/ReactToastify.css';
import { GerenciarTemplates } from './components/documentos/GerenciarTemplates';
import { ConfiguracaoDocumento } from './components/documentos/ConfiguracaoDocumento';
import { ProcessoAdministrativoList } from './components/processosAdministrativos/ProcessoAdministrativoList';
import { ProcessoAdminDetalhes } from './components/processosAdministrativos/ProcessoAdminDetalhes';
import { ProtectedRoute } from './components/ProtectedRoute';
import { ProvaUpload } from './components/provas/ProvaUpload';
import { ProvaStatus } from './components/provas/ProvaStatus';
import { AdminProvas } from './components/provas/AdminProvas';
import { VerificarProva } from './components/provas/VerificarProva';
import { ErrorBoundary } from './components/ErrorBoundary';
import { PublicVerificarProva } from './components/provas/PublicVerificarProva';
import { ClientProvaUpload } from './components/provas/ClientProvaUpload';
import { PublicProvaStatus } from './components/provas/PublicProvaStatus';
// Importar os componentes de cálculos
import { CalculosList } from './components/calculos/CalculosList';
import { NovoCalculo } from './components/calculos/NovoCalculo';
import { DetalhesCalculo } from './components/calculos/DetalhesCalculo';
import { NovoPensaoAlimenticia } from './components/calculos/NovoPensaoAlimenticia';
const queryClient = new QueryClient();
const router = createBrowserRouter(
createRoutesFromElements(
<>
<Route path="/" element={<Navigate to="/dashboard" />} errorElement={<ErrorBoundary />} />
<Route path="/login" element={<LoginPage />} />
{/* Rotas públicas para validação digital */}
<Route path="/public/verificar/:hash" element={<PublicVerificarProva />} errorElement={<ErrorBoundary />} />
<Route path="/public/provas/upload" element={<ClientProvaUpload />} errorElement={<ErrorBoundary />} />
<Route path="/public/provas/status/:id" element={<PublicProvaStatus />} errorElement={<ErrorBoundary />} />
<Route element={<PrivateRoute />}>
<Route element={<MainLayout />}>
<Route path="dashboard" element={<Dashboard />} />
<Route path="documentos" element={<DocumentosPage />} />
<Route path="documentos/templates" element={<GerenciarTemplates />} />
<Route path="documentos/:id" element={<DocumentosPage />} />
<Route path="documentos/configuracoes" element={<ConfiguracaoDocumento />} />
<Route path="processos/:processoId/documentos" element={<DocumentosPage />} />
<Route path="atendimentos/:atendimentoId/documentos" element={<DocumentosPage />} />
<Route path="/processos" element={<ProcessosPage />} />
<Route path="/processos/:id" element={<ProcessoDetalhes />} />
<Route path="/clientes" element={<ClientesPage />} />
<Route path="/clientes/:id" element={<ClienteDetalhes />} />
<Route path="/perfil" element={<PerfilPage />} />
<Route path="/atendimentos" element={<AtendimentosPage />} />
<Route path="/atendimentos/:id" element={<AtendimentoDetalhes />} />
<Route path="/tarefas" element={<TarefasPage />} />
<Route path="/processos-administrativos" element={<ProtectedRoute roles={['ADVOGADO_ADMIN', 'ADVOGADO', 'ASSISTENTE']}><ProcessoAdministrativoList /></ProtectedRoute>} />
<Route path="/processos-administrativos/:id" element={<ProtectedRoute roles={['ADVOGADO_ADMIN', 'ADVOGADO', 'ASSISTENTE']}><ProcessoAdminDetalhes /></ProtectedRoute>} />
<Route path="/provas/upload" element={<ProvaUpload />} />
<Route path="/provas/status/:id" element={<ProvaStatus />} />
<Route path="/provas/admin" element={
<ProtectedRoute roles={['ADVOGADO_ADMIN']}>
<AdminProvas />
</ProtectedRoute>
} />
<Route
path="/provas/verificar/:hash"
element={<VerificarProva />}
errorElement={<ErrorBoundary />}
/>
{/* Rotas para Cálculos Judiciais */}
<Route path="/calculos" element={
<ProtectedRoute>
<CalculosList />
</ProtectedRoute>
} />
<Route path="/calculos/novo" element={
<ProtectedRoute>
<NovoCalculo />
</ProtectedRoute>
} />
<Route path="/calculos/:id" element={
<ProtectedRoute>
<DetalhesCalculo />
</ProtectedRoute>
} />
{/* Rotas para Pensão Alimentícia */}
<Route path="/pensao-alimenticia/nova" element={
<ProtectedRoute>
<NovoPensaoAlimenticia />
</ProtectedRoute>
} />
<Route path="/pensao-alimenticia/:id" element={
<ProtectedRoute>
<DetalhesCalculo />
</ProtectedRoute>
} />
</Route>
</Route>
<Route path="*" element={<Navigate to="/login" />} />
</>
)
);
export const App: React.FC = () => {
return (
<QueryClientProvider client={queryClient}>
<LocalizationProvider dateAdapter={AdapterDateFns} adapterLocale={ptBR}>
<AuthProvider>
<ThemeProvider>
<RouterProvider router={router} />
<ToastContainer />
</ThemeProvider>
</AuthProvider>
</LocalizationProvider>
</QueryClientProvider>
);
};
export default App;