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