source: backend/web3-Ednevnik-Backend/src/main/java/com/nikola/web3ednevnikbackend/controller/KlasController.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: 7.8 KB
Line 
1package com.nikola.web3ednevnikbackend.controller;
2
3import com.nikola.web3ednevnikbackend.dto.annoucements.SoopstenieResponseDTO;
4import com.nikola.web3ednevnikbackend.dto.attendance.PrisustvaZaKlasResponseDTO;
5import com.nikola.web3ednevnikbackend.dto.classes.*;
6
7import com.nikola.web3ednevnikbackend.dto.schedules.RasporedSoCasoviResponseDTO;
8
9import com.nikola.web3ednevnikbackend.dto.subjects.AssignPredmetToClassRequestDTO;
10import com.nikola.web3ednevnikbackend.dto.subjects.PredmetResponseDTO;
11import com.nikola.web3ednevnikbackend.dto.users.KlasenRakovoditelResponseDTO;
12
13import com.nikola.web3ednevnikbackend.dto.users.UcenikResponseDTO;
14import com.nikola.web3ednevnikbackend.dto.weeklyplans.AktivnostZaNedelenPlanResponseDTO;
15import com.nikola.web3ednevnikbackend.dto.weeklyplans.NedelenPlanSoAktivnostiResponseDTO;
16
17import com.nikola.web3ednevnikbackend.service.attendance.PrisustvoService;
18import com.nikola.web3ednevnikbackend.service.schedulesAndClasses.KlasService;
19
20import com.nikola.web3ednevnikbackend.service.users.UcenikService;
21import jakarta.validation.Valid;
22import org.springframework.http.HttpStatus;
23import org.springframework.http.ResponseEntity;
24import org.springframework.security.access.prepost.PreAuthorize;
25import org.springframework.web.bind.annotation.*;
26
27import java.util.List;
28import java.util.UUID;
29
30@RestController
31@RequestMapping("/api/klas")
32
33public class KlasController {
34 private final KlasService klasService;
35 private final UcenikService ucenikService;
36 private final PrisustvoService prisustvoService;
37
38 public KlasController(KlasService klasService, UcenikService ucenikService, PrisustvoService prisustvoService) {
39 this.klasService = klasService;
40 this.ucenikService = ucenikService;
41
42 this.prisustvoService = prisustvoService;
43 }
44
45 // GET /api/classes
46 @PreAuthorize("hasRole('DIREKTOR_ADMIN')")
47 @GetMapping
48 public ResponseEntity<List<KlasResponseDTO>> getAllKlasovi(){
49 List<KlasResponseDTO> klasovi = this.klasService.getAllKlasovi();
50 return new ResponseEntity<>(klasovi, HttpStatus.OK);
51 }
52 // POST /api/classes
53 @PostMapping
54 @PreAuthorize("hasRole('DIREKTOR_ADMIN')")
55 public ResponseEntity<KlasResponseDTO> createKlas(@Valid @RequestBody KlasRequestDTO klasRequestDTO) {
56
57 return new ResponseEntity<>( this.klasService.createKlas(klasRequestDTO), HttpStatus.CREATED);
58 }
59
60// GET /api/classes/{id}
61@PreAuthorize("hasAnyRole('KLASEN_RAKOVODITEL','DIREKTOR_ADMIN', 'PREDMETEN_NASTAVNIK', 'RODITEL')")
62@GetMapping("/{id}")
63public ResponseEntity<KlasResponseDTO> getKlasById(@PathVariable UUID id){
64
65 KlasResponseDTO klas =this.klasService.getKlasById(id);
66 return new ResponseEntity<>(klas, HttpStatus.OK);
67}
68// DELETE /api/classes/{id}
69@DeleteMapping("/{id}")
70@PreAuthorize("hasRole('DIREKTOR_ADMIN')")
71public ResponseEntity<Void> deleteKlasById(@PathVariable UUID id){
72
73 this.klasService.deleteKlasAndKeepHisData(id);
74 return new ResponseEntity<>(HttpStatus.NO_CONTENT);
75}
76
77
78// POST /api/klas/{classId}/addStudent
79@PostMapping("/{classId}/addStudent")
80@PreAuthorize("hasRole('DIREKTOR_ADMIN')")
81public ResponseEntity<Void> addStudentInAClass(@PathVariable UUID classId, @Valid @RequestBody UcenikAddToKlasRequestDTO ucenikAddToKlasRequestDTO){
82
83 ucenikService.addStudentInKlas(classId, ucenikAddToKlasRequestDTO.getUcenikId());
84 return new ResponseEntity<>(HttpStatus.CREATED);
85}
86
87// GET /api/classes/{classId}/students
88@GetMapping("/{classId}/students")
89@PreAuthorize("hasAnyRole('KLASEN_RAKOVODITEL','DIREKTOR_ADMIN', 'PREDMETEN_NASTAVNIK', 'RODITEL')")
90public ResponseEntity<List<UcenikResponseDTO>> getAllStudentsWhoAreInTheSameClass(@PathVariable UUID classId){
91
92 List<UcenikResponseDTO> getAllStudentsWhoAreInTheSameClass = this.klasService.getAllStudentsWhoAreInTheSameClass(classId);
93 return new ResponseEntity<>(getAllStudentsWhoAreInTheSameClass, HttpStatus.OK);
94}
95 // POST /api/classes/{classId}/class-teacher
96 @PostMapping("/{classId}/klasenRakovoditel")
97 @PreAuthorize("hasRole('DIREKTOR_ADMIN')")
98 public ResponseEntity<Void> assignKlasenRakovoditelToAClass(@PathVariable UUID classId, @Valid @RequestBody AssignKlasenRakovoditelToAClassRequestDTO assignKlasenRakovoditelToAClassRequestDTO){
99
100 this.klasService.addKlasenRakovoditelToAClass(classId, assignKlasenRakovoditelToAClassRequestDTO.getKlasenRakovoditelId());
101 return new ResponseEntity<>(HttpStatus.CREATED);
102 }
103// GET /api/classes/{classId}/class-teacher
104@GetMapping("/{classId}/klasenRakovoditel")
105@PreAuthorize("hasAnyRole('KLASEN_RAKOVODITEL','DIREKTOR_ADMIN', 'PREDMETEN_NASTAVNIK', 'RODITEL')")
106public ResponseEntity<KlasenRakovoditelResponseDTO> getKlasenRakovoditelZaKlas(@PathVariable UUID classId){
107
108 KlasenRakovoditelResponseDTO klasenRakovoditelResponseDTO = this.klasService.getKlasenRakovoditelByKlas(classId);
109 return new ResponseEntity<>(klasenRakovoditelResponseDTO, HttpStatus.OK);
110}
111
112// @GetMapping("/{classId}/raspored") //zemi go rasporedot sto klasot tekovno go sledi
113 @GetMapping("/{classId}/raspored")
114 @PreAuthorize("hasAnyRole('KLASEN_RAKOVODITEL','DIREKTOR_ADMIN', 'PREDMETEN_NASTAVNIK', 'RODITEL')")
115 public ResponseEntity<RasporedSoCasoviResponseDTO> getRasporedForClass(@PathVariable UUID classId){
116
117 RasporedSoCasoviResponseDTO raspored = this.klasService.getRasporedZaKlas(classId);
118 if(raspored == null){
119 return new ResponseEntity<RasporedSoCasoviResponseDTO>(HttpStatus.NO_CONTENT);
120 }
121 return new ResponseEntity<>(raspored, HttpStatus.OK);
122 }
123 //GET /api/classes/{classId}/soopstenija
124 @GetMapping("/{classId}/soopstenija")
125 @PreAuthorize("hasAnyRole('KLASEN_RAKOVODITEL','DIREKTOR_ADMIN', 'PREDMETEN_NASTAVNIK', 'RODITEL')")
126 public ResponseEntity<List<SoopstenieResponseDTO>> getAllSoopstenijaZaKlas(@PathVariable UUID classId){
127
128 List<SoopstenieResponseDTO> ssopstenija = this.klasService.getSoopstenijaForKlasId(classId);
129 return new ResponseEntity<>(ssopstenija, HttpStatus.OK);
130 }
131
132 //GET /api/classes/{classId}/nedelenPlan
133 @GetMapping("/{classId}/nedelenPlan")
134 @PreAuthorize("hasAnyRole('KLASEN_RAKOVODITEL','DIREKTOR_ADMIN', 'PREDMETEN_NASTAVNIK', 'RODITEL')")
135 public ResponseEntity<NedelenPlanSoAktivnostiResponseDTO> getAllNedelniPlanoviByClass(@PathVariable UUID classId){
136
137 NedelenPlanSoAktivnostiResponseDTO nedelenPlanSoAktivnosti = this.klasService.getNedelenPlanSoAktivnostiZaKlasot(classId);
138 return new ResponseEntity<>(nedelenPlanSoAktivnosti, HttpStatus.OK);
139 }
140
141
142 @GetMapping("/{classId}/predmeti")
143 @PreAuthorize("hasAnyRole('KLASEN_RAKOVODITEL','DIREKTOR_ADMIN', 'PREDMETEN_NASTAVNIK', 'RODITEL')")
144 public ResponseEntity<List<PredmetResponseDTO>> getPredmetiZaKlas(@PathVariable UUID classId){
145 List<PredmetResponseDTO> predmetiKoiGiSlusaKlasot = this.klasService.getPredmetiKoiGiSlusaKlasot(classId);
146 return new ResponseEntity<>(predmetiKoiGiSlusaKlasot, HttpStatus.OK);
147 }
148
149 @PostMapping("/{classId}/predmeti")
150 @PreAuthorize("hasRole('DIREKTOR_ADMIN')")
151 public ResponseEntity<Void> addKlasDaSlusaPredmeti(@PathVariable UUID classId, @RequestBody AssignPredmetToClassRequestDTO assignPredmetToClassRequestDTO){
152 this.klasService.addPredmetToKLas(classId, assignPredmetToClassRequestDTO.getPredmetId());
153 return new ResponseEntity<Void>(HttpStatus.CREATED);
154 }
155
156 @PutMapping("/{classId}/raspored")
157 @PreAuthorize("hasRole('DIREKTOR_ADMIN')")
158 public ResponseEntity<Void> changeRasporedForKlas(@PathVariable("classId") UUID classId, @RequestBody ChangeRasporedForClassRequestDTO changeRasporedForClassRequestDTO){
159 this.klasService.changeRasporedForClass(classId, changeRasporedForClassRequestDTO.getRasporedId());
160 return new ResponseEntity<Void>(HttpStatus.NO_CONTENT);
161 }
162
163
164
165
166}
Note: See TracBrowser for help on using the repository browser.