From 713c8e5137b880c8290d8206bc7de7807029e091 Mon Sep 17 00:00:00 2001 From: Miguel Nogueira Date: Mon, 14 Apr 2025 00:25:18 +0100 Subject: [PATCH] feature: add task delete method --- index.php | 5 ++++- src/Controllers/TaskController.php | 23 +++++++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/index.php b/index.php index 4a9d6fd..7b03fc4 100644 --- a/index.php +++ b/index.php @@ -19,8 +19,11 @@ $routeCollector->setDefaultInvocationStrategy(new RequestResponseArgs()); $app->get('/', [HomeFrontController::class, 'home']); -$app->get('/tasks', [TaskController::class, 'getTasks']); + $app->get('/tasks/{id}', [TaskController::class, 'getTask']); +$app->delete('/tasks/{id}', [TaskController::class, 'delete']); + +$app->get('/tasks', [TaskController::class, 'getTasks']); $app->post('/tasks', [TaskController::class, 'addTask']); diff --git a/src/Controllers/TaskController.php b/src/Controllers/TaskController.php index ec7de62..0e6c877 100644 --- a/src/Controllers/TaskController.php +++ b/src/Controllers/TaskController.php @@ -155,4 +155,27 @@ class TaskController return $errorResponse; } } + + public function delete(ServerRequestInterface $request, ResponseInterface $response, $id): ResponseInterface + { + try + { + $task = $this->repository->readById((int) $id); + $this->repository->delete($task); + + $this->builder->setOptionalMessage('Task deleted.'); + $response->getBody()->write($this->builder->build()); + + return $response; + + } catch (TaskNotFoundException $exception) + { + $this->builder->setError()->setErrorMessage($exception->getMessage())->setErrorCode(404); + + $errorResponse = $response->withStatus(404); + $errorResponse->getBody()->write($this->builder->build()); + + return $errorResponse; + } + } } \ No newline at end of file