zend-blog-3-backend

Форк
0
/
TelegramUpdateController.php 
87 строк · 2.4 Кб
1
<?php
2

3
namespace App\Controller\API;
4

5
use App\Controller\BaseController;
6
use App\Entity\TelegramUpdate;
7
use App\Repository\TelegramUpdateRepository;
8
use Symfony\Component\HttpFoundation\JsonResponse;
9
use Symfony\Component\HttpFoundation\Request;
10
use Symfony\Component\Routing\Annotation\Route;
11
use Xelbot\Telegram\Robot;
12

13
/**
14
 * @Route("/api/telegramUpdates")
15
 */
16
class TelegramUpdateController extends BaseController
17
{
18
    /**
19
     * @Route("", methods={"GET"})
20
     *
21
     * @param Request $request
22
     * @param TelegramUpdateRepository $repository
23
     *
24
     * @return JsonResponse
25
     */
26
    public 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

36
        return new JsonResponse($result);
37
    }
38

39
    /**
40
     * @Route("/{id}", requirements={"id": "\d+"}, methods={"GET"})
41
     *
42
     * @param TelegramUpdate $entity
43
     *
44
     * @return JsonResponse
45
     */
46
    public function findAction(TelegramUpdate $entity): JsonResponse
47
    {
48
        $result = $this->getDataConverter()
49
            ->getTelegramUpdate($entity);
50

51
        return 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
     */
63
    public 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

70
        if ($tgUpdate = $repository->find($replyId)) {
71
            if ($chatId = $tgUpdate->getChatId()) {
72
                $bot->sendMessage($message, $chatId);
73
            }
74
        } else {
75
            throw $this->createNotFoundException();
76
        }
77

78
        /* virtual Telegram update :) */
79
        return 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

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.