93 lines
2.5 KiB
PHP
93 lines
2.5 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace KupShop\BonusProgramBundle\Email;
|
|
|
|
use KupShop\BonusProgramBundle\Utils\BonusProvider;
|
|
use KupShop\KupShopBundle\Email\OrderEmail;
|
|
use KupShop\KupShopBundle\Util\Compat\ServiceContainer;
|
|
use Symfony\Contracts\Service\Attribute\Required;
|
|
|
|
class BonusPointsActivatedEmail extends OrderEmail
|
|
{
|
|
protected static $name = 'Věrnostní program: přičtení bodů';
|
|
protected static $type = 'BONUS_POINTS_ACTIVATED';
|
|
protected static $priority = 1;
|
|
|
|
protected $subject = 'Přičtení bodů za objednávku {KOD}';
|
|
protected $template = 'email/email_bonus_points_activated.tpl';
|
|
protected $defaultEnabled = 'N';
|
|
|
|
protected BonusProvider $bonusProvider;
|
|
|
|
private ?int $bonusPoints = null;
|
|
|
|
public function setBonusPoints(int $bonusPoints): void
|
|
{
|
|
$this->bonusPoints = $bonusPoints;
|
|
}
|
|
|
|
public static function getPlaceholders()
|
|
{
|
|
$placeholders = [
|
|
'POCET_BODU' => [
|
|
'text' => translate('bonusProgramPointsActivated', 'emails'),
|
|
],
|
|
'PLATNOST_BODU' => [
|
|
'text' => translate('bonusProgramNullPoints', 'emails'),
|
|
],
|
|
'BODY_CELKEM' => [
|
|
'text' => translate('bonusProgramPointsRemaining', 'emails'),
|
|
],
|
|
];
|
|
|
|
return [self::$type => $placeholders] + (parent::getPlaceholders() ?? []);
|
|
}
|
|
|
|
public function replacePlaceholdersItem($placeholder)
|
|
{
|
|
switch ($placeholder) {
|
|
case 'POCET_BODU':
|
|
return $this->bonusPoints;
|
|
case 'PLATNOST_BODU':
|
|
return \Settings::getDefault()->bonus_program['remove_time'] ?? '';
|
|
|
|
case 'BODY_CELKEM':
|
|
$user = $this->getOrder()?->getUser();
|
|
if (!$user) {
|
|
return '0';
|
|
}
|
|
|
|
return (string) $this->bonusProvider->getActivePointsAmount($user);
|
|
}
|
|
|
|
return parent::replacePlaceholdersItem($placeholder);
|
|
}
|
|
|
|
public function testEmail(): array
|
|
{
|
|
$this->setBonusPoints(256);
|
|
|
|
return parent::testEmail();
|
|
}
|
|
|
|
#[Required]
|
|
final public function setBonusProvider(BonusProvider $bonusProvider): void
|
|
{
|
|
$this->bonusProvider = $bonusProvider;
|
|
}
|
|
|
|
public function __wakeup()
|
|
{
|
|
parent::__wakeup();
|
|
|
|
$this->bonusProvider = ServiceContainer::getService(BonusProvider::class);
|
|
}
|
|
|
|
public function __sleep()
|
|
{
|
|
return array_diff(parent::__sleep(), ['bonusProvider']);
|
|
}
|
|
}
|