From c4a635a24805f1ea50079ebe5c823ae88f004848 Mon Sep 17 00:00:00 2001 From: Sebastian <13592751+MrSebastian@users.noreply.github.com> Date: Sun, 17 Mar 2024 01:46:01 +0100 Subject: [PATCH] delete person ref from task assignee --- .../backend/task/service/TaskService.java | 5 +++++ .../service/events/PersonEventsListener.java | 19 +++++++++++++++++++ 2 files changed, 24 insertions(+) create mode 100644 backend/src/main/java/de/mrsebastian/todoappdemo/backend/task/service/events/PersonEventsListener.java diff --git a/backend/src/main/java/de/mrsebastian/todoappdemo/backend/task/service/TaskService.java b/backend/src/main/java/de/mrsebastian/todoappdemo/backend/task/service/TaskService.java index 446f8a15..e000b22d 100644 --- a/backend/src/main/java/de/mrsebastian/todoappdemo/backend/task/service/TaskService.java +++ b/backend/src/main/java/de/mrsebastian/todoappdemo/backend/task/service/TaskService.java @@ -72,6 +72,11 @@ public void updateTaskAssignee(final UUID taskId, @Nullable final TaskAssigneeDT } } + @PreAuthorize("hasAnyRole(T(de.mrsebastian.todoappdemo.backend.security.AuthoritiesEnum).TASK_ADMIN.name())") + public void removePersonFromTasks(final UUID personId) { + getTaskWithAssignee(personId).forEach(task -> taskDAService.removeAssignee(task.id())); + } + private void checkIfExistsOrThrow(final UUID taskId) { if (!taskDAService.taskExsits(taskId)) { throw new NotFoundException(taskId, Task.class); diff --git a/backend/src/main/java/de/mrsebastian/todoappdemo/backend/task/service/events/PersonEventsListener.java b/backend/src/main/java/de/mrsebastian/todoappdemo/backend/task/service/events/PersonEventsListener.java new file mode 100644 index 00000000..c7737064 --- /dev/null +++ b/backend/src/main/java/de/mrsebastian/todoappdemo/backend/task/service/events/PersonEventsListener.java @@ -0,0 +1,19 @@ +package de.mrsebastian.todoappdemo.backend.task.service.events; + +import de.mrsebastian.todoappdemo.backend.person.service.events.PersonDeleteEvent; +import de.mrsebastian.todoappdemo.backend.task.service.TaskService; +import lombok.AllArgsConstructor; +import org.springframework.context.event.EventListener; +import org.springframework.stereotype.Component; + +@Component +@AllArgsConstructor +public class PersonEventsListener { + + private final TaskService taskService; + + @EventListener + public void handlePersonDeletedEvent(final PersonDeleteEvent personDeleteEvent) { + taskService.removePersonFromTasks(personDeleteEvent.personId()); + } +}