src/Controller/Api/HighlightedMessageController.php line 44

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Api;
  3. use App\Entity\HighlightedMessage;
  4. use App\Service\Rsa;
  5. use App\Service\SerializeService;
  6. use Doctrine\ORM\EntityManagerInterface;
  7. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  8. use Symfony\Component\HttpFoundation\JsonResponse;
  9. use Symfony\Component\HttpFoundation\Request;
  10. use Symfony\Component\Routing\Annotation\Route;
  11. use Symfony\Contracts\Translation\TranslatorInterface;
  12. /**
  13.  * Class HighlightedMessageController
  14.  * @package App\Controller\Api
  15.  * @Route(path="/api/highlighted/message", name="api_highlighted_message_")
  16.  */
  17. class HighlightedMessageController extends AbstractController
  18. {
  19.     private EntityManagerInterface $em;
  20.     private SerializeService $serializeService;
  21.     private Rsa $rsa;
  22.     private TranslatorInterface $translator;
  23.     public function __construct(
  24.         EntityManagerInterface $em,
  25.         SerializeService $serializeService,
  26.         Rsa $rsa,
  27.         TranslatorInterface $translator
  28.     ) {
  29.         $this->em $em;
  30.         $this->serializeService $serializeService;
  31.         $this->rsa $rsa;
  32.         $this->translator $translator;
  33.     }
  34.     /**
  35.      * @param Request $request
  36.      * @return JsonResponse
  37.      * @Route("/last", name="find_three_last")
  38.      */
  39.     public function findThreeLast(Request $request): JsonResponse
  40.     {
  41.         if (!$this->rsa->isValidToken($request->request->get('apiKey'))) {
  42.             return new JsonResponse([
  43.                 'success' => false,
  44.                 'message' => $this->translator->trans('global.invalidToken'),
  45.             ]);
  46.         }
  47.         $data = [];
  48.         /** @var HighlightedMessage[] $highlightedMessage */
  49.         $highlightedMessages $this->em->getRepository(HighlightedMessage::class)->findBy([], ['id' => 'DESC'], 30);
  50.         foreach ($highlightedMessages as $highlightedMessage) {
  51.             $data[] = $this->serializeService->serializeHighlightedMessage($highlightedMessage);
  52.         }
  53.         return new JsonResponse([
  54.             'success' => true,
  55.             'highlightedMessages' => $data,
  56.         ]);
  57.     }
  58. }