zend-blog-3-backend
87 строк · 2.4 Кб
1<?php
2
3namespace App\Controller\API;
4
5use App\Controller\BaseController;
6use App\Entity\TelegramUpdate;
7use App\Repository\TelegramUpdateRepository;
8use Symfony\Component\HttpFoundation\JsonResponse;
9use Symfony\Component\HttpFoundation\Request;
10use Symfony\Component\Routing\Annotation\Route;
11use Xelbot\Telegram\Robot;
12
13/**
14* @Route("/api/telegramUpdates")
15*/
16class TelegramUpdateController extends BaseController
17{
18/**
19* @Route("", methods={"GET"})
20*
21* @param Request $request
22* @param TelegramUpdateRepository $repository
23*
24* @return JsonResponse
25*/
26public function findAllAction(Request $request, TelegramUpdateRepository $repository): JsonResponse
27{
28$pagination = $this->paginate(
29$repository->getListQuery(),
30$request->query->get('page', 1)
31);
32
33$result = $this->getDataConverter()
34->getTelegramUpdateArray($pagination, 'telegramUser');
35
36return new JsonResponse($result);
37}
38
39/**
40* @Route("/{id}", requirements={"id": "\d+"}, methods={"GET"})
41*
42* @param TelegramUpdate $entity
43*
44* @return JsonResponse
45*/
46public function findAction(TelegramUpdate $entity): JsonResponse
47{
48$result = $this->getDataConverter()
49->getTelegramUpdate($entity);
50
51return new JsonResponse($result);
52}
53
54/**
55* @Route("", methods={"POST"})
56*
57* @param Request $request
58* @param TelegramUpdateRepository $repository
59* @param Robot $bot
60*
61* @return JsonResponse
62*/
63public function createAction(Request $request, TelegramUpdateRepository $repository, Robot $bot): JsonResponse
64{
65$now = new \DateTime();
66$messageData = $request->request->get('telegramUpdate');
67$message = $messageData['message'];
68$replyId = $messageData['replyId'];
69
70if ($tgUpdate = $repository->find($replyId)) {
71if ($chatId = $tgUpdate->getChatId()) {
72$bot->sendMessage($message, $chatId);
73}
74} else {
75throw $this->createNotFoundException();
76}
77
78/* virtual Telegram update :) */
79return new JsonResponse([
80'id' => (int)$now->format('U'),
81'user' => null,
82'message' => $message,
83'createdAt' => $now->format(\DateTimeInterface::ATOM),
84'replyId' => 0,
85]);
86}
87}
88