Skip to content

Commit 1856b44

Browse files
authored
Merge pull request #338 from PrestaShop/develop
Merge `develop` into `master`
2 parents f11b77f + fb40dd0 commit 1856b44

File tree

4 files changed

+44
-10
lines changed

4 files changed

+44
-10
lines changed

composer.lock

Lines changed: 6 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/Controller/ReportController.php

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,9 @@ public function reports(Request $request): JsonResponse
3838
{
3939
$executionFilters = [];
4040
$requestParams = $request->query->all();
41+
$paramPage = $requestParams['page'] ?? 1;
42+
$paramLimit = $requestParams['limit'] ?? 20;
43+
$paramLimit = $paramLimit > 100 ? 100 : $paramLimit;
4144

4245
if (isset($requestParams['filter_platform'])) {
4346
$executionFilters['platform'] = $requestParams['filter_platform'];
@@ -52,7 +55,9 @@ public function reports(Request $request): JsonResponse
5255
}
5356
$executions = $this->executionRepository->findBy($executionFilters, [
5457
'start_date' => 'DESC',
55-
]);
58+
], $paramLimit, ($paramPage - 1) * $paramLimit);
59+
60+
$numExecutions = $this->executionRepository->count($executionFilters);
5661

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

111-
return new JsonResponse($reports);
116+
$response = new JsonResponse(['count' => $numExecutions, 'reports' => $reports]);
117+
$response->headers->set('Access-Control-Allow-Origin', '*');
118+
119+
return $response;
112120
}
113121

114122
#[Route('/reports/{idReport}', methods: ['GET'])]

src/Repository/ExecutionRepository.php

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,4 +124,27 @@ public function findAllBetweenDates(string $version, string $startDate, string $
124124

125125
return $qb->getQuery()->getResult();
126126
}
127+
128+
public function count(array $criteria = []): int
129+
{
130+
$qb = $this->createQueryBuilder('e');
131+
$qb->select($qb->expr()->count('e'));
132+
if (isset($criteria['platform'])) {
133+
$qb
134+
->andWhere('e.platform = :platform')
135+
->setParameter('platform', $criteria['platform']);
136+
}
137+
if (isset($criteria['campaign'])) {
138+
$qb
139+
->andWhere('e.campaign = :campaign')
140+
->setParameter('campaign', $criteria['campaign']);
141+
}
142+
if (isset($criteria['version'])) {
143+
$qb
144+
->andWhere('e.version = :version')
145+
->setParameter('version', $criteria['version']);
146+
}
147+
148+
return $qb->getQuery()->getSingleScalarResult();
149+
}
127150
}

tests/Controller/ReportControllerTest.php

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,9 +55,12 @@ public function testReportsFilters(array $query, int $count): void
5555
$this->assertEquals('application/json', $response->headers->get('content-type'));
5656

5757
$content = json_decode($response->getContent(), true);
58-
$this->assertEquals($count, count($content));
58+
$this->assertArrayHasKey('count', $content);
59+
$this->assertGreaterThan(0, $content['count']);
60+
$this->assertArrayHasKey('reports', $content);
61+
$this->assertEquals($count, count($content['reports']));
5962
$datePrevious = null;
60-
foreach ($content as $item) {
63+
foreach ($content['reports'] as $item) {
6164
if ($datePrevious) {
6265
$this->assertGreaterThanOrEqual($item['start_date'], $datePrevious);
6366
}

0 commit comments

Comments
 (0)