<?php
namespace App\EventListener;
use App\Entity\Report\Report;
use App\Event\CreateReportEvent;
use App\Event\EditParamEvent;
use App\Event\ImageEvent;
use App\Method\Api\FireStore\FireBaseReportUpdater;
use App\Method\Api\Storage\ImageSaveStorage;
use App\Method\Api\Storage\ParamSaveImageStorage;
use App\Method\Api\Storage\ReportSaveImageStorage;
use App\Method\Api\Telegram\TelegramSender;
use App\Synchronization\ReportSynchronization;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
class EventListener implements EventSubscriberInterface
{
private $em;
private $baseReportUpdater;
private $telegramSender;
private $storage;
private $paramStorage;
private $imageSaveStorage;
public function __construct(
EntityManagerInterface $em,
FireBaseReportUpdater $baseReportUpdater,
TelegramSender $telegramSender,
ReportSaveImageStorage $storage,
ImageSaveStorage $imageSaveStorage,
ParamSaveImageStorage $paramStorage
)
{
$this->em = $em;
$this->baseReportUpdater = $baseReportUpdater;
$this->telegramSender = $telegramSender;
$this->imageSaveStorage = $imageSaveStorage;
$this->storage = $storage;
$this->paramStorage = $paramStorage;
}
public static function getSubscribedEvents()
{
return [
CreateReportEvent::NAME => 'onCreateReportEvent',
EditParamEvent::NAME => 'onEditParamEvent',
ImageEvent::NAME => 'onImageEvent'
];
}
public function onEditParamEvent(EditParamEvent $event)
{
/** @var Report $report */
$param = $event->getParam();
try {
$send = $this->paramStorage->save($param);
} catch (\Exception $e) { }
}
public function onImageEvent(ImageEvent $event)
{
$image = $event->getImage();
try {
$send = $this->imageSaveStorage->save($image);
} catch (\Exception $e) { }
}
public function onCreateReportEvent(CreateReportEvent $event)
{
/** @var Report $report */
$report = $event->getReport();
try {
$this->storage->save($report);
} catch (\Exception $e) {
}
try {
$send = $this->telegramSender->send($report);
} catch (\Exception $e) {
}
// try {
// $this->baseReportUpdater->saveNewReport($report);
// } catch (\Exception $e) {
//
// }
// try {
// $this->baseReportUpdater->updateIdsForAllUser($report);
// } catch (\Exception $e) {
//
// }
}
}