MailerComponent.php 2.48 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 = [])
	{
		
			$time = Visit::getTimeTitles($mode);
			$settings = Settings::getInstance();
		$mail = Mail::findOne(1);
		$moreMail = explode(';', $mail->user);
		$setTo = [$settings->email];
		if (!empty($moreMail)) {
			$setTo = array_merge($setTo, $moreMail);
		}


			# если у них всё же почтовые настройки есть, НО письмо не может отправится,
			# прокидываю сообщение об этом нам обратно
			try {
				if (!empty($settings->email)) {
					$mail1 = \Yii::$app->mailer
						->compose()
						->setFrom($settings->email)
						->setTo($setTo)
						->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');
			}

		
	}


}