Skip to content

Commit

Permalink
/reports : Add pagination (per default)
Browse files Browse the repository at this point in the history
  • Loading branch information
Progi1984 committed Jan 14, 2025
1 parent d19d4fc commit 5a9b0d3
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 2 deletions.
12 changes: 10 additions & 2 deletions src/Controller/ReportController.php
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,9 @@ public function reports(Request $request): JsonResponse
{
$executionFilters = [];
$requestParams = $request->query->all();
$paramPage = $requestParams['page'] ?? 1;
$paramLimit = $requestParams['limit'] ?? 20;
$paramLimit = $paramLimit > 100 ? 100 : $paramLimit;

if (isset($requestParams['filter_platform'])) {
$executionFilters['platform'] = $requestParams['filter_platform'];
Expand All @@ -52,7 +55,9 @@ public function reports(Request $request): JsonResponse
}
$executions = $this->executionRepository->findBy($executionFilters, [
'start_date' => 'DESC',
]);
], $paramLimit, ($paramPage - 1) * $paramLimit);

$numExecutions = $this->executionRepository->count($executionFilters);

$reportListing = [];
if (!isset($executionFilters['platform']) && !isset($executionFilters['campaign'])) {
Expand Down Expand Up @@ -108,7 +113,10 @@ public function reports(Request $request): JsonResponse
return ($tm1 < $tm2) ? 1 : (($tm1 > $tm2) ? -1 : 0);
});

return new JsonResponse($reports);
$response = new JsonResponse(['count' => $numExecutions, 'reports' => $reports]);
$response->headers->set('Access-Control-Allow-Origin', '*');

return $response;
}

#[Route('/reports/{idReport}', methods: ['GET'])]
Expand Down
23 changes: 23 additions & 0 deletions src/Repository/ExecutionRepository.php
Original file line number Diff line number Diff line change
Expand Up @@ -124,4 +124,27 @@ public function findAllBetweenDates(string $version, string $startDate, string $

return $qb->getQuery()->getResult();
}

public function count(array $criteria = []): int
{
$qb = $this->createQueryBuilder('e');
$qb->select($qb->expr()->count('e'));
if (isset($criteria['platform'])) {
$qb
->andWhere('e.platform = :platform')
->setParameter('platform', $criteria['platform']);
}
if (isset($criteria['campaign'])) {
$qb
->andWhere('e.campaign = :campaign')
->setParameter('campaign', $criteria['campaign']);
}
if (isset($criteria['version'])) {
$qb
->andWhere('e.version = :version')
->setParameter('version', $criteria['version']);
}

return $qb->getQuery()->getSingleScalarResult();
}
}

0 comments on commit 5a9b0d3

Please sign in to comment.