Your IP : 3.17.162.17


Current Path : /home/bitrix/ext_www/dev.ballu.in.ua/local/components/online_paid/fsk/
Upload File :
Current File : /home/bitrix/ext_www/dev.ballu.in.ua/local/components/online_paid/fsk/MailerController.php

<?php

namespace OnlinePaid;

use CComponentUtil,
    CEvent,
    CSaleBasket;

/**
 * Class MailerController
 * @package OnlinePaid
 */
class MailerController
{

    /**
     * this .parameters.php
     * @var array|bool
     */
    private $config = array();


    /**
     * MailerController constructor.
     */
    public function __construct()
    {
        $this->config = CComponentUtil::GetComponentProps('online_paid:fsk')['PARAMETERS'];
    }


    /**
     * Шлем юзеру инфу об оплаченном заказе
     *
     * @param $orderInfo
     * @param $userInfo
     */
    public function prepareMailToUser($orderInfo, $userInfo)
    {

        $orderItems = CSaleBasket::GetList(
            array(
                "NAME" => "ASC",
                "ID" => "ASC"
            ),
            array(
                "USER_ID" => $orderInfo['USER_ID'],
                "LID" => $orderInfo['LID'],
                "DELAY" => "N",
                "CAN_BUY" => "Y",
                "ORDER_ID" => $orderInfo['ID']
            ),
            false,
            false,
            array()
        );

        $oItems = '';
        while ($item = $orderItems->Fetch()) {

            $itemAmount = number_format(($item['PRICE'] * $item['QUANTITY']), 0, '.', ' ');
            $PRICE = number_format($item['PRICE'], 0, '.', ' ');
            $tpl = "<p>Название: {$item['NAME']}" .
                "<br />Количество: {$item['QUANTITY']}" .
                "<br />Цена за единицу: {$PRICE}" .
                "<br /> Сумма: {$itemAmount} руб.</p>";

            $oItems .= $tpl;
        }

        $mailData = array(
            "SALE_EMAIL" => $this->config['MAILER']['SALE_EMAIL'],
            "SITE_NAME" => $this->config['MAILER']['SITE_NAME'],
            "EMAIL" => $userInfo['EMAIL'], // Мыло клиента
            "ORDER_ID" => $orderInfo['ID'],
            "ORDER_DATE" => $orderInfo['DATE_UPDATE_FORMAT'], // Дата заказа
            "PAY_SYSTEM_NAME" => $this->config['PAID_TYPES'][$orderInfo['PAY_SYSTEM_ID']], // Тип оплаты
            "PRICE_FULL" => number_format($orderInfo['PRICE'], 0, '.', ' '), // Полная стоимость заказа
            "ORDER_LIST_FULL" => $oItems, // Состав заказа
            "ORDER_DESCRIPTION" => $orderInfo['COMMENTS'], //  Комментарий к заказу
        );

        $this->sender($this->config['MAILER']['USER_EVENT_TYPE'], $orderInfo['LID'], $mailData);
    }

    /**
     * Шлем админу.
     * - Если заказ оплачен
     * - Если банк вернул ошибку
     *
     * @param $orderInfo
     * @param $userInfo
     * @param $TO_CITY_EMAIL
     * @param string $ErrorMessage
     */
    public function prepareMailToAdmin($orderInfo, $userInfo, $ErrorMessage = '', $TO_CITY_EMAIL)
    {
        $ADMIN_EVENT_TYPE = (empty($ErrorMessage) ? $this->config['MAILER']['ADMIN_EVENT_TYPE'] : $this->config['MAILER']['ADMIN_ERROR_EVENT_TYPE']);

        $mailData = array(
            "SALE_EMAIL" => $this->config['MAILER']['SALE_EMAIL'],
            "SITE_NAME" => $this->config['MAILER']['SITE_NAME'],
            "ORDER_ID" => $orderInfo['ID'],
            "ORDER_DATE" => $orderInfo['DATE_UPDATE_FORMAT'], // Дата заказа
            "USER_NAME" => "{$userInfo['LAST_NAME']} {$userInfo['NAME']} {$userInfo['SECOND_NAME']}",
            "USER_PHONE" => $userInfo['PERSONAL_PHONE'],
            "PRICE_FULL" => number_format($orderInfo['PRICE'], 0, '.', ' '), // Полная стоимость заказа
            "ERROR_MSG" => $ErrorMessage, // Описание ошибки
            "TO_CITY_EMAIL" => $TO_CITY_EMAIL, // мыло админа кому упадет письмо
        );

        $this->sender($ADMIN_EVENT_TYPE, $orderInfo['LID'], $mailData);
    }

    /**
     * @param $event
     * @param $lid
     * @param $data
     */
    private function sender($event, $lid, $data)
    {
        CEvent::Send($event, $lid, $data, "N", '');

    }
}