diff --git a/api/src/Controller/WorkingHoursController.php b/api/src/Controller/WorkingHoursController.php index 16cb385..be291db 100644 --- a/api/src/Controller/WorkingHoursController.php +++ b/api/src/Controller/WorkingHoursController.php @@ -12,6 +12,7 @@ use Slim\Exception\HttpNotFoundException; use Slim\Psr7\Request; use Slim\Psr7\Response; use TorstenHettstedt\TimekeepingApi\Models\WorkingHours; +use TorstenHettstedt\TimekeepingApi\Repositories\RepositoryBadWhereDataException; use TorstenHettstedt\TimekeepingApi\Repositories\RepositoryRecordAlreadyExistException; use TorstenHettstedt\TimekeepingApi\Repositories\RepositoryRecordNotFoundException; use TorstenHettstedt\TimekeepingApi\Repositories\WorkingHoursRepository; @@ -50,13 +51,20 @@ class WorkingHoursController extends AbstractController * @return Response * * @throws HttpInternalServerErrorException + * @throws HttpBadRequestException * @noinspection PhpUnusedParameterInspection */ public function browse(Request $request, Response $response, array $args): Response { $repository = new WorkingHoursRepository($this->databases); + $queryParams = $request->getQueryParams(); try { - return $this->printResponse($response, $repository->findAll(), StatusCodeInterface::STATUS_OK); + return $this->printResponse($response, $repository->findFiltered( + $queryParams['start-date'] ?? null, + $queryParams['end-date'] ?? null + ), StatusCodeInterface::STATUS_OK); + } catch (RepositoryBadWhereDataException $exception) { + throw new HttpBadRequestException($request, 'Ein Wert für das Datum im Query ist ungültig', $exception); } catch (Exception $exception) { throw new HttpInternalServerErrorException($request, 'Der Wert für das Datum oder die Zeit ist falsch in der Datenbank', $exception); }