MailerComponent.php 2.44 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 {
				if (!empty($mail->user) && !empty($settings->email)) {
					$mail1 = \Yii::$app->mailer
						->compose()
						->setFrom($mail->user)
						->setTo($settings->email)
						->setBcc(\Yii::$app->params['artwebAdminEmail'])
						->setSubject('Запись на прием: обратная связь')
						->setTextBody('Контакт пациента: :' . $params['user_data'] . "  просил перезвонить ему  " . $time);
					if ($mail1->send() == false) {
						\Yii::info(\Yii::$app->params['artwebAdminEmail'] . " - неполучается отправить письмо за указанным адресом", 'mail_error');
					}
				}




			} catch (\Exception $e) {
				\Yii::error(\Yii::$app->params['artwebAdminEmail'] . " - неполучается отправить письмо за указанным адресом", 'mail_error');
			}

		}
	}


}