From c5311fbe58a4679ef21673195049c0321d3e869d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20B=C3=B6ckelmann?= Date: Sat, 11 Nov 2023 18:53:31 +0100 Subject: [PATCH] Delete multiple schedules --- .../api/controller/ScheduleController.java | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/backend/src/main/java/core/api/controller/ScheduleController.java b/backend/src/main/java/core/api/controller/ScheduleController.java index a9341b8..d488c6b 100644 --- a/backend/src/main/java/core/api/controller/ScheduleController.java +++ b/backend/src/main/java/core/api/controller/ScheduleController.java @@ -15,6 +15,7 @@ import org.springframework.web.bind.annotation.*; import javax.validation.Valid; import java.time.LocalDate; +import java.util.ArrayList; import java.util.List; @@ -195,4 +196,25 @@ public class ScheduleController { List missedSchedules = taskScheduleService.getAllMissedSchedulesOfUser(SecurityContextHolder.getContext().getAuthentication().getName()); return ResponseEntity.ok(missedSchedules.stream().map(AbstractSchedule::toScheduleInfo).toList()); } + + @DeleteMapping("/schedules/{scheduleIDs}/all") + public ResponseEntity deleteSchedules(@PathVariable long[] scheduleIDs) { + List> permissionResults = new ArrayList<>(); + for(long scheduleID: scheduleIDs) { + PermissionResult permissionResult = taskScheduleService.getSchedulePermissions(scheduleID, SecurityContextHolder.getContext().getAuthentication().getName()); + if(permissionResult.isHasPermissions()) { + return ResponseEntity.status(403).body(new SimpleStatusResponse("failed")); + } + + if(permissionResult.getExitCode() == ServiceExitCode.MISSING_ENTITY) { + return ResponseEntity.status(404).body(new SimpleStatusResponse("failed")); + } + permissionResults.add(permissionResult); + } + + for(PermissionResult permissionResult : permissionResults) { + taskScheduleService.deleteSchedule(permissionResult.getResult()); + } + return ResponseEntity.ok(new SimpleStatusResponse("success")); + } }