source: backend/web3-Ednevnik-Backend/src/main/java/com/nikola/web3ednevnikbackend/controller/ScheduleController.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: 4.5 KB
Line 
1package com.nikola.web3ednevnikbackend.controller;
2
3
4import com.nikola.web3ednevnikbackend.dto.schedules.*;
5import com.nikola.web3ednevnikbackend.service.schedulesAndClasses.CasService;
6import com.nikola.web3ednevnikbackend.service.schedulesAndClasses.RasporedService;
7import jakarta.validation.Valid;
8import org.springframework.http.HttpStatus;
9import org.springframework.http.ResponseEntity;
10import org.springframework.security.access.prepost.PreAuthorize;
11import org.springframework.web.bind.annotation.*;
12
13import java.util.List;
14import java.util.UUID;
15
16@RestController
17public class ScheduleController {
18 private final RasporedService rasporedService;
19 private final CasService casService;
20
21 public ScheduleController(RasporedService rasporedService, CasService casService) {
22 this.rasporedService = rasporedService;
23 this.casService = casService;
24 }
25
26 // GET /api/raspored
27 @GetMapping("/api/raspored")
28 @PreAuthorize("hasAnyRole('KLASEN_RAKOVODITEL','DIREKTOR_ADMIN', 'PREDMETEN_NASTAVNIK')")
29 public ResponseEntity<List<RasporedResponseDTO>> getAllRasporedi() {
30 List<RasporedResponseDTO> rasporedi = this.rasporedService.getAllRasporedi();
31 return new ResponseEntity<>(rasporedi, HttpStatus.OK);
32 }
33
34 // POST /api/raspored
35 @PostMapping("/api/raspored")
36 @PreAuthorize("hasRole('DIREKTOR_ADMIN')")
37 public ResponseEntity<RasporedResponseDTO> createRaspored(@Valid @RequestBody RasporedRequestDTO rasporedRequestDTO) {
38
39 return new ResponseEntity<>(this.rasporedService.createRaspored(rasporedRequestDTO), HttpStatus.CREATED);
40 }
41
42 // GET /api/schedules/{id}
43 @GetMapping("/api/raspored/{id}")
44 @PreAuthorize("hasAnyRole('KLASEN_RAKOVODITEL','DIREKTOR_ADMIN', 'PREDMETEN_NASTAVNIK', 'RODITEL')")
45 public ResponseEntity<RasporedResponseDTO> getRasporedById(@PathVariable UUID id) {
46
47 RasporedResponseDTO raspored = this.rasporedService.getRasporedById(id);
48 return new ResponseEntity<>(raspored, HttpStatus.OK);
49 }
50
51 //DELETE /api/raspored/{id}
52 @DeleteMapping("/api/raspored/{id}")
53 @PreAuthorize("hasRole('DIREKTOR_ADMIN')")
54 public ResponseEntity<Void> deleteRasporedById(@PathVariable UUID id) {
55
56 this.rasporedService.deleteRasporedButKeepHisRecords(id);
57 return new ResponseEntity<>(HttpStatus.NO_CONTENT);
58 }
59
60 // GET /api/schedules/{id}/lessons
61 @GetMapping("/api/raspored/{id}/casovi")
62 @PreAuthorize("hasAnyRole('KLASEN_RAKOVODITEL','DIREKTOR_ADMIN', 'PREDMETEN_NASTAVNIK', 'RODITEL')")
63 public ResponseEntity<List<CasResponseDTO>> getCasoviInRaspored(@PathVariable UUID id) {
64 List<CasResponseDTO> casovi = casService.getCasoviInRaspored(id);
65
66 return new ResponseEntity<>(casovi, HttpStatus.OK);
67 }
68
69 // POST /api/schedules/{id}/lessons
70 @PostMapping("/api/raspored/{id}/casovi")
71 @PreAuthorize("hasRole('DIREKTOR_ADMIN')")
72 public ResponseEntity<CasResponseDTO> addCasVoRaspored(@PathVariable("id") UUID rasporedId, @Valid @RequestBody AddCasToRasporedRequestDTO addCasToRasporedRequestDTO) {
73
74 this.casService.addCasVoRaspored(rasporedId, addCasToRasporedRequestDTO.getCasId());
75 return new ResponseEntity<>(HttpStatus.CREATED);
76
77 }
78
79 //GET /api/casovi ->GET all casovi
80 @GetMapping("/api/casovi")
81 @PreAuthorize("hasAnyRole('DIREKTOR_ADMIN')")
82 public ResponseEntity<List<CasResponseDTO>> getCasovi() {
83 List<CasResponseDTO> casResponseDTO = this.casService.getAllCasovi();
84 return new ResponseEntity<>(casResponseDTO, HttpStatus.OK);
85 }
86
87
88 //POST /api/casovi -> create cas
89 @PostMapping("/api/casovi")
90 @PreAuthorize("hasRole('DIREKTOR_ADMIN')")
91 public ResponseEntity<CasResponseDTO> createCas(@Valid @RequestBody CasRequestDTO casRequestDTO) {
92
93 this.casService.createCas(casRequestDTO);
94 return new ResponseEntity<>(HttpStatus.CREATED);
95 }
96
97 @GetMapping("/api/casovi/{id}")
98 @PreAuthorize("hasAnyRole('DIREKTOR_ADMIN','Klasen_Rakovoditel', 'Predmeten_Nastavnik')")
99 public ResponseEntity<CasResponseDTO> getCasovi(@RequestParam UUID id) {
100 CasResponseDTO casResponseDTO = this.casService.getCasById(id);
101 return new ResponseEntity<>(casResponseDTO, HttpStatus.OK);
102 }
103
104 @GetMapping("/api/casovi/getCasIdByPredmetId")
105 public ResponseEntity<UUID> getCasIdByPredmetId(
106 @RequestParam UUID predmetId
107 ) {
108 UUID casId = casService.findCasIdByPredmetIdAndDen(
109 predmetId
110
111 );
112 return new ResponseEntity<UUID>(casId, HttpStatus.OK);
113
114 }
115}
Note: See TracBrowser for help on using the repository browser.