<?php
namespace FlexApp\EventListener;
use Exception;
use FlexApp\Events\BugEvent;
use FlexApp\Service\DevsAndAdminsNotifier;
use FlexApp\Service\Logger as MonoLogger;
use FlexApp\Service\ParametersProvider;
use Throwable;
/**
* Лиссенер проблем с компонентом комментариев.
*/
class CommentErrorListener
{
private MonoLogger $logger;
private DevsAndAdminsNotifier $notifier;
private ParametersProvider $parametersProvider;
/**
* InternalServerErrorCommentHandlerListener constructor.
*
* @param MonoLogger $logger
* @param DevsAndAdminsNotifier $notifier
* @param ParametersProvider $parametersProvider
*/
public function __construct(MonoLogger $logger, DevsAndAdminsNotifier $notifier, ParametersProvider $parametersProvider)
{
$this->logger = $logger;
$this->notifier = $notifier;
$this->parametersProvider = $parametersProvider;
}
/**
* @param BugEvent $bugEvent
*
* @throws Exception
*/
public function onCommentError(BugEvent $bugEvent)
{
$this->writeLog($bugEvent->getThrowable());
// $this->notifyDevs($bugEvent->getThrowable()); //Перенесено в InternalServerErrorNotifierSubscriber
}
/**
* @param BugEvent $bugEvent
*
* @throws Exception
*/
public function onSendToPortalFailed(BugEvent $bugEvent)
{
$this->notifyDevs($bugEvent->getThrowable());
}
/**
* @param Throwable $e
*
* @throws Exception
*/
private function notifyDevs(Throwable $e)
{
$this->notifier->notify($e->getMessage(), $e->getTraceAsString(), 'comment_fails_emails');
}
private function writeLog(Throwable $e)
{
$this->logger->monologLogger->error($e->getMessage() . '; ' . $e->getTraceAsString());
}
}