zend-blog-3-backend
48 строк · 1.4 Кб
1<?php
2
3namespace App\Cron\Hourly;
4
5use App\Cron\HourlyCronServiceInterface;
6use App\Doctrine\DBAL\Type\MillisecondsDateTime;
7use App\Entity\SystemParameters;
8use App\Repository\TelegramUpdateRepository;
9use App\Service\SystemParametersStorage;
10
11class TelegramUpdates implements HourlyCronServiceInterface
12{
13private TelegramUpdateRepository $repository;
14
15private SystemParametersStorage $paramStorage;
16
17private int $adminId;
18
19private int $cnt = 0;
20
21public function __construct(
22TelegramUpdateRepository $repository,
23SystemParametersStorage $paramStorage,
24int $adminId
25) {
26$this->repository = $repository;
27$this->paramStorage = $paramStorage;
28$this->adminId = $adminId;
29}
30
31public function run(): void
32{
33$from = $this->paramStorage->getParameter(SystemParameters::TELEGRAM_UPDATES_CHECK) ?? '2023-06-23 16:00:00';
34$now = (new \DateTime())->format(MillisecondsDateTime::FORMAT_TIME);
35
36$this->cnt = $this->repository->countNewMessages($from, $now, $this->adminId);
37$this->paramStorage->saveParameter(SystemParameters::TELEGRAM_UPDATES_CHECK, $now);
38}
39
40public function getMessage(): ?string
41{
42if ($this->cnt > 0) {
43return 'Кто-то общался с ботом. Новых сообщений: ' . $this->cnt;
44}
45
46return null;
47}
48}
49