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",