Files
caloriethingy.com/common/jobs/EmailJob.php
2025-02-19 14:51:16 +01:00

65 lines
1.8 KiB
PHP

<?php
namespace common\jobs;
use Yii;
use yii\base\BaseObject;
use yii\queue\RetryableJobInterface;
class EmailJob extends BaseObject implements RetryableJobInterface
{
const MAX_ATTEMPTS = 3;
const TTR = 600; // in seconds
public const PASSWORD_RESET = 'password-reset';
public const PASSWORD_HAS_BEEN_RESET = 'password-has-been-reset';
public const WELCOME_EMAIL = 'welcome-email';
public const VERIFY_EMAIL = 'verify-email';
public const ADMIN_NOTIFY = 'admin-new-user';
public const PRICE_CHANGE = 'price-change';
public const PAYOUT_NOTIFY = 'payout-notify';
public array $templateModel;
public string $email;
public string $templateAlias;
/**
* @inheritDoc
*/
public function execute($queue)
{
// Merge these values which are always on emails
$this->templateModel = array_merge($this->templateModel, [
"product" => Yii::$app->params['product_name'],
"product_name" => Yii::$app->params['product_name'],
"support_url" => Yii::$app->params['support_url'],
"product_url" => Yii::$app->urlManager->createAbsoluteUrl(['site/index']),
"company_name" => Yii::$app->params['company_name'],
"company_address" => Yii::$app->params['company_address'],
]);
Yii::$app->postmark->client->sendEmailWithTemplate(
Yii::$app->params['supportEmail'],
$this->email,
$this->templateAlias,
$this->templateModel,
messageStream: Yii::$app->params['postmark.messageStream']
);
}
/**
* @inheritDoc
*/
public function getTtr()
{
return self::TTR;
}
/**
* @inheritDoc
*/
public function canRetry($attempt, $error)
{
return ($attempt < self::MAX_ATTEMPTS);
}
}