<?php
namespace App\Subscriber\User\AmateurUpgrade;
use App\Dictionary\ConversationMessageSource;
use App\Dictionary\ConversationMessageType;
use App\Entity\Member;
use App\Event\User\AmateurUpgradeCompleteEvent;
use App\Service\MemberService;
use App\Service\Messenger\MessengerService;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
class ConversationMessageSubscriber implements EventSubscriberInterface
{
/**
* @var MessengerService
*/
protected $messenger;
/**
* @var MemberService
*/
protected $memberService;
/**
* ConversationMessageSubscriber constructor.
*/
public function __construct(MemberService $memberService, MessengerService $messenger)
{
$this->memberService = $memberService;
$this->messenger = $messenger;
}
public static function getSubscribedEvents(): array
{
return [
AmateurUpgradeCompleteEvent::class => [
['sendWelcomeMessageAfterSuccessfulUpgrade', 2],
['sendRejectMessageAfterRejectedUpgrade', 3],
],
];
}
/**
* @throws \Doctrine\ORM\ORMException
* @throws \Doctrine\ORM\OptimisticLockException
*/
public function sendWelcomeMessageAfterSuccessfulUpgrade(AmateurUpgradeCompleteEvent $event)
{
if ($event->isRejected()) {
return;
}
/**
* @var $member Member
*/
$member = $event->getAmateurUpgrade()->getAccount()->getMember();
if ($support = $this->memberService->getSupportMember()) {
$welcome = sprintf($this->getWelcomeMessageFormat(), $member->getUsername());
$type = ConversationMessageType::TEXT;
$source = ConversationMessageSource::SYSTEM;
$this->messenger->sendDirectMessage($support, $member, $welcome, $type, $source);
}
}
/**
* @throws \Doctrine\ORM\ORMException
* @throws \Doctrine\ORM\OptimisticLockException
*/
public function sendRejectMessageAfterRejectedUpgrade(AmateurUpgradeCompleteEvent $event)
{
if (!$event->isRejected()) {
return;
}
$upgrade = $event->getAmateurUpgrade();
$member = $upgrade->getAccount()->getMember();
$support = $this->memberService->getSupportMember();
$rejectMsg = sprintf($this->getRejectMessageFormat(), $member->getUsername(), $upgrade->getComment());
$type = ConversationMessageType::TEXT;
$source = ConversationMessageSource::SYSTEM;
$this->messenger->sendDirectMessage($support, $member, $rejectMsg, $type, $source);
}
protected function getRejectMessageFormat(): string
{
return 'Hallo %s, wir mussten deinen Amateur-Antrag leider ablehnen. Grund: %s';
}
protected function getWelcomeMessageFormat(): string
{
return "Hallo %s,\nwir freuen uns, dich als neuen Amateur begrüßen zu können. Unsere Community ".
"bietet dir vielfältige Möglichkeiten mit deiner Freizügigkeit gute Provisionen zu verdienen!\n\n".
"Um dir den Start zu erleichtern, haben wir einige Hinweise für dich:\n".
"1. Bitte fülle dein Profil vollständig aus und lade interessante Bilder von dir hoch. Leere Profile wirken
uninteressant und mindern deinen Verdienst!\n".
"2. Eine Community lebt von der Aktivität der Mitglieder! Bitte beantworte Nachrichten von Mitgliedern
möglichst schnell! Mit dem Schreiben von Nachrichten kannst du sehr gutes Geld verdienen. Im Idealfall
nutzt du unser Marketing Tool und schreibst User aktiv an!\n".
"3. Lade mit unserem Uploader Videos und/oder Bildersets hoch. Dein Content es bares Geld wert!\n".
"4. Nutze unsere Livecam-Software für eine weitere Steigerung deiner Provisionen!\n\n".
"Wir helfen dir in allen Angelegenheiten gerne weiter. Bitte melde dich, wenn du Fragen hast oder
Hilfe benötigst.\n\n".
"Wichtig: Du musst dich einmal komplett aus- und wieder einloggen.\n\n".
"Auf eine gute Zusammenarbeit!\n\n".
'Viel Erfolg - dein Frivol.com Team';
}
}