Skip to content

Commit a4acbf1

Browse files
authored
Merge pull request #105 from ICEI-PUC-Minas-PMV-ADS/report
feat: tela de relatorios mobile com filtro, KPIs e exportacao de PDF
2 parents 25071ea + 2d999e2 commit a4acbf1

10 files changed

Lines changed: 494 additions & 99 deletions

File tree

.gitignore

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,4 +67,6 @@ logs/
6767

6868
.env
6969
.env.*
70-
**/appsettings.Development.jsonuardian
70+
**/appsettings.Development.jsonuardian
71+
72+
.expo/

src/frontend/src/App.jsx

Lines changed: 142 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -13,74 +13,149 @@ import Configuracoes from "./pages/Configuracoes";
1313
import Notificacoes from "./pages/Notificacoes";
1414

1515
export default function App() {
16-
const location = useLocation();
17-
const publicRoutes = ["/login", "/register", "/forgot-password", "/reset-password", "/"];
18-
const isPublicRoute = publicRoutes.includes(location.pathname);
19-
const authenticated = isAuthenticated();
20-
21-
return (
22-
<div style={styles.container}>
23-
{!isPublicRoute && authenticated && <Sidebar />}
24-
25-
<div style={{ ...styles.content, marginLeft: (!isPublicRoute && authenticated) ? "256px" : "0" }}>
26-
<Routes>
27-
<Route path="/" element={<Navigate to="/dashboard" replace />} />
28-
<Route
29-
path="/login"
30-
element={authenticated ? <Navigate to="/dashboard" replace /> : <Login />}
31-
/>
32-
<Route
33-
path="/register"
34-
element={authenticated ? <Navigate to="/clientes" replace /> : <Register />}
35-
/>
36-
<Route
37-
path="/forgot-password"
38-
element={authenticated ? <Navigate to="/clientes" replace /> : <ForgotPassword />}
39-
/>
40-
<Route
41-
path="/reset-password"
42-
element={<ResetPassword />}
43-
/>
44-
<Route
45-
path="/clientes"
46-
element={authenticated ? <Clientes /> : <Navigate to="/login" replace />}
47-
/>
48-
<Route
49-
path="/relatorios"
50-
element={authenticated ? <Reports /> : <Navigate to="/login" replace />}
51-
/>
52-
<Route
53-
path="/dashboard"
54-
element={authenticated ? <Dashboard /> : <Navigate to="/login" replace />}
55-
/>
56-
<Route
57-
path="/emprestimos"
58-
element={authenticated ? <Emprestimos /> : <Navigate to="/login" replace />}
59-
/>
60-
61-
<Route
62-
path="/configuracoes"
63-
element={authenticated ? <Configuracoes /> : <Navigate to="/login" replace />}
64-
/>
65-
66-
<Route
67-
path="/notificacoes"
68-
element={authenticated ? <Notificacoes /> : <Navigate to="/login" replace />}
69-
/>
70-
71-
</Routes>
72-
</div>
73-
</div>
74-
);
16+
const location = useLocation();
17+
18+
const publicRoutes = [
19+
"/login",
20+
"/register",
21+
"/forgot-password",
22+
"/reset-password",
23+
"/",
24+
];
25+
26+
const isPublicRoute = publicRoutes.includes(location.pathname);
27+
const authenticated = isAuthenticated();
28+
29+
return (
30+
<div style={styles.container}>
31+
{!isPublicRoute && authenticated && <Sidebar />}
32+
33+
<div
34+
style={{
35+
...styles.content,
36+
marginLeft: !isPublicRoute && authenticated ? "256px" : "0",
37+
}}
38+
>
39+
<Routes>
40+
<Route path="/" element={<Navigate to="/dashboard" replace />} />
41+
42+
<Route
43+
path="/login"
44+
element={
45+
authenticated ? (
46+
<Navigate to="/dashboard" replace />
47+
) : (
48+
<Login />
49+
)
50+
}
51+
/>
52+
53+
<Route
54+
path="/register"
55+
element={
56+
authenticated ? (
57+
<Navigate to="/clientes" replace />
58+
) : (
59+
<Register />
60+
)
61+
}
62+
/>
63+
64+
<Route
65+
path="/forgot-password"
66+
element={
67+
authenticated ? (
68+
<Navigate to="/clientes" replace />
69+
) : (
70+
<ForgotPassword />
71+
)
72+
}
73+
/>
74+
75+
<Route
76+
path="/reset-password"
77+
element={<ResetPassword />}
78+
/>
79+
80+
<Route
81+
path="/clientes"
82+
element={
83+
authenticated ? (
84+
<Clientes />
85+
) : (
86+
<Navigate to="/login" replace />
87+
)
88+
}
89+
/>
90+
91+
<Route
92+
path="/relatorios"
93+
element={
94+
authenticated ? (
95+
<Reports />
96+
) : (
97+
<Navigate to="/login" replace />
98+
)
99+
}
100+
/>
101+
102+
<Route
103+
path="/dashboard"
104+
element={
105+
authenticated ? (
106+
<Dashboard />
107+
) : (
108+
<Navigate to="/login" replace />
109+
)
110+
}
111+
/>
112+
113+
<Route
114+
path="/emprestimos"
115+
element={
116+
authenticated ? (
117+
<Emprestimos />
118+
) : (
119+
<Navigate to="/login" replace />
120+
)
121+
}
122+
/>
123+
124+
<Route
125+
path="/configuracoes"
126+
element={
127+
authenticated ? (
128+
<Configuracoes />
129+
) : (
130+
<Navigate to="/login" replace />
131+
)
132+
}
133+
/>
134+
135+
<Route
136+
path="/notificacoes"
137+
element={
138+
authenticated ? (
139+
<Notificacoes />
140+
) : (
141+
<Navigate to="/login" replace />
142+
)
143+
}
144+
/>
145+
</Routes>
146+
</div>
147+
</div>
148+
);
75149
}
76150

77151
const styles = {
78-
container: {
79-
display: "flex",
80-
minHeight: "100vh",
81-
},
82-
content: {
83-
flex: 1,
84-
minHeight: "100vh",
85-
},
152+
container: {
153+
display: "flex",
154+
minHeight: "100vh",
155+
},
156+
157+
content: {
158+
flex: 1,
159+
minHeight: "100vh",
160+
},
86161
};

src/mobile/.expo/README.md

Lines changed: 0 additions & 13 deletions
This file was deleted.

src/mobile/.expo/devices.json

Lines changed: 0 additions & 3 deletions
This file was deleted.

src/mobile/app.json

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,9 @@
1616
],
1717
"icon": "./assets/images/icon.png",
1818
"newArchEnabled": false,
19+
"updates": {
20+
"enabled": false
21+
},
1922
"ios": {
2023
"supportsTablet": true
2124
},
@@ -28,13 +31,11 @@
2831
"package": "com.pagaai.mobile"
2932
},
3033
"plugins": [
31-
"expo-router"
34+
"expo-router",
35+
"@react-native-community/datetimepicker"
3236
],
3337
"extra": {
34-
"router": {},
35-
"eas": {
36-
"projectId": "70835f7e-976c-4b5e-8f64-03f69e5ff995"
37-
}
38+
"router": {}
3839
}
3940
}
4041
}

src/mobile/app/(tabs)/index.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ export default function DashboardScreen() {
7474

7575
let lucro = null;
7676
try {
77-
const resLucro = await api.get(`${REPORT}/relatorio-lucro/${encodeURIComponent(cobrador)}`);
77+
const resLucro = await api.get(`${EMPRESTIMOS}/relatorio-lucro/${encodeURIComponent(cobrador)}`);
7878
lucro = resLucro.data;
7979
} catch {
8080
console.log('Report indisponível, continuando sem dados financeiros.');

0 commit comments

Comments
 (0)