2017-01-06 21:38:20 +00:00
|
|
|
<?php
|
|
|
|
|
2023-03-11 16:27:07 +00:00
|
|
|
namespace src\PointToolsBundle\Service\Telegram;
|
2017-01-06 21:38:20 +00:00
|
|
|
|
2023-03-11 16:27:07 +00:00
|
|
|
use src\PointToolsBundle\Entity\User;
|
|
|
|
use src\PointToolsBundle\Entity\UserRenameEvent;
|
|
|
|
use src\PointToolsBundle\Service\Telegram\MessageSender;
|
|
|
|
use src\PointToolsBundle\Entity\{Telegram\Account};
|
|
|
|
use src\PointToolsBundle\Repository\Telegram\AccountRepository;
|
2017-01-06 21:38:20 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Notifies Telegram users about some events
|
|
|
|
*/
|
|
|
|
class Notifier
|
|
|
|
{
|
2017-11-05 01:42:08 +00:00
|
|
|
/** @var AccountRepository */
|
2017-01-06 21:38:20 +00:00
|
|
|
private $accountsRepo;
|
|
|
|
|
2017-11-05 01:42:08 +00:00
|
|
|
/** @var MessageSender */
|
2017-01-06 21:38:20 +00:00
|
|
|
private $messenger;
|
|
|
|
|
|
|
|
|
2017-01-11 16:36:58 +00:00
|
|
|
public function __construct(AccountRepository $accountRepository, MessageSender $messenger)
|
2017-01-06 21:38:20 +00:00
|
|
|
{
|
2017-01-11 16:36:58 +00:00
|
|
|
$this->accountsRepo = $accountRepository;
|
2017-01-06 21:38:20 +00:00
|
|
|
$this->messenger = $messenger;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @param UserRenameEvent[] $userRenameEvents
|
|
|
|
*/
|
2017-01-12 23:25:46 +00:00
|
|
|
public function sendUsersRenamedNotification(array $userRenameEvents): void
|
2017-01-06 21:38:20 +00:00
|
|
|
{
|
|
|
|
$accounts = $this->accountsRepo->findBy(['renameNotification' => true]);
|
|
|
|
|
|
|
|
$this->messenger->sendMassTemplatedMessage($accounts, '@SkobkinPointTools/Telegram/users_renamed_notification.md.twig', ['events' => $userRenameEvents]);
|
|
|
|
}
|
2017-01-07 18:46:50 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Send notification about changes in user's subscribers list
|
|
|
|
*
|
|
|
|
* @param User $user
|
2017-01-11 16:36:58 +00:00
|
|
|
* @param User[] $subscribed
|
|
|
|
* @param User[] $unsubscribed
|
2017-01-07 18:46:50 +00:00
|
|
|
*/
|
2017-01-12 23:25:46 +00:00
|
|
|
public function sendUserSubscribersUpdatedNotification(User $user, array $subscribed, array $unsubscribed): bool
|
2017-01-07 18:46:50 +00:00
|
|
|
{
|
2017-01-11 16:36:58 +00:00
|
|
|
/** @var Account $account */
|
2017-01-07 18:46:50 +00:00
|
|
|
$account = $this->accountsRepo->findOneBy(
|
|
|
|
[
|
|
|
|
'user' => $user,
|
|
|
|
'subscriberNotification' => true,
|
|
|
|
]
|
|
|
|
);
|
|
|
|
|
|
|
|
if (null === $account) {
|
2017-01-12 23:25:46 +00:00
|
|
|
return false;
|
2017-01-07 18:46:50 +00:00
|
|
|
}
|
|
|
|
|
2017-01-12 23:25:46 +00:00
|
|
|
return $this->messenger->sendTemplatedMessage(
|
2017-01-07 18:46:50 +00:00
|
|
|
$account,
|
|
|
|
'@SkobkinPointTools/Telegram/user_subscribers_updated_notification.md.twig',
|
|
|
|
[
|
|
|
|
'user' => $user,
|
|
|
|
'subscribed' => $subscribed,
|
|
|
|
'unsubscribed' => $unsubscribed,
|
|
|
|
]
|
|
|
|
);
|
|
|
|
}
|
2017-01-06 21:38:20 +00:00
|
|
|
}
|