Миграции Bitrix Phinx. Добавить почтовый шаблон

<?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>';
    }
};

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *