2023-03-28 19:29:19 +00:00
|
|
|
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
|
|
|
|
namespace App\Factory\Telegram;
|
|
|
|
|
|
|
|
use App\Factory\AbstractFactory;
|
|
|
|
use Psr\Log\LoggerInterface;
|
|
|
|
use App\Entity\Telegram\Account;
|
|
|
|
use App\Repository\Telegram\AccountRepository;
|
2023-04-09 21:30:51 +00:00
|
|
|
use TelegramBot\Api\Types\Message;
|
2023-03-28 19:29:19 +00:00
|
|
|
|
|
|
|
class AccountFactory extends AbstractFactory
|
|
|
|
{
|
|
|
|
public function __construct(
|
|
|
|
LoggerInterface $logger,
|
|
|
|
private readonly AccountRepository $accountRepository,
|
|
|
|
) {
|
|
|
|
parent::__construct($logger);
|
|
|
|
}
|
|
|
|
|
|
|
|
public function findOrCreateFromMessage(Message $message): Account
|
|
|
|
{
|
2023-04-09 21:30:51 +00:00
|
|
|
if (null === $account = $this->accountRepository->findOneBy(['id' => $message->getFrom()->getId()])) {
|
|
|
|
$account = new Account($message->getFrom()->getId());
|
2023-03-28 19:29:19 +00:00
|
|
|
$this->accountRepository->save($account);
|
|
|
|
}
|
|
|
|
|
|
|
|
$account->updateFromMessageData(
|
2023-04-09 21:30:51 +00:00
|
|
|
$message->getFrom()->getFirstName(),
|
|
|
|
$message->getFrom()->getLastName(),
|
|
|
|
$message->getFrom()->getUsername(),
|
|
|
|
$message->getFrom()->getId(),
|
2023-03-28 19:29:19 +00:00
|
|
|
);
|
|
|
|
|
|
|
|
return $account;
|
|
|
|
}
|
|
|
|
}
|