source: backend/web3-Ednevnik-Backend/src/main/java/com/nikola/web3ednevnikbackend/controller/UserController.java

Last change on this file was 81cdf2d, checked in by Nikola Janev <nikolajanev57@…>, 9 days ago

initial commit

  • Property mode set to 100644
File size: 24.3 KB
Line 
1package com.nikola.web3ednevnikbackend.controller;
2
3import com.nikola.web3ednevnikbackend.dto.attendance.FullPrisustvoZaUcenikResponseDTO;
4import com.nikola.web3ednevnikbackend.dto.attendance.PrisustvoResponseDTO;
5import com.nikola.web3ednevnikbackend.dto.classes.KlasResponseDTO;
6import com.nikola.web3ednevnikbackend.dto.gradingSystem.*;
7import com.nikola.web3ednevnikbackend.dto.schedules.CasResponseDTO;
8import com.nikola.web3ednevnikbackend.dto.subjects.PredmetResponseDTO;
9import com.nikola.web3ednevnikbackend.dto.ucenikRezultati.UcenikWithFullOcenkiResponseDTO;
10import com.nikola.web3ednevnikbackend.dto.users.*;
11
12import com.nikola.web3ednevnikbackend.dto.weeklyplans.AktivnostZaNedelenPlanResponseDTO;
13import com.nikola.web3ednevnikbackend.service.attendance.PrisustvoService;
14import com.nikola.web3ednevnikbackend.service.grades.OcenkaService;
15import com.nikola.web3ednevnikbackend.service.schedulesAndClasses.KlasService;
16import com.nikola.web3ednevnikbackend.service.subjects.PredmetService;
17import com.nikola.web3ednevnikbackend.service.users.*;
18import jakarta.validation.Valid;
19import org.springframework.data.repository.query.Param;
20import org.springframework.http.HttpStatus;
21import org.springframework.http.ResponseEntity;
22import org.springframework.security.access.prepost.PreAuthorize;
23import org.springframework.web.bind.annotation.*;
24
25import java.time.LocalDate;
26import java.util.List;
27import java.util.UUID;
28
29@RestController
30@RequestMapping("/api/users")
31public class UserController {
32
33 private final AdminUserService adminUserService;
34 private final Direktor_AdminService direktorAdminService;
35 private final Mon_AdminService monAdminService;
36 private final KlasService klasService;
37 private final BlagajnikService blagajnikService;
38 private final NastavnikService nastavnikService;
39 private final Klasen_RakovoditelService klasenRakovoditelService;
40 private final Predmeten_NastavnikService predmetenNastavnikService;
41 private final RoditelService roditelService;
42 private final UcenikService ucenikService;
43 private final OcenkaService ocenkaService;
44 private final PredmetService predmetService;
45 private final PrisustvoService prisustvoService;
46
47 public UserController(AdminUserService adminUserService, Direktor_AdminService direktorAdminService, Mon_AdminService monAdminService, KlasService klasService, BlagajnikService blagajnikService, NastavnikService nastavnikService, Klasen_RakovoditelService klasenRakovoditelService, Predmeten_NastavnikService predmetenNastavnikService, RoditelService roditelService, UcenikService ucenikService, OcenkaService ocenkaService, PredmetService predmetService, PrisustvoService prisustvoService) {
48 this.adminUserService = adminUserService;
49 this.direktorAdminService = direktorAdminService;
50 this.monAdminService = monAdminService;
51 this.klasService = klasService;
52 this.blagajnikService = blagajnikService;
53 this.nastavnikService = nastavnikService;
54 this.klasenRakovoditelService = klasenRakovoditelService;
55 this.predmetenNastavnikService = predmetenNastavnikService;
56 this.roditelService = roditelService;
57 this.ucenikService = ucenikService;
58 this.ocenkaService = ocenkaService;
59 this.predmetService = predmetService;
60 this.prisustvoService = prisustvoService;
61 }
62
63
64 //TODO: ==== CREATE операции за секој тип ====
65
66 //POST /api/users/admins
67 @PostMapping("/admins")
68 public ResponseEntity<AdminUserResponseDTO> createAdminUser(@Valid @RequestBody AdminUserRequestDTO adminUserRequestDTO) {
69
70 return new ResponseEntity<>(this.adminUserService.createAdminUser(adminUserRequestDTO), HttpStatus.CREATED);
71 }
72
73 // POST /api/users/admins/monAdmins
74 @PostMapping("/admins/monAdmins")
75 public ResponseEntity<MonAdminResponseDTO> createMonAdmin(@Valid @RequestBody MonAdminRequestDTO monAdminRequestDTO) {
76
77 return new ResponseEntity<>(this.monAdminService.createMonAdminUser(monAdminRequestDTO), HttpStatus.CREATED);
78 }
79
80 // POST /api/users/admins/directorAdmins
81 @PostMapping("/admins/directorAdmins")
82 @PreAuthorize("hasRole('MON_ADMIN')")
83 public ResponseEntity<DirektorAdminResponseDTO> createDirektorAdmin(@Valid @RequestBody DirektorAdminRequestDTO direktorAdminRequestDTO) {
84
85 return new ResponseEntity<>(this.direktorAdminService.createDirektorAdminUser(direktorAdminRequestDTO), HttpStatus.CREATED);
86 }
87
88 // POST /api/users/blagajnici
89 @PostMapping("/blagajnici")
90 @PreAuthorize("hasRole('DIREKTOR_ADMIN')")
91 public ResponseEntity<BlagajnikResponseDTO> createBlagajnik(@Valid @RequestBody BlagajnikRequestDTO blagajnikRequestDTO) {
92
93 return new ResponseEntity<>(this.blagajnikService.createBlagajnik(blagajnikRequestDTO), HttpStatus.CREATED);
94 }
95
96 //POST /api/users/nastavnici
97 @PostMapping("/nastavnici")
98 @PreAuthorize("hasRole('DIREKTOR_ADMIN')")
99 public ResponseEntity<NastavnikResponseDTO> createNastavnik(@Valid @RequestBody NastavnikRequestDTO nastavnikRequestDTO) {
100
101 return new ResponseEntity<>(this.nastavnikService.createNastavnik(nastavnikRequestDTO), HttpStatus.CREATED);
102 }
103
104 //POST /api/users/nastavnici/klasniRakovoditeli
105 @PostMapping("/nastavnici/klasniRakovoditeli")
106 @PreAuthorize("hasRole('DIREKTOR_ADMIN')")
107 public ResponseEntity<KlasenRakovoditelResponseDTO> createKlasenRakovoditel(@Valid @RequestBody KlasenRakovoditelRequestDTO klasenRakovoditelRequestDTO) {
108
109 return new ResponseEntity<>(this.klasenRakovoditelService.createKlasenRakovoditel(klasenRakovoditelRequestDTO), HttpStatus.CREATED);
110 }
111
112 //POST /api/users/nastavnici/predmetniNastavnici
113 @PostMapping("/nastavnici/predmetniNastavnici")
114 @PreAuthorize("hasRole('DIREKTOR_ADMIN')")
115 public ResponseEntity<PredmetenNastavnikResponseDTO> createPredmetenNastavnik(@Valid @RequestBody PredmetenNastavnikRequestDTO predmetenNastavnikRequestDTO) {
116
117 return new ResponseEntity<>(this.predmetenNastavnikService.createPredmetenNastavnik(predmetenNastavnikRequestDTO), HttpStatus.CREATED);
118 }
119
120 //POST /api/users/roditeli
121 @PostMapping("/roditeli")
122 @PreAuthorize("hasRole('DIREKTOR_ADMIN')")
123 public ResponseEntity<RoditelResponseDTO> createRoditel(@Valid @RequestBody RoditelRequestDTO roditelRequestDTO) {
124
125 return new ResponseEntity<>(this.roditelService.createRoditel(roditelRequestDTO), HttpStatus.CREATED);
126 }
127
128 //POST /api/users/ucenici
129 @PostMapping("/ucenici")
130 @PreAuthorize("hasRole('DIREKTOR_ADMIN')")
131 public ResponseEntity<UcenikResponseDTO> createUcenik(@Valid @RequestBody UcenikRequestDTO ucenikRequestDTO) {
132
133 return new ResponseEntity<>(this.ucenikService.createUcenik(ucenikRequestDTO), HttpStatus.CREATED);
134 }
135
136 //TODO: ==== GET операции по тип ====
137
138 //GET /api/users/admins
139 @GetMapping("/admins")
140 public ResponseEntity<List<AdminUserResponseDTO>> getAllAdmins() {
141 List<AdminUserResponseDTO> adminUsers = this.adminUserService.listAllAdmins();
142 return new ResponseEntity<>(adminUsers, HttpStatus.OK);
143 }
144
145 // GET /api/users/directorAdmins
146 @GetMapping("/admins/directorAdmins")
147 @PreAuthorize("hasRole('MON_ADMIN')")
148 public ResponseEntity<List<DirektorAdminResponseDTO>> getAllDirector_Admins() {
149 List<DirektorAdminResponseDTO> direktorAdmins = this.direktorAdminService.listAllDirektor_Admins();
150 return new ResponseEntity<>(direktorAdmins, HttpStatus.OK);
151 }
152
153 // GET /api/users/monAdmins
154 @GetMapping("/admins/monAdmins")
155 public ResponseEntity<List<MonAdminResponseDTO>> getAllMon_Admins() {
156 List<MonAdminResponseDTO> monAdmins = this.monAdminService.listAllMon_Admins();
157 return new ResponseEntity<>(monAdmins, HttpStatus.OK);
158 }
159
160 // GET /api/users/blagajnici GET all active blagajnici
161 @GetMapping("/blagajnici")
162 @PreAuthorize("hasRole('DIREKTOR_ADMIN')")
163 public ResponseEntity<List<BlagajnikResponseDTO>> getAllActiveBlagajnici() {
164 List<BlagajnikResponseDTO> blagajnici = this.blagajnikService.listAllActiveBlagajnici();
165 return new ResponseEntity<>(blagajnici, HttpStatus.OK);
166 }
167
168 // GET /api/users/blagajnici/all GET all blagajnici
169 @GetMapping("/blagajnici/all")
170 @PreAuthorize("hasRole('DIREKTOR_ADMIN')")
171 public ResponseEntity<List<BlagajnikResponseDTO>> getAllBlagajnici() {
172 List<BlagajnikResponseDTO> blagajnici = this.blagajnikService.listAllBlagajnici();
173 return new ResponseEntity<>(blagajnici, HttpStatus.OK);
174 }
175
176 // GET /api/users/nastavnici
177 @GetMapping("/nastavnici")
178 @PreAuthorize("hasRole('DIREKTOR_ADMIN')")
179 public ResponseEntity<List<NastavnikResponseDTO>> getAllActiveNastavnici() {
180 List<NastavnikResponseDTO> nastavnici = this.nastavnikService.listAllActiveNastavnici();
181 return new ResponseEntity<>(nastavnici, HttpStatus.OK);
182 }
183
184 @GetMapping("/nastavnici/all")
185 @PreAuthorize("hasRole('DIREKTOR_ADMIN')")
186 public ResponseEntity<List<NastavnikResponseDTO>> getAllNastavnici() {
187 List<NastavnikResponseDTO> nastavnici = this.nastavnikService.listAllNastavnici();
188 return new ResponseEntity<>(nastavnici, HttpStatus.OK);
189 }
190
191
192 // GET /api/users/klasniRakovoditeli
193 @GetMapping("/nastavnici/klasniRakovoditeli")
194 @PreAuthorize("hasRole('DIREKTOR_ADMIN')")
195 public ResponseEntity<List<KlasenRakovoditelResponseDTO>> getAllActiveKlasniRakovoditeli() {
196 List<KlasenRakovoditelResponseDTO> klasenRakovoditeli = this.klasenRakovoditelService.listAllActiveKlasen_Rakovoditel();
197 return new ResponseEntity<>(klasenRakovoditeli, HttpStatus.OK);
198 }
199
200 @GetMapping("/nastavnici/klasniRakovoditeli/all")
201 @PreAuthorize("hasRole('DIREKTOR_ADMIN')")
202 public ResponseEntity<List<KlasenRakovoditelResponseDTO>> getAllKlasniRakovoditeli() {
203 List<KlasenRakovoditelResponseDTO> klasenRakovoditeli = this.klasenRakovoditelService.listAllKlasen_Rakovoditel();
204 return new ResponseEntity<>(klasenRakovoditeli, HttpStatus.OK);
205 }
206
207 // GET /api/users/predmetniNastavnici
208 @GetMapping("/nastavnici/predmetniNastavnici")
209 @PreAuthorize("hasRole('DIREKTOR_ADMIN')")
210 public ResponseEntity<List<PredmetenNastavnikResponseDTO>> getAllActivePredmetniNastavnici() {
211 List<PredmetenNastavnikResponseDTO> predmetenNastavnici = this.predmetenNastavnikService.listAllActivePredmeten_Nastavnik();
212
213 return new ResponseEntity<>(predmetenNastavnici, HttpStatus.OK);
214 }
215
216 @GetMapping("/nastavnici/predmetniNastavnici/all")
217 @PreAuthorize("hasRole('DIREKTOR_ADMIN')")
218 public ResponseEntity<List<PredmetenNastavnikResponseDTO>> getAllPredmetniNastavnici() {
219 List<PredmetenNastavnikResponseDTO> predmetenNastavnici = this.predmetenNastavnikService.listAllPredmeten_Nastavnik();
220 return new ResponseEntity<>(predmetenNastavnici, HttpStatus.OK);
221 }
222
223 // GET /api/users/roditeli
224 @GetMapping("/roditeli")
225 @PreAuthorize("hasRole('DIREKTOR_ADMIN')")
226 public ResponseEntity<List<RoditelResponseDTO>> getAllActiveRoditeli() {
227 List<RoditelResponseDTO> roditeli = this.roditelService.listAllActiveRoditeli();
228 return new ResponseEntity<>(roditeli, HttpStatus.OK);
229 }
230
231
232 @GetMapping("/roditeli/all")
233 @PreAuthorize("hasRole('DIREKTOR_ADMIN')")
234 public ResponseEntity<List<RoditelResponseDTO>> getAllRoditeli() {
235 List<RoditelResponseDTO> roditeli = this.roditelService.listAllRoditeli();
236 return new ResponseEntity<>(roditeli, HttpStatus.OK);
237 }
238
239 // GET /api/users/ucenici
240 @GetMapping("/ucenici")
241 @PreAuthorize("hasRole('DIREKTOR_ADMIN')")
242 public ResponseEntity<List<UcenikResponseDTO>> getAllActiveUcenici() {
243 List<UcenikResponseDTO> ucenici = this.ucenikService.listAllActiveUcenici();
244 return new ResponseEntity<>(ucenici, HttpStatus.OK);
245 }
246
247 @GetMapping("/ucenici/all")
248 @PreAuthorize("hasRole('DIREKTOR_ADMIN')")
249 public ResponseEntity<List<UcenikResponseDTO>> getAllUcenici() {
250 List<UcenikResponseDTO> ucenici = this.ucenikService.listAllUcenici();
251 return new ResponseEntity<>(ucenici, HttpStatus.OK);
252 }
253
254 //TODO: ==== GET операции по ID ====
255
256 // GET /api/users/admins/{id}
257 @GetMapping("/admins/{id}")
258 public ResponseEntity<AdminUserResponseDTO> getAdminUserById(@PathVariable UUID id) {
259
260 AdminUserResponseDTO adminUser = adminUserService.getAdminUserById(id);
261 return new ResponseEntity<>(adminUser, HttpStatus.OK);
262 }
263
264 // GET /api/users/admins/directorAdmins/{id}
265 @GetMapping("/admins/directorAdmins/{id}")
266 @PreAuthorize("hasRole('DIREKTOR_ADMIN')")
267 public ResponseEntity<DirektorAdminResponseDTO> getDirektorAdminById(@PathVariable UUID id) {
268
269 DirektorAdminResponseDTO directorAdmin = direktorAdminService.getDirektorAdminById(id);
270 return new ResponseEntity<>(directorAdmin, HttpStatus.OK);
271 }
272
273 //GET /api/users/admins/monAdmins/{id}
274 @GetMapping("/admins/monAdmins/{id}")
275 public ResponseEntity<MonAdminResponseDTO> getMonAdminById(@PathVariable UUID id) {
276
277 MonAdminResponseDTO monAdmin = this.monAdminService.getAdminById(id);
278 return new ResponseEntity<>(monAdmin, HttpStatus.OK);
279 }
280
281 // GET /api/users/blagajnici/{id}
282 @GetMapping("/blagajnici/{id}")
283 @PreAuthorize("hasRole('DIREKTOR_ADMIN')")
284 public ResponseEntity<BlagajnikResponseDTO> getBlagajnikById(@PathVariable UUID id) {
285
286 BlagajnikResponseDTO blagajnik = this.blagajnikService.getBlagajnikById(id);
287 return new ResponseEntity<>(blagajnik, HttpStatus.OK);
288 }
289
290 // GET /api/users/nastavnici/{id}
291 @GetMapping("/nastavnici/{id}")
292 @PreAuthorize("hasAnyRole('DIREKTOR_ADMIN', 'PREDMETEN_NASTAVNIK', 'KLASEN_RAKOVODITEL', 'RODITEL')")
293 public ResponseEntity<NastavnikResponseDTO> getNastavnikById(@PathVariable UUID id) {
294
295 NastavnikResponseDTO nastavnik = this.nastavnikService.getNastavnikById(id);
296 return new ResponseEntity<>(nastavnik, HttpStatus.OK);
297 }
298
299 // GET /api/users/nastavnici/klasniRakovoditeli/{id}
300 @GetMapping("/nastavnici/klasniRakovoditeli/{id}")
301 @PreAuthorize("hasAnyRole('DIREKTOR_ADMIN', 'PREDMETEN_NASTAVNIK', 'KLASEN_RAKOVODITEL')")
302 public ResponseEntity<KlasenRakovoditelResponseDTO> getKlasenRakovoditelById(@PathVariable UUID id) {
303
304 KlasenRakovoditelResponseDTO klasenRakovoditel = this.klasenRakovoditelService.findKlasen_RakovoditelById(id);
305 return new ResponseEntity<>(klasenRakovoditel, HttpStatus.OK);
306 }
307
308 // GET /api/users/nastavnici/predmetniNastavnici/{id}
309 @GetMapping("/nastavnici/predmetniNastavnici/{id}")
310 @PreAuthorize("hasAnyRole('DIREKTOR_ADMIN', 'PREDMETEN_NASTAVNIK', 'KLASEN_RAKOVODITEL')")
311 public ResponseEntity<PredmetenNastavnikResponseDTO> getPredmetenNastavnikById(@PathVariable UUID id) {
312
313 PredmetenNastavnikResponseDTO predmetenNastavnik = this.predmetenNastavnikService.getPredmeten_NastavnikById(id);
314 return new ResponseEntity<>(predmetenNastavnik, HttpStatus.OK);
315 }
316
317 // GET /api/users/roditeli/{id}
318 @GetMapping("/roditeli/{id}")
319 @PreAuthorize("hasAnyRole('DIREKTOR_ADMIN', 'KLASEN_RAKOVODITEL', 'PREDMETEN_NASTAVNIK', 'RODITEL')")
320 public ResponseEntity<RoditelResponseDTO> getRoditelById(@PathVariable UUID id) {
321
322 RoditelResponseDTO roditel = this.roditelService.getRoditelById(id);
323 return new ResponseEntity<>(roditel, HttpStatus.OK);
324 }
325
326
327 @GetMapping("/ucenici/by-parent/{parentId}")
328 @PreAuthorize("hasAnyRole('DIREKTOR_ADMIN', 'KLASEN_RAKOVODITEL', 'PREDMETEN_NASTAVNIK', 'RODITEL')")
329 public ResponseEntity<List<UcenikResponseDTO>> getStudentByParent(@PathVariable UUID parentId) {
330
331 List<UcenikResponseDTO> ucenici = this.ucenikService.getStudentByParent(parentId);
332 return new ResponseEntity<>(ucenici, HttpStatus.OK);
333 }
334
335 // GET /api/users/ucenici/{id}
336 @GetMapping("/ucenici/{id}")
337 @PreAuthorize("hasAnyRole('DIREKTOR_ADMIN', 'KLASEN_RAKOVODITEL', 'PREDMETEN_NASTAVNIK', 'RODITEL')")
338 public ResponseEntity<UcenikResponseDTO> getUcenikById(@PathVariable UUID id) {
339
340 UcenikResponseDTO ucenik = this.ucenikService.getUcenikById(id);
341 return new ResponseEntity<>(ucenik, HttpStatus.OK);
342 }
343
344 @PreAuthorize("hasAnyRole('DIREKTOR_ADMIN', 'KLASEN_RAKOVODITEL', 'PREDMETEN_NASTAVNIK')")
345 @GetMapping("/nastavnici/klasniRakovoditeli/{teacherId}/klas")
346 public ResponseEntity<KlasResponseDTO> getClassForTeacher(@PathVariable UUID teacherId) {
347 return ResponseEntity.ok(klasService.findKlasByRakovoditel(teacherId));
348 }
349
350 //TODO: Toggle activations za active
351
352 @PutMapping("/ucenici/{id}/toggleActivation")
353 @PreAuthorize("hasRole('DIREKTOR_ADMIN')")
354 public ResponseEntity<Void> toggleActiveStatusForUcenik(@PathVariable UUID id) {
355 this.ucenikService.toggleActiveStatus(id);
356 return new ResponseEntity<>(HttpStatus.NO_CONTENT);
357 }
358
359 @PutMapping("/roditeli/{id}/toggleActivation")
360 @PreAuthorize("hasRole('DIREKTOR_ADMIN')")
361 public ResponseEntity<Void> toggleActiveStatusForRoditel(@PathVariable UUID id) {
362 this.roditelService.toggleActiveStatus(id);
363 return new ResponseEntity<>(HttpStatus.NO_CONTENT);
364 }
365
366 @PutMapping("/blagajnici/{id}/toggleActivation")
367 @PreAuthorize("hasRole('DIREKTOR_ADMIN')")
368 public ResponseEntity<Void> toggleActiveStatusForBlagajnik(@PathVariable UUID id) {
369 this.blagajnikService.toggleActiveStatus(id);
370 return new ResponseEntity<>(HttpStatus.NO_CONTENT);
371 }
372
373 @PutMapping("/nastavnici/{id}/toggleActivation")
374 @PreAuthorize("hasRole('DIREKTOR_ADMIN')")
375 public ResponseEntity<Void> toggleActiveStatusForNastavnik(@PathVariable UUID id) {
376 this.nastavnikService.toggleActiveStatus(id);
377 return new ResponseEntity<>(HttpStatus.NO_CONTENT);
378 }
379
380 @PutMapping("/nastavnici/klasniRakovoditeli/{id}/toggleActivation")
381 @PreAuthorize("hasRole('DIREKTOR_ADMIN')")
382 public ResponseEntity<Void> toggleActiveStatusForKlasenRakovoditel(@PathVariable UUID id) {
383 this.klasenRakovoditelService.toggleActiveStatus(id);
384 return new ResponseEntity<>(HttpStatus.NO_CONTENT);
385 }
386
387 @PutMapping("/nastavnici/predmetniNastavnici/{id}/toggleActivation")
388 @PreAuthorize("hasRole('DIREKTOR_ADMIN')")
389 public ResponseEntity<Void> toggleActiveStatusForPredmetenNastavnik(@PathVariable UUID id) {
390 this.predmetenNastavnikService.toggleActiveStatus(id);
391 return new ResponseEntity<>(HttpStatus.NO_CONTENT);
392 }
393
394 // GET /api/users/ucenici/{id}/ocenki
395 @GetMapping("/ucenici/{id}/ocenki")
396 @PreAuthorize("hasAnyRole('DIREKTOR_ADMIN', 'KLASEN_RAKOVODITEL', 'PREDMETEN_NASTAVNIK', 'RODITEL')")
397 public ResponseEntity<UcenikWithFullOcenkiResponseDTO> getAllOcenkiForAStudent(@PathVariable UUID id) {
398
399 UcenikWithFullOcenkiResponseDTO ucenikWithFullOcenkiResponseDTO = this.ucenikService.getAllOcenkiZaUcenikId(id);
400 return new ResponseEntity<>(ucenikWithFullOcenkiResponseDTO, HttpStatus.OK);
401 }
402
403 @PostMapping("/ucenici/{id}/enterUsnaOcenka")
404 @PreAuthorize("hasAnyRole('DIREKTOR_ADMIN', 'KLASEN_RAKOVODITEL','PREDMETEN_NASTAVNIK')")
405 public ResponseEntity<Void> enterUsnaOcenkaForUcenik(@PathVariable("id") UUID id, @Valid @RequestBody FullUsnaOcenkaRequestDTO fullUsnaOcenkaRequestDTO) {
406 this.ocenkaService.enterUsnaOcenkaForStudent(id, fullUsnaOcenkaRequestDTO);
407 return new ResponseEntity<Void>(HttpStatus.CREATED);
408 }
409
410 @PostMapping("/ucenici/{id}/enterPismenaOcenka")
411 @PreAuthorize("hasAnyRole('DIREKTOR_ADMIN', 'KLASEN_RAKOVODITEL','PREDMETEN_NASTAVNIK')")
412 public ResponseEntity<Void> enterPismenaOcenkaForUcenik(@PathVariable("id") UUID id, @Valid @RequestBody FullPismenaOcenkaRequestDTO fullPismenaOcenkaRequestDTO) {
413 this.ocenkaService.enterPismenaOcenkaForStudent(id, fullPismenaOcenkaRequestDTO);
414 return new ResponseEntity<Void>(HttpStatus.CREATED);
415 }
416
417 @PostMapping("/ucenici/{id}/enterKrajnaOcenka")
418 @PreAuthorize("hasAnyRole('DIREKTOR_ADMIN', 'KLASEN_RAKOVODITEL','PREDMETEN_NASTAVNIK')")
419 public ResponseEntity<Void> enterKrajnaOcenkaForUcenik(@PathVariable("id") UUID id, @Valid @RequestBody FullKrajnaOcenkaRequestDTO fullKrajnaOcenkaRequestDTO) {
420 this.ocenkaService.enterKrajnaOcenkaForStudent(id, fullKrajnaOcenkaRequestDTO);
421 return new ResponseEntity<Void>(HttpStatus.CREATED);
422 }
423
424 // GET /api/users/ucenici/{id}/prisustva
425 @GetMapping("/ucenici/{id}/prisustva")
426 @PreAuthorize("hasAnyRole('DIREKTOR_ADMIN', 'KLASEN_RAKOVODITEL', 'PREDMETEN_NASTAVNIK', 'RODITEL')")
427 public ResponseEntity<FullPrisustvoZaUcenikResponseDTO> getAllPrisustvaForAStudent(@PathVariable UUID id) {
428
429 FullPrisustvoZaUcenikResponseDTO fullPrisustvoZaUcenikResponseDTO = this.ucenikService.getAllPrisustvaZaUcenikId(id);
430 return new ResponseEntity<>(fullPrisustvoZaUcenikResponseDTO, HttpStatus.OK);
431 }
432
433
434 //TODO: ==== DELETE операции по ID ====
435
436 //DELETE /api/users/admins/directorAdmins/{id}
437 @DeleteMapping("/admins/directorAdmins/{id}")
438 @PreAuthorize("hasRole('MON_ADMIN')")
439 public ResponseEntity<Void> deleteDirektorAdmin(@PathVariable UUID id) {
440
441 this.direktorAdminService.removeDirektorAdminRole(id);
442 return new ResponseEntity<>(HttpStatus.NO_CONTENT);
443 }
444
445 //DELETE /api/users/blagajnici/{id}
446 @DeleteMapping("/blagajnici/{id}")
447 @PreAuthorize("hasRole('DIREKTOR_ADMIN')")
448 public ResponseEntity<Void> deleteBlagajnik(@PathVariable UUID id) {
449
450 this.blagajnikService.removeBlagajnikRoleAndKeepHisRecord(id);
451 return new ResponseEntity<>(HttpStatus.NO_CONTENT);
452 }
453
454 //DELETE /api/users/nastavnici/{id}
455 @DeleteMapping("/nastavnici/{id}")
456 @PreAuthorize("hasRole('DIREKTOR_ADMIN')")
457 public ResponseEntity<Void> deleteNastavnik(@PathVariable UUID id) {
458
459 this.nastavnikService.removeNastavnikRoleAndKeepHisRecord(id);
460 return new ResponseEntity<>(HttpStatus.NO_CONTENT);
461 }
462
463 //DELETE /api/users/nastavnici/klasniRakovoditeli/{id}
464 @DeleteMapping("/nastavnici/klasniRakovoditeli/{id}")
465 @PreAuthorize("hasRole('DIREKTOR_ADMIN')")
466 public ResponseEntity<Void> deleteKlasenRakovoditel(@PathVariable UUID id) {
467
468 this.klasenRakovoditelService.removeKlasenRakovoditelRoleAndKeepHisRecord(id);
469 return new ResponseEntity<>(HttpStatus.NO_CONTENT);
470 }
471
472 //DELETE /api/users/nastavnici/predmetniNastavnici/{id}
473 @DeleteMapping("/nastavnici/predmetniNastavnici/{id}")
474 @PreAuthorize("hasRole('DIREKTOR_ADMIN')")
475 public ResponseEntity<Void> deletePredmetenNastavnik(@PathVariable UUID id) {
476
477 this.predmetenNastavnikService.removePredmetenNastavnikRoleAndKeepHisRecord(id);
478 return new ResponseEntity<>(HttpStatus.NO_CONTENT);
479 }
480
481 //DELETE /api/users/roditeli/{id}
482 @DeleteMapping("/roditeli/{id}")
483 @PreAuthorize("hasRole('DIREKTOR_ADMIN')")
484 public ResponseEntity<Void> deleteRoditel(@PathVariable UUID id) {
485
486 this.roditelService.deleteRoditelRoleButKeepHisRecords(id);
487 return new ResponseEntity<>(HttpStatus.NO_CONTENT);
488 }
489
490 //DELETE /api/users/ucenici/{id}
491 @DeleteMapping("/ucenici/{id}")
492 @PreAuthorize("hasRole('DIREKTOR_ADMIN')")
493 public ResponseEntity<Void> deleteUcenik(@PathVariable UUID id) {
494
495 this.ucenikService.deleteUcenikRoleButKeepHisRecords(id);
496 return new ResponseEntity<>(HttpStatus.NO_CONTENT);
497 }
498
499 @PreAuthorize("hasAnyRole('DIREKTOR_ADMIN', 'PREDMETEN_NASTAVNIK')")
500 @GetMapping("/nastavnici/predmetniNastavnici/{nastavnikId}/classes")
501 public ResponseEntity<List<KlasResponseDTO>> getListaKlasoviZaPredmetenNastavnik(@PathVariable("nastavnikId") UUID nastavnikId) {
502 System.out.println("Nastavnik id: " + nastavnikId);
503 List<KlasResponseDTO> klasovi = this.predmetenNastavnikService.getListaKlasovi(nastavnikId);
504 return new ResponseEntity<List<KlasResponseDTO>>(klasovi, HttpStatus.OK);
505 }
506
507 @GetMapping("/nastavnici/{nastavnikId}/classesThisWeek")///nastavnici/{nastavnikId}/classesThisWeek?classId=someId
508 public ResponseEntity<List<AktivnostZaNedelenPlanResponseDTO>> get(
509 @PathVariable UUID nastavnikId,
510 @RequestParam UUID classId
511
512 ) {
513 List<AktivnostZaNedelenPlanResponseDTO> aktivnostZaNedelenPlanResponseDTOS = this.prisustvoService.getAktivnostiZaNastavnik(nastavnikId,classId);
514 return new ResponseEntity<List<AktivnostZaNedelenPlanResponseDTO>>(aktivnostZaNedelenPlanResponseDTOS, HttpStatus.OK);
515 }
516}
Note: See TracBrowser for help on using the repository browser.