Skip to content

Commit d1c8389

Browse files
authored
Merge pull request #65 from AlessGarau/develop
2 parents eed569c + 405fba6 commit d1c8389

35 files changed

+1815
-61
lines changed
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
import type { ClassCreate, ClassFilters, ClassUpdate } from '../../types/Class';
2+
import { apiClient } from '../client';
3+
4+
export const classApi = {
5+
getClasses: async (filters: ClassFilters = {}) => {
6+
const response = await apiClient.get('/class', { params: filters });
7+
return response.data;
8+
},
9+
10+
getClassesCount: async (filters: ClassFilters = {}) => {
11+
const response = await apiClient.get('/class/count', { params: filters });
12+
return response.data;
13+
},
14+
15+
createClass: async (data: ClassCreate) => {
16+
const response = await apiClient.post('/class', data);
17+
return response.data;
18+
},
19+
20+
updateClass: async (id: string, data: ClassUpdate) => {
21+
const response = await apiClient.put(`/class/${id}`, data);
22+
return response.data;
23+
},
24+
25+
deleteClass: async (id: string) => {
26+
const response = await apiClient.delete(`/class/${id}`);
27+
return response.data;
28+
},
29+
};
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
import type { Report, ReportFilters } from "../../types/Reports";
2+
import { apiClient } from "../client";
3+
4+
export const reportApi = {
5+
getReportsCount: async (
6+
filters: ReportFilters = {}
7+
): Promise<{ data: { count: number } }> => {
8+
const params = new URLSearchParams();
9+
if (filters.status) params.append("status", filters.status);
10+
if (filters.equipmentType) params.append("equipmentType", String(filters.equipmentType));
11+
if (filters.roomName) params.append("roomName", String(filters.roomName));
12+
const response = await apiClient.get(
13+
`/reporting/count?${params.toString()}`
14+
);
15+
return response.data;
16+
},
17+
18+
createReport: async (data: {
19+
equipmentId: string;
20+
description: string;
21+
}): Promise<void> => {
22+
await apiClient.post(`/reporting`, data);
23+
},
24+
25+
getReports: async (filters: ReportFilters = {}): Promise<{ data: Report[] }> => {
26+
const params = new URLSearchParams();
27+
if (filters.status) params.append("status", filters.status);
28+
if (filters.equipmentType) params.append("equipmentType", String(filters.equipmentType));
29+
if (filters.roomName) params.append("roomName", String(filters.roomName));
30+
if (filters.limit) params.append("limit", String(filters.limit));
31+
if (filters.offset) params.append("offset", String(filters.offset));
32+
const response = await apiClient.get(
33+
`/reporting?${params.toString()}`
34+
);
35+
return response.data;
36+
},
37+
38+
deleteReport: async (reportId: string): Promise<void> => {
39+
await apiClient.delete(`/reporting/${reportId}`);
40+
},
41+
42+
updateReport: async (
43+
reportId: string,
44+
data: {
45+
status: string;
46+
}
47+
): Promise<void> => {
48+
await apiClient.patch(`/reporting/${reportId}`, data);
49+
},
50+
};

packages/client/src/api/endpoints/room.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,11 @@ export const roomApi = {
2323
return response.data;
2424
},
2525

26+
getRoomNameOptions: async (): Promise<{ data: RoomFilterOptions }> => {
27+
const response = await apiClient.get("/room/filters?name=true");
28+
return response.data;
29+
},
30+
2631
getFloorOptions: async (
2732
building: string
2833
): Promise<{ data: RoomFilterOptions }> => {
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
import type { TeacherCreate, TeacherFilters, TeacherUpdate } from '../../types/Teacher';
2+
import { apiClient } from '../client';
3+
4+
export const teacherApi = {
5+
getTeachers: async (filters: TeacherFilters = {}) => {
6+
const response = await apiClient.get('/teacher', { params: filters });
7+
return response.data;
8+
},
9+
10+
getTeachersCount: async (filters: TeacherFilters = {}) => {
11+
const response = await apiClient.get('/teacher/count', { params: filters });
12+
return response.data;
13+
},
14+
15+
createTeacher: async (data: TeacherCreate) => {
16+
const response = await apiClient.post('/teacher', data);
17+
return response.data;
18+
},
19+
20+
updateTeacher: async (id: string, data: TeacherUpdate) => {
21+
const response = await apiClient.put(`/teacher/${id}`, data);
22+
return response.data;
23+
},
24+
25+
deleteTeacher: async (id: string) => {
26+
const response = await apiClient.delete(`/teacher/${id}`);
27+
return response.data;
28+
},
29+
};

packages/client/src/api/queryOptions.ts

Lines changed: 121 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,14 @@
1+
import type { ClassCreate, ClassFilters, ClassUpdate } from "../types/Class";
12
import type { PlannedClass, PlanningFilters } from "../types/Planning";
3+
import type { TeacherCreate, TeacherFilters, TeacherUpdate } from "../types/Teacher";
24
import type { LoginCredentials } from "../types/User";
5+
import { classApi } from "./endpoints/class";
36
import { lessonApi } from "./endpoints/lesson";
47
import { planningApi } from "./endpoints/planning";
8+
import { reportApi } from "./endpoints/report";
59
import { roomApi } from "./endpoints/room";
610
import { sensorApi } from "./endpoints/sensor";
11+
import { teacherApi } from "./endpoints/teacher";
712
import { userApi } from "./endpoints/user";
813
import { weatherApi } from "./endpoints/weather";
914

@@ -77,6 +82,12 @@ export const roomQueryOptions = {
7782
staleTime: 60 * 60 * 1000,
7883
}),
7984

85+
roomNameOptions: () => ({
86+
queryKey: ["room", "nameOptions"],
87+
queryFn: () => roomApi.getRoomNameOptions(),
88+
staleTime: 60 * 60 * 1000,
89+
}),
90+
8091
floorOptions: (building: string) => ({
8192
queryKey: ["room", "floorOptions", building],
8293
queryFn: () => roomApi.getFloorOptions(building),
@@ -170,6 +181,116 @@ export const roomQueryOptions = {
170181
}),
171182
};
172183

184+
export const reportQueryOptions = {
185+
reportCount: (filters = {}) => ({
186+
queryKey: ["report", "count", filters],
187+
queryFn: () => reportApi.getReportsCount(filters),
188+
staleTime: 60 * 60 * 1000,
189+
}),
190+
191+
createReport: () => ({
192+
mutationKey: ["report", "createReport"],
193+
mutationFn: (data: {
194+
equipmentId: string;
195+
description: string;
196+
}) => reportApi.createReport(data),
197+
}),
198+
199+
getReports: (filters = {}) => ({
200+
queryKey: ["report", "allReports", filters],
201+
queryFn: () => reportApi.getReports(filters),
202+
staleTime: 60 * 60 * 1000,
203+
}),
204+
205+
deleteReport: () => ({
206+
mutationKey: ["report", "deleteReport"],
207+
mutationFn: (reportId: string) => reportApi.deleteReport(reportId),
208+
}),
209+
210+
updateReport: () => ({
211+
mutationKey: ["report", "updateReport"],
212+
mutationFn: ({
213+
reportId,
214+
data,
215+
}: {
216+
reportId: string;
217+
data: {
218+
status: string;
219+
};
220+
}) => reportApi.updateReport(reportId, data),
221+
}),
222+
}
223+
224+
export const classQueryOptions = {
225+
classCount: (filters: ClassFilters = {}) => ({
226+
queryKey: ["class", "count", filters],
227+
queryFn: () => classApi.getClassesCount(filters),
228+
staleTime: 60 * 60 * 1000,
229+
}),
230+
231+
getClasses: (filters: ClassFilters = {}) => ({
232+
queryKey: ["class", "allClasses", filters],
233+
queryFn: () => classApi.getClasses(filters),
234+
staleTime: 60 * 60 * 1000,
235+
}),
236+
237+
createClass: () => ({
238+
mutationKey: ["class", "createClass"],
239+
mutationFn: (data: ClassCreate) => classApi.createClass(data),
240+
}),
241+
242+
updateClass: () => ({
243+
mutationKey: ["class", "updateClass"],
244+
mutationFn: ({
245+
classId,
246+
data,
247+
}: {
248+
classId: string;
249+
data: ClassUpdate;
250+
}) => classApi.updateClass(classId, data),
251+
}),
252+
253+
deleteClass: () => ({
254+
mutationKey: ["class", "deleteClass"],
255+
mutationFn: (classId: string) => classApi.deleteClass(classId),
256+
}),
257+
};
258+
259+
export const teacherQueryOptions = {
260+
teacherCount: (filters: TeacherFilters = {}) => ({
261+
queryKey: ["teacher", "count", filters],
262+
queryFn: () => teacherApi.getTeachersCount(filters),
263+
staleTime: 60 * 60 * 1000,
264+
}),
265+
266+
getTeachers: (filters: TeacherFilters = {}) => ({
267+
queryKey: ["teacher", "allTeachers", filters],
268+
queryFn: () => teacherApi.getTeachers(filters),
269+
staleTime: 60 * 60 * 1000,
270+
}),
271+
272+
createTeacher: () => ({
273+
mutationKey: ["teacher", "createTeacher"],
274+
mutationFn: (data: TeacherCreate) => teacherApi.createTeacher(data),
275+
}),
276+
277+
updateTeacher: () => ({
278+
mutationKey: ["teacher", "updateTeacher"],
279+
mutationFn: ({
280+
teacherId,
281+
data,
282+
}: {
283+
teacherId: string;
284+
data: TeacherUpdate;
285+
}) => teacherApi.updateTeacher(teacherId, data),
286+
}),
287+
288+
deleteTeacher: () => ({
289+
mutationKey: ["teacher", "deleteTeacher"],
290+
mutationFn: (teacherId: string) => teacherApi.deleteTeacher(teacherId),
291+
}),
292+
};
293+
173294
export const lessonQueryOptions = {
174295
deleteLesson: () => ({
175296
mutationFn: (lessonId: string) => lessonApi.deleteLesson(lessonId),

0 commit comments

Comments
 (0)