Spaces:
No application file
No application file
namespace Mautic\LeadBundle\Event; | |
use Mautic\LeadBundle\Entity\DoNotContact; | |
use Mautic\LeadBundle\Entity\Lead; | |
use Symfony\Contracts\EventDispatcher\Event; | |
class ChannelSubscriptionChange extends Event | |
{ | |
/** | |
* @param string $channel | |
*/ | |
public function __construct( | |
private Lead $lead, | |
private $channel, | |
private int $oldStatus, | |
private int $newStatus | |
) { | |
} | |
/** | |
* @return Lead | |
*/ | |
public function getLead() | |
{ | |
return $this->lead; | |
} | |
/** | |
* @return string | |
*/ | |
public function getChannel() | |
{ | |
return $this->channel; | |
} | |
public function getOldStatus(): int | |
{ | |
return $this->oldStatus; | |
} | |
public function getOldStatusVerb(): string | |
{ | |
return $this->getDncReasonVerb($this->oldStatus); | |
} | |
public function getNewStatus(): int | |
{ | |
return $this->newStatus; | |
} | |
public function getNewStatusVerb(): string | |
{ | |
return $this->getDncReasonVerb($this->newStatus); | |
} | |
private function getDncReasonVerb($reason): string | |
{ | |
return match (true) { | |
DoNotContact::IS_CONTACTABLE === $reason => 'contactable', | |
DoNotContact::BOUNCED === $reason => 'bounced', | |
DoNotContact::MANUAL === $reason => 'manual', | |
default => 'unsubscribed', | |
}; | |
} | |
} | |