diff --git a/src/main/java/se/issuetrackingsystem/issue/controller/IssueController.java b/src/main/java/se/issuetrackingsystem/issue/controller/IssueController.java index 02435af..86d5874 100644 --- a/src/main/java/se/issuetrackingsystem/issue/controller/IssueController.java +++ b/src/main/java/se/issuetrackingsystem/issue/controller/IssueController.java @@ -60,7 +60,7 @@ public void issueModify(@RequestBody IssueRequest issueRequest,@RequestParam("is @PostMapping("/assignees") public void issueSetAssignee(@RequestBody IssueRequest issueRequest,@RequestParam("issueId") Long issueid){ Issue issue = this.issueService.getIssue(issueid); - this.issueService.setAssignee(issue,issueRequest.getUserid()); + this.issueService.setAssignee(issue,issueRequest.getUserid(),issueRequest.getAssigneeid()); } @GetMapping("/{status}") @@ -76,7 +76,7 @@ public ResponseEntity> issueCheckByStatus(@PathVariable("sta @PatchMapping("/status") public void issueChangeStatus(@RequestBody IssueRequest issueRequest,@RequestParam("issueId") Long issueid){ Issue issue = this.issueService.getIssue(issueid); - this.issueService.changeStatus(issueRequest,issue); + this.issueService.changeStatus(issueRequest.getUserid(),issue); } @GetMapping("/assigned") diff --git a/src/main/java/se/issuetrackingsystem/issue/dto/IssueRequest.java b/src/main/java/se/issuetrackingsystem/issue/dto/IssueRequest.java index 153b07b..56718a7 100644 --- a/src/main/java/se/issuetrackingsystem/issue/dto/IssueRequest.java +++ b/src/main/java/se/issuetrackingsystem/issue/dto/IssueRequest.java @@ -18,4 +18,6 @@ public class IssueRequest { private Long userid; + private Long assigneeid; + } diff --git a/src/main/java/se/issuetrackingsystem/issue/service/IssueService.java b/src/main/java/se/issuetrackingsystem/issue/service/IssueService.java index 6b5f7b5..61e9856 100644 --- a/src/main/java/se/issuetrackingsystem/issue/service/IssueService.java +++ b/src/main/java/se/issuetrackingsystem/issue/service/IssueService.java @@ -37,7 +37,9 @@ public Issue create(Long projectid, String title, String description, Long repor issue.setProject(project); issue.setTitle(title); issue.setDescription(description); - issue.setPriority(priority); + if(priority!=null) { + issue.setPriority(priority); + } issue.setReporter(userRepository.findById(reporterid).orElseThrow(() -> new CustomException(ErrorCode.USER_NOT_FOUND))); issue.setCreated_at(LocalDateTime.now()); this.issueRepository.save(issue); @@ -80,19 +82,23 @@ public void delete(Issue issue){ this.issueRepository.delete(issue); } - public void setAssignee(Issue issue, Long assigneeid){ + public void setAssignee(Issue issue,Long userid ,Long assigneeid){ + User user = this.userRepository.findById(userid).orElseThrow(() -> new CustomException(ErrorCode.USER_NOT_FOUND)); + if (user.getRole() != "PL") { + throw new CustomException(ErrorCode.ROLE_FORBIDDEN); + } issue.setAssignee(userRepository.findById(assigneeid).orElseThrow(() -> new CustomException(ErrorCode.USER_NOT_FOUND))); this.issueRepository.save(issue); } - public void changeStatus(IssueRequest issueRequest, Issue issue){ + public void changeStatus(Long userid, Issue issue){ if(issue.getStatus()== Issue.Status.NEW){ issue.setStatus(Issue.Status.ASSIGNED); - issue.setAssignee(this.userRepository.findById(issueRequest.getUserid()).orElseThrow(() -> new CustomException(ErrorCode.USER_NOT_FOUND))); + issue.setAssignee(this.userRepository.findById(userid).orElseThrow(() -> new CustomException(ErrorCode.USER_NOT_FOUND))); } else if(issue.getStatus()== Issue.Status.ASSIGNED){ issue.setStatus(Issue.Status.FIXED); - issue.setFixer(this.userRepository.findById(issueRequest.getUserid()).orElseThrow(() -> new CustomException(ErrorCode.USER_NOT_FOUND))); + issue.setFixer(this.userRepository.findById(userid).orElseThrow(() -> new CustomException(ErrorCode.USER_NOT_FOUND))); } else if(issue.getStatus()== Issue.Status.FIXED){ issue.setStatus(Issue.Status.RESOLVED); diff --git a/src/main/java/se/issuetrackingsystem/user/dto/LoginResponse.java b/src/main/java/se/issuetrackingsystem/user/dto/LoginResponse.java index 4fc1139..8028264 100644 --- a/src/main/java/se/issuetrackingsystem/user/dto/LoginResponse.java +++ b/src/main/java/se/issuetrackingsystem/user/dto/LoginResponse.java @@ -13,8 +13,11 @@ public class LoginResponse { @NotBlank private final String username; + private final String role; + public LoginResponse(User user) { this.userId = user.getId(); this.username = user.getUsername(); + this.role = user.getRole(); } } \ No newline at end of file diff --git a/src/test/java/se/issuetrackingsystem/IssueTrackingSystemApplicationTests.java b/src/test/java/se/issuetrackingsystem/IssueTrackingSystemApplicationTests.java index 2026f6a..bfed33b 100644 --- a/src/test/java/se/issuetrackingsystem/IssueTrackingSystemApplicationTests.java +++ b/src/test/java/se/issuetrackingsystem/IssueTrackingSystemApplicationTests.java @@ -44,7 +44,7 @@ class IssueTrackingSystemApplicationTests { Admin: 27 Dev: 28,29 Project: 27 - Issue: 12 (Assigned 29) + Issue: 12,25 (Assigned 29) */