From dfc2eb23b624dda5504d08f51959a64c98a99bef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcus=20M=C3=BCller?= <25648755+M-arcus@users.noreply.github.com> Date: Fri, 28 Feb 2025 20:22:14 +0100 Subject: [PATCH] feature: allow deactivating of scheduled tasks --- src/Controller/ScheduledTaskController.php | 19 ++++++++++++++++ .../app/administration/src/api/frosh-tools.js | 13 +++++++++++ .../frosh-tools-tab-scheduled/index.js | 22 +++++++++++++++++++ .../frosh-tools-tab-scheduled/template.twig | 3 +++ .../src/module/frosh-tools/snippet/de-DE.json | 4 ++++ .../src/module/frosh-tools/snippet/en-GB.json | 4 ++++ 6 files changed, 65 insertions(+) diff --git a/src/Controller/ScheduledTaskController.php b/src/Controller/ScheduledTaskController.php index 46630af..95ae5d8 100644 --- a/src/Controller/ScheduledTaskController.php +++ b/src/Controller/ScheduledTaskController.php @@ -77,6 +77,25 @@ public function scheduleTask(Request $request, string $id, Context $context): Js return new JsonResponse(null, Response::HTTP_NO_CONTENT); } + #[Route(path: '/scheduled-task/deactivate/{id}', name: 'api.frosh.tools.scheduled.task.deactivate', methods: ['POST'])] + public function deactivateTask(string $id, Context $context): JsonResponse + { + $scheduledTask = $this->fetchTask($id, $context); + + if (!$scheduledTask instanceof ScheduledTaskEntity) { + return new JsonResponse(null, Response::HTTP_NOT_FOUND); + } + + $data = [ + 'id' => $id, + 'status' => ScheduledTaskDefinition::STATUS_INACTIVE, + ]; + + $this->scheduledTaskRepository->update([$data], $context); + + return new JsonResponse(null, Response::HTTP_NO_CONTENT); + } + #[Route(path: '/scheduled-tasks/register', name: 'api.frosh.tools.scheduled.tasks.register', methods: ['POST'])] public function registerTasks(): JsonResponse { diff --git a/src/Resources/app/administration/src/api/frosh-tools.js b/src/Resources/app/administration/src/api/frosh-tools.js index e81b7cc..b135c74 100644 --- a/src/Resources/app/administration/src/api/frosh-tools.js +++ b/src/Resources/app/administration/src/api/frosh-tools.js @@ -81,6 +81,19 @@ class FroshTools extends ApiService { }); } + deactivateScheduledTask(id) { + const apiRoute = `${this.getApiBasePath()}/scheduled-task/deactivate/${id}`; + return this.httpClient.post( + apiRoute, + {}, + { + headers: this.getBasicHeaders() + } + ).then((response) => { + return ApiService.handleResponse(response); + }); + } + scheduledTasksRegister() { const apiRoute = `${this.getApiBasePath()}/scheduled-tasks/register`; return this.httpClient.post( diff --git a/src/Resources/app/administration/src/module/frosh-tools/component/frosh-tools-tab-scheduled/index.js b/src/Resources/app/administration/src/module/frosh-tools/component/frosh-tools-tab-scheduled/index.js index cd75891..f9ed1f6 100644 --- a/src/Resources/app/administration/src/module/frosh-tools/component/frosh-tools-tab-scheduled/index.js +++ b/src/Resources/app/administration/src/module/frosh-tools/component/frosh-tools-tab-scheduled/index.js @@ -126,6 +126,28 @@ Component.register('frosh-tools-tab-scheduled', { this.createdComponent(); }, + async deactivateTask(item) { + this.isLoading = true; + + try { + this.createNotificationInfo({ + message: this.$t('frosh-tools.scheduledTaskDeactivateStarted', {'name': item.name}) + }) + await this.froshToolsService.deactivateScheduledTask(item.id); + this.createNotificationSuccess({ + message: this.$t('frosh-tools.scheduledTaskDeactivateSucceed', {'name': item.name}) + }) + } catch (e) { + this.createNotificationError({ + message: this.$t('frosh-tools.scheduledTaskDeactivateFailed', {'name': item.name}) + }) + + this.taskError = e.response.data; + } + + this.createdComponent(); + }, + async registerScheduledTasks() { this.isLoading = true; diff --git a/src/Resources/app/administration/src/module/frosh-tools/component/frosh-tools-tab-scheduled/template.twig b/src/Resources/app/administration/src/module/frosh-tools/component/frosh-tools-tab-scheduled/template.twig index c73245e..7b9c8be 100644 --- a/src/Resources/app/administration/src/module/frosh-tools/component/frosh-tools-tab-scheduled/template.twig +++ b/src/Resources/app/administration/src/module/frosh-tools/component/frosh-tools-tab-scheduled/template.twig @@ -53,6 +53,9 @@ {{ $tc('frosh-tools.setToScheduledImmediately') }} + + {{ $tc('frosh-tools.setToInactive') }} + diff --git a/src/Resources/app/administration/src/module/frosh-tools/snippet/de-DE.json b/src/Resources/app/administration/src/module/frosh-tools/snippet/de-DE.json index 611b94a..b68ba64 100644 --- a/src/Resources/app/administration/src/module/frosh-tools/snippet/de-DE.json +++ b/src/Resources/app/administration/src/module/frosh-tools/snippet/de-DE.json @@ -79,9 +79,13 @@ "scheduledTaskFailed": "Die geplante Aufgabe für \"{name}\" ist fehlgeschlagen", "setToScheduled": "auf geplant setzen", "setToScheduledImmediately": "auf sofort geplant setzen", + "setToInactive": "auf inaktiv setzen", "scheduledTaskScheduleStarted": "Die geplante Aufgabe für \"{name}\" wird auf geplant gesetzt", "scheduledTaskScheduleSucceed": "Die geplante Aufgabe für \"{name}\" wurde auf geplant gesetzt", "scheduledTaskScheduleFailed": "Die geplante Aufgabe für \"{name}\" konnte nicht auf geplant gesetzt werden", + "scheduledTaskDeactivateStarted": "Die geplante Aufgabe für \"{name}\" wird auf inaktiv gesetzt", + "scheduledTaskDeactivateSucceed": "Die geplante Aufgabe für \"{name}\" wurde auf inaktiv gesetzt", + "scheduledTaskDeactivateFailed": "Die geplante Aufgabe für \"{name}\" konnte nicht auf inaktiv gesetzt werden", "scheduledTasksRegisterStarted": "Registriere geplante Aufgaben", "scheduledTasksRegisterSucceed": "Geplante Aufgaben registriert", "scheduledTasksRegisterFailed": "Es ist ein Fehler beim Registrieren aufgetreten", diff --git a/src/Resources/app/administration/src/module/frosh-tools/snippet/en-GB.json b/src/Resources/app/administration/src/module/frosh-tools/snippet/en-GB.json index 19ce8c5..f606284 100644 --- a/src/Resources/app/administration/src/module/frosh-tools/snippet/en-GB.json +++ b/src/Resources/app/administration/src/module/frosh-tools/snippet/en-GB.json @@ -79,9 +79,13 @@ "scheduledTaskFailed": "The scheduled task execution for \"{name}\" failed", "setToScheduled": "Set task status to scheduled", "setToScheduledImmediately": "Set task status to scheduled immediately", + "setToInactive": "Set task status to inactive", "scheduledTaskScheduleStarted": "The scheduled task for \"{name}\" is being scheduled", "scheduledTaskScheduleSucceed": "The scheduled task for \"{name}\" has been scheduled", "scheduledTaskScheduleFailed": "The scheduled task for \"{name}\" could not be scheduled", + "scheduledTaskDeactivateStarted": "The scheduled task for \"{name}\" is being deactivated", + "scheduledTaskDeactivateSucceed": "The scheduled task for \"{name}\" has been deactivated", + "scheduledTaskDeactivateFailed": "The scheduled task for \"{name}\" could not be deactivated", "scheduledTasksRegisterStarted": "Register scheduled tasks", "scheduledTasksRegisterSucceed": "Scheduled tasks registered", "scheduledTasksRegisterFailed": "Scheduled tasks registration failed",