<?php
use Bitrix\Main\Mail\Internal\EventMessageTable;
use Illuminate\Database\Migrations\Migration;
use App\BitrixCore;
return new class extends Migration {
public function __construct()
{
BitrixCore::load();
}
private function getParams(): array
{
return [
'ACTIVE' => 'Y',
'EVENT_NAME' => 'COURIER_NOTIFY_DEALER',
'LID' => ['s1'],
'EMAIL_FROM' => '#DEFAULT_EMAIL_FROM#',
'EMAIL_TO' => '#DEALER_EMAIL#',
'BCC' => '#BCC#',
'CC' => '#CC#',
'REPLY_TO' => '',
'IN_REPLY_TO' => '',
'PRIORITY' => '',
'FIELD1_NAME' => null,
'FIELD1_VALUE' => null,
'FIELD2_NAME' => null,
'FIELD2_VALUE' => null,
'SUBJECT' => 'оформлен заказ #ORDER_ACCOUNT_NUMBER# c доставкой',
'MESSAGE' => $this->getMessageText(),
'BODY_TYPE' => 'html',
'SITE_TEMPLATE_ID' => 'test',
'ADDITIONAL_FIELD' => [],
'LANGUAGE_ID' => 'ru',
];
}
public function up(): void
{
$this->addEventMessage();
}
/**
* @return void
*/
public function down(): void
{
$this->deleteEventMessages();
}
/**
* @return void
*/
private function deleteEventMessages(): void
{
$arFields = $this->getParams();
$objs = EventMessageTable::query()
->addSelect('ID')
->where('EVENT_NAME', $arFields['EVENT_NAME'])
->fetchCollection();
foreach ($objs as $obj) {
CEventMessage::Delete($obj->getId());
}
}
private function addEventMessage(): void
{
$arFields = $this->getParams();
$em = new CEventMessage;
$id = $em->Add($arFields);
if ($id <= 0) {
throw new RuntimeException('Возникла ошибка при добавлении шаблона почтового события: ' . $em->LAST_ERROR);
}
}
private function getMessageText(): string
{
return '<p>
Оформлен заказ №#ORDER_ACCOUNT_NUMBER# c доставкой "
</p>
<p>
Вес-брутто заказа: #ORDER_WEIGHT_BRUTTO_IN_KG# кг.
</p>
<p>
Вес-нетто заказа: #ORDER_WEIGHT_NETTO_IN_KG# кг.
</p>
<p>
Фасовки: #PACKINGS#.
</p>
<p>
Количество позиций: #AMOUNT_POSITIONS#.
</p>
<p>
Адрес доставки: #DELIVERY_ADDRESS#.
</p>
<p>
Фасовки: #PACKINGS#.
</p>
<p>
Стоимость заказа: #PRICE_WITH_DISCOUNT# руб.
</p>
<br>';
}
};