zend-blog-3-backend
71 строка · 2.2 Кб
1<?php
2
3namespace App\Telegram;
4
5use App\Entity\TelegramUpdate;
6use App\Entity\TelegramUser;
7use Doctrine\ORM\EntityManagerInterface;
8use Xelbot\Telegram\Entity\Update;
9use Xelbot\Telegram\UpdatesManagerInterface;
10
11class UpdatesManager implements UpdatesManagerInterface
12{
13/**
14* @var EntityManagerInterface
15*/
16private $em;
17
18/**
19* @param EntityManagerInterface $em
20*/
21public function __construct(EntityManagerInterface $em)
22{
23$this->em = $em;
24}
25
26public function saveUpdate(Update $obj, array $requestData)
27{
28$dbUser = null;
29$chatId = null;
30$textMessage = null;
31if ($message = $obj->getMessage()) {
32$textMessage = $message->getText();
33if ($user = $message->getFrom()) {
34$userRepository = $this->em->getRepository(TelegramUser::class);
35$dbUser = $userRepository->findOneBy(['userId' => $user->getId()]);
36if (!$dbUser) {
37$dbUser = new TelegramUser();
38$dbUser
39->setUserId($user->getId())
40->setFirstName($user->getFirstName())
41->setLastName($user->getLastName())
42->setUsername($user->getUsername())
43->setFirstName($user->getFirstName())
44->setBot($user->isBot())
45->setLanguage($user->getLanguageCode())
46;
47
48if (isset($requestData['message']['from'])) {
49$dbUser->setRawMessage(json_encode($requestData['message']['from'], JSON_THROW_ON_ERROR));
50}
51$this->em->persist($dbUser);
52$this->em->flush();
53}
54}
55if ($chat = $message->getChat()) {
56$chatId = $chat->getId();
57}
58}
59
60$update = new TelegramUpdate();
61$update
62->setRawMessage(json_encode($requestData, JSON_THROW_ON_ERROR))
63->setTelegramUser($dbUser)
64->setChatId($chatId)
65->setTextMessage($textMessage)
66;
67
68$this->em->persist($update);
69$this->em->flush();
70}
71}
72