count events on remote calendars

This commit is contained in:
2022-07-01 23:28:42 +02:00
parent a604902074
commit 26a0ba4756
4 changed files with 91 additions and 9 deletions

View File

@@ -69,11 +69,30 @@ class RemoteCalendarProxyController
throw new BadRequestHttpException('dateTo not parsable');
}
$events = $this->remoteCalendarConnector->listEventsForUser($user, $dateFrom, $dateTo);
$paginator = $this->paginatorFactory->create(count($events));
$total = $this->remoteCalendarConnector->countEventsForUser($user, $dateFrom, $dateTo);
$paginator = $this->paginatorFactory->create($total);
if (count($events) > 0) {
$paginator->setItemsPerPage($paginator->getTotalItems());
if (0 === $total) {
return new JsonResponse(
$this->serializer->serialize(new Collection([], $paginator), 'json'),
JsonResponse::HTTP_OK,
[],
true
);
}
$events = $this->remoteCalendarConnector->listEventsForUser(
$user,
$dateFrom,
$dateTo,
$paginator->getCurrentPageFirstItemNumber(),
$paginator->getItemsPerPage()
);
// in some case, we cannot paginate: we have to fetch all the items at once. We must avoid
// further requests by forcing the number of items returned.
if (count($events) > $paginator->getItemsPerPage()) {
$paginator->setItemsPerPage(count($events));
}
$collection = new Collection($events, $paginator);