source: backend/web3-Ednevnik-Backend/src/main/java/com/nikola/web3ednevnikbackend/controller/PaymentSoopstenieController.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.7 KB
Line 
1package com.nikola.web3ednevnikbackend.controller;
2
3import com.nikola.web3ednevnikbackend.config.security.CustomUserDetails;
4import com.nikola.web3ednevnikbackend.dto.payments.*;
5import com.nikola.web3ednevnikbackend.service.payment.PaymentSoopstenieService;
6import jakarta.validation.Valid;
7import org.springframework.http.HttpStatus;
8import org.springframework.http.ResponseEntity;
9import org.springframework.security.access.prepost.PreAuthorize;
10import org.springframework.security.core.annotation.AuthenticationPrincipal;
11import org.springframework.web.bind.annotation.*;
12import com.nikola.web3ednevnikbackend.model.enums.soopstenieZaPlakjanjeStatus;
13
14import java.util.List;
15import java.util.UUID;
16
17@RestController
18@RequestMapping("/api/paymentsSoopstenija")
19public class PaymentSoopstenieController {
20
21 private final PaymentSoopstenieService paymentSoopstenieService;
22
23 public PaymentSoopstenieController(PaymentSoopstenieService paymentSoopstenieService) {
24 this.paymentSoopstenieService = paymentSoopstenieService;
25 }
26
27
28 @GetMapping("/roditel")
29 @PreAuthorize("hasAnyRole('KLASEN_RAKOVODITEL','DIREKTOR_ADMIN', 'BLAGAJNIK', 'RODITEL')")
30 public ResponseEntity<List<SoopstenieZaPlakjanjeResponseDTO_roditel>> getAllActiveSoopstenijaZaPlakjanje_RoditelView(@AuthenticationPrincipal CustomUserDetails userDetails) {
31
32
33 UUID roditelId = userDetails.getId();
34
35 List<SoopstenieZaPlakjanjeResponseDTO_roditel> soopstenijaZaPlakjanje = this.paymentSoopstenieService.getAllActiveSoopstenijaZaPlakjanje_RoditelView(roditelId);
36 return new ResponseEntity<List<SoopstenieZaPlakjanjeResponseDTO_roditel>>(soopstenijaZaPlakjanje, HttpStatus.OK);
37 }
38
39 @GetMapping("/blagajnik")
40 @PreAuthorize("hasAnyRole('KLASEN_RAKOVODITEL','DIREKTOR_ADMIN', 'BLAGAJNIK', 'RODITEL')")
41 public ResponseEntity<List<SoopstenieZaPlakjanjeResponseDTO_blagajnik>> getAllActiveSoopstenijaZaPlakjanje_BlagajnikView(@AuthenticationPrincipal CustomUserDetails userDetails) {
42
43
44 UUID blagajnikId = userDetails.getId();
45
46 List<SoopstenieZaPlakjanjeResponseDTO_blagajnik> soopstenijaZaPlakjanje = this.paymentSoopstenieService.getAllActiveSoopstenijaZaPlakjanje_BlagajnikView(blagajnikId);
47 return new ResponseEntity<List<SoopstenieZaPlakjanjeResponseDTO_blagajnik>>(soopstenijaZaPlakjanje, HttpStatus.OK);
48 }
49
50 @GetMapping("/direktorAdmin")
51 @PreAuthorize("hasAnyRole('DIREKTOR_ADMIN','MON_ADMIN')")
52 //ke se povikuva kako ?status=PENDING, ?status=REJECTED, ?status=APPROVED
53 public ResponseEntity<List<SoopstenieZaPlakjanjeResponseDTO_direktorAdmin>> getAllSoopstenijaZaPlakjanje_direktorAdmin(@RequestParam(required = false, defaultValue = "PENDING") String status) {
54 List<SoopstenieZaPlakjanjeResponseDTO_direktorAdmin> soopstenieZaPlakjanjeResponseDTODirektorAdmin = this.paymentSoopstenieService.getAllSoopstenijaZaPlakjanje_direktorAdmin(status);
55 return new ResponseEntity<List<SoopstenieZaPlakjanjeResponseDTO_direktorAdmin>>(soopstenieZaPlakjanjeResponseDTODirektorAdmin, HttpStatus.OK);
56 }
57
58 @GetMapping("/approved")
59 public ResponseEntity<List<SoopstenieZaPlakjanjeResponseDTO_roditel>> getApproved() {
60
61 List<SoopstenieZaPlakjanjeResponseDTO_roditel> approvedSoopstenija = this.paymentSoopstenieService.getAllApprovedSoopstenija();
62
63 return new ResponseEntity<>(approvedSoopstenija, HttpStatus.OK);
64 }
65
66
67 @PostMapping
68 public ResponseEntity<Void> createSoopstenieZaPlakjanje(@Valid @RequestBody SoopstenieZaPlakjanjeRequestDTO soopstenieZaPlakjanjeRequestDTO) {
69 this.paymentSoopstenieService.createSoopstenieZaPlakjanje(soopstenieZaPlakjanjeRequestDTO);
70
71 return new ResponseEntity<>(HttpStatus.CREATED);
72 }
73
74
75 @PutMapping("/{id}/approve")
76 @PreAuthorize("hasAnyRole('DIREKTOR_ADMIN','MON_ADMIN')")
77 public ResponseEntity<Void> approve(@PathVariable("id") UUID soopstenieId,
78 @Valid @RequestBody ApproveAndRejectSoopstenieZaPlakjanjeRequestDTO approveAndRejectSoopstenieZaPlakjanjeRequestDTO) {
79
80 this.paymentSoopstenieService.approveSoopstenieByDirektorAdmin(soopstenieId, approveAndRejectSoopstenieZaPlakjanjeRequestDTO);
81
82 return new ResponseEntity<>(HttpStatus.NO_CONTENT);
83 }
84
85
86 @PutMapping("/{id}/reject")
87 @PreAuthorize("hasAnyRole('DIREKTOR_ADMIN','MON_ADMIN')")
88 public ResponseEntity<Void> reject(@PathVariable("id") UUID soopstenieId,
89 @Valid @RequestBody ApproveAndRejectSoopstenieZaPlakjanjeRequestDTO approveAndRejectSoopstenieZaPlakjanjeRequestDTO) {
90
91 this.paymentSoopstenieService.rejectSoopstenieByDirektorAdmin(soopstenieId, approveAndRejectSoopstenieZaPlakjanjeRequestDTO);
92
93 return ResponseEntity.ok().build();
94 }
95}
Note: See TracBrowser for help on using the repository browser.