Commit b3cc5075 authored by Shakarim Sapa's avatar Shakarim Sapa

- Обновлен метод отвечающий за рассылку кейсов по расписанию

parent 3cb7ba44
...@@ -156,4 +156,79 @@ class DefaultController extends BaseController ...@@ -156,4 +156,79 @@ class DefaultController extends BaseController
} }
} }
} }
/**
* Метод производит рассылку по расписанию
*
* @param int $neededTime
*/
public function actionSendcases($neededTime=10) {
$date = new \DateTime();
/** @var User[] $users */
$users = User::find()->all();
// URL основной страницы
$baseUrl = 'http://task-on.com/';
// Получили все данные в расписании
/** @var CasesSchedule[] $schedule */
$schedule = CasesSchedule::find()->where(['sended' => 0])->all();
// Перебираем в цикле пользователей
foreach($users as $user) {
// Определили отправленность сообщения
$sendedToUser=false;
// Получили дату для дальнейшего сравнения
$deliveryDate = new \DateTime($user->delivery_date);
// Если пользователь подписан и дата соответствует требованиям
if (Bid::find()->where(['email' => $user->email])->exists() && $deliveryDate<=$date) {
// Перебираем все записи
foreach($schedule as $record) {
// Если ни одно письмо еще не отправлено
if ($sendedToUser===false) {
// Получили кейс
/** @var CoContent $case */
$case = $record->getCase();
// Если кейс есть
if (!is_null($case)) {
// Заносим урл в переменную
$url = $case->url;
// Получаем время просмотра каждой страницы
$watchingtime = TriggerLogs::getSummaryTimeByUrl($url, $user->id);
// Если суммарное время просмотра меньше минимальной нормы (то есть кейс еще не просмотрен)
if ((int)$watchingtime<(int)$neededTime) {
// Производим отправку письма
// Получаем почту
$email = $user->email;
// Генерируем хеш
$hash=AuthHashes::setNewHash($email);
// Сформировали дату
$templateData = [
'case_link' => $baseUrl.$url.'?hash='.$hash.'&email='.$email
];
// Производим отправку
/** @var \DateTime $time_now */
TriggerSchedule::sendMessage($email, $case->template_id, $templateData, null);
// Произвели отправку, следовательно переопределили значение переменной
$sendedToUser=true;
// Редактируем запись в расписании
/** @var CasesSchedule $model */
$model = CasesSchedule::findOne($record->id);
$model->sended_date = $date->format('Y-m-d H:i:s');
$model->sended = 1;
}
}
}
}
// Создали дату следующей отправки
$updatedDate=new \DateTime();
// Произвели модификацию даты
$updatedDate->modify('+7 days');
/** @var User $user */
// Нашли пользователя
$user=User::findOne($this->id);
// Переопределили поле
$user->delivery_date = $updatedDate->format('Y-m-d');
// Сохранили изменения
$user->save(false);
}
}
}
} }
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment