Files
advx/src/App.tsx
T
rodrigo 5acec6b71e Lint errors
Signed-off-by: Rodrigo Martins <rodrigo.sousa.577@gmail.com>
2025-04-12 20:32:39 -03:00

216 lines
7.6 KiB
TypeScript

import { LoginPage } from "./components/LoginPage";
import { Dashboard } from "./components/Dashboard";
import { MainLayout } from "./components/layouts/MainLayout";
import { AuthProvider } from "./contexts/AuthContext";
import { LocalizationProvider } from "@mui/x-date-pickers";
import { AdapterDateFns } from "@mui/x-date-pickers/AdapterDateFns";
import { ptBR } from "date-fns/locale";
import React from "react";
import { QueryClient, QueryClientProvider } from "react-query";
import {
createBrowserRouter,
RouterProvider,
createRoutesFromElements,
Route,
Navigate,
} from "react-router-dom";
import { ThemeProvider } from "./contexts/ThemeContext";
import { TarefasPage } from "./components/tarefas/TarefasPage";
import { DocumentosPage } from "./components/DocumentosPage";
import { ToastContainer } from "react-toastify";
import { AdminRoute } from "./components/AdminRoute";
import { AtendimentoDetalhes } from "./components/atendimentos/AtendimentoDetalhes";
import { AtendimentosPage } from "./components/atendimentos/AtendimentosPage";
import "react-toastify/dist/ReactToastify.css";
// Importar os componentes de cálculos
import { CalculosList } from "./components/calculos/CalculosList";
import { DetalhesCalculo } from "./components/calculos/DetalhesCalculo";
import { NovoCalculo } from "./components/calculos/NovoCalculo";
import { NovoPensaoAlimenticia } from "./components/calculos/NovoPensaoAlimenticia";
import { ClienteDetalhes } from "./components/clientes/ClienteDetalhes";
import { ClientesPage } from "./components/clientes/ClientesPage";
import { ConfiguracaoDocumento } from "./components/documentos/ConfiguracaoDocumento";
import { GerenciarTemplates } from "./components/documentos/GerenciarTemplates";
import { ErrorBoundary } from "./components/ErrorBoundary";
import { PerfilPage } from "./components/perfil/PerfilPage";
import { PrivateRoute } from "./components/PrivateRoute";
import { ProcessoDetalhes } from "./components/processos/ProcessoDetalhes";
import { ProcessosPage } from "./components/processos/ProcessosPage";
import { ProcessoAdminDetalhes } from "./components/processosAdministrativos/ProcessoAdminDetalhes";
import { ProcessoAdministrativoList } from "./components/processosAdministrativos/ProcessoAdministrativoList";
import { ProtectedRoute } from "./components/ProtectedRoute";
import { AdminProvas } from "./components/provas/AdminProvas";
import { ClientProvaUpload } from "./components/provas/ClientProvaUpload";
import { ProvaStatus } from "./components/provas/ProvaStatus";
import { ProvaUpload } from "./components/provas/ProvaUpload";
import { PublicProvaStatus } from "./components/provas/PublicProvaStatus";
import { PublicVerificarProva } from "./components/provas/PublicVerificarProva";
import { VerificarProva } from "./components/provas/VerificarProva";
import { UsuariosPage } from "./components/usuarios/UsuariosPage";
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;