src/EventListener/AddTotalCountHeaderListener.php line 26

Open in your IDE?
  1. <?php
  2. /**
  3.  * Created by Logics Tecnologia e Serviços LTDA.
  4.  * @author: Romeu Godoi <romeu@logics.com.br>
  5.  * Date: 25/05/20
  6.  * Time: 12:07
  7.  * @copyright Copyright (C) 2020 LogicSITE. Todos os Direitos Reservados.
  8.  * LogicSITE. Este software é de propriedade exclusiva da LOGICS TEC. E SERV. LTDA
  9.  * e seu uso só pode ser dado por usuários licenciados por escrito.
  10.  * O uso indevido desta plataforma, ou parte dela estará sujeita a penalidades
  11.  * previstas em lei, conforme legislação pertinente.
  12.  */
  13. namespace App\EventListener;
  14. use ApiPlatform\Core\Bridge\Doctrine\Orm\Paginator;
  15. use Symfony\Component\HttpKernel\Event\ResponseEvent;
  16. /**
  17.  * This Listener adds the X-Total-Count header on response
  18.  * Class AddTotalCountHeaderListener
  19.  * @package App\EventListener
  20.  */
  21. final class AddTotalCountHeaderListener
  22. {
  23.     public function onKernelResponse(ResponseEvent $event): void
  24.     {
  25.         $request $event->getRequest();
  26.         if (($data $request->attributes->get('data')) && $data instanceof Paginator) {
  27. //            $from = $data->count() ? ($data->getCurrentPage() - 1) * $data->getItemsPerPage() : 0;
  28. //            $to = $data->getCurrentPage() < $data->getLastPage() ? $data->getCurrentPage() * $data->getItemsPerPage() : $data->getTotalItems();
  29.             $response $event->getResponse();
  30.             $response->headers->add([
  31.                 'x-current-page' => $data->getCurrentPage(),
  32.                 'x-items-per-page' => $data->getItemsPerPage(),
  33.                 'x-last-page' => $data->getLastPage(),
  34.                 'x-total-count' => $data->getTotalItems(),
  35. //                'accept-ranges' => 'items',
  36. //                'range-unit' => 'items',
  37. //                'content-range' => \sprintf('%u-%u/%u', $from, $to, $data->getTotalItems()),
  38.             ]);
  39.         }
  40.     }
  41. }