MailerComponent.php 2.11 KB
<?php

namespace common\components;

use yii\base\Component;
use common\models\Visit;
use backend\models\Mail;
use common\models\Settings;




/**
 * =====================================================================================================================
 *      Компонент, созданный для того, чтобы обьявлять аналогичные по логике письма с 1 места
 * =====================================================================================================================
 */
class MailerComponent extends Component
{

	/**
	 * Отправляет письмо админу по backend\models\Mail если такая запись есть
	 * ***Если запись есть, но творится вакханалия с почтовым адресом, сервер начнёт валить Exception,
	 *  а мы пишем нашему админу, что у них там почтовые настройки есть, но некорректы
	 *
	 * @param $mode 1|2|3|4
	 *  1|2|3 ==> используется для site/callback
	 *  4     ==> site/contact
	 */
	public static function sendListToAdminAfterSubmit(int $mode, array $params = [])
	{
		$mail = Mail::findOne(1);
		if ($mail != null) {
			$time = Visit::getTimeTitles($mode);
			$settings = Settings::getInstance();
			# если у них всё же почтовые настройки есть, НО письмо не может отправится,
			# прокидываю сообщение об этом нам обратно
			try {
				\Yii::$app->mailer
					->compose()
					->setFrom($mail->user)
					->setTo($settings->email)
					->setSubject('Запись на прием: обратная связь')
					->setTextBody('Контакт пациента: :' . $params['user_data'] . " <br> просил перезвонить ему на протяжении " . $time)
					->send();
			} catch (\Exception $e) {
				\Yii::error($mail->user . " - неполучается отправить письмо за указанным адресом", 'mail_error');
			}

		}
	}


}