Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
T
taskonsite-архив-перенесен
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Packages
Packages
Container Registry
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Dmitry Korolev
taskonsite-архив-перенесен
Commits
3cb7ba44
Commit
3cb7ba44
authored
Mar 24, 2016
by
Shakarim Sapa
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
- Обновлен метод отвечающий за заполнение сетки расписания отправки кейсов
parent
2fe105ab
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
26 additions
and
53 deletions
+26
-53
common/modules/triggers/controllers/DefaultController.php
common/modules/triggers/controllers/DefaultController.php
+26
-53
No files found.
common/modules/triggers/controllers/DefaultController.php
View file @
3cb7ba44
...
...
@@ -8,6 +8,7 @@ use common\modules\content\models\CoContent;
use
common\modules\messageTemplate\models\MessageTemplate
;
use
common\modules\triggers\components\conditions\Conditions
;
use
common\modules\triggers\models\AuthHashes
;
use
common\modules\triggers\models\CasesSchedule
;
use
common\modules\triggers\models\TriggerLogs
;
use
common\modules\triggers\models\TriggerSchedule
;
use
common\modules\triggers\models\TriggerTrigger
;
...
...
@@ -118,67 +119,39 @@ class DefaultController extends BaseController
}
/**
* Вызов логики, проверяющей список всех пользователей и просмотренные ими страницы.
* В случае если юзер не смотрел какой либо из кейсов, выбирается и отправляется ОДИН
* случайный кейс из просмотренных.
* Вызов логики отвечающей за заполнение расписания рассылок по кейсам.
* Заполняет таблицу с предстоящими рассылками для дальнейшей обработки.
*
* @param int $category_id
* @param int $template_id
* @param int $neededTime
*/
public
function
actionRecheckcases
(
$category_id
=
4
,
$template_id
=
1
,
$neededTime
=
10
)
{
$date
=
new
\DateTime
();
public
function
actionRecheckcases
(
$category_id
=
4
)
{
/** @var User[] $users */
$users
=
User
::
find
()
->
all
();
// URL основной страницы
$baseUrl
=
'http://task-on.com/'
;
// Получили массив url-ов в категории
$urls
=
ArrayHelper
::
map
(
CoContent
::
find
()
->
where
([
'category_id'
=>
$category_id
])
->
all
(),
'id'
,
'url'
);
// Перемешали массив ссылок в случайном порядке
shuffle
(
$urls
);
// Получили массив case-ов
/** @var CoContent[] $cases */
$cases
=
CoContent
::
find
()
->
where
([
'category_id'
=>
$category_id
])
->
all
();
// Перемешали массив case в случайном порядке
shuffle
(
$cases
);
// Перебираем в цикле пользователей
foreach
(
$users
as
$user
)
{
// Определили отправленность сообщения
$sendedToUser
=
false
;
// Если письмо юзеру еще не отправлено
if
(
$sendedToUser
===
false
)
{
// Получили дату для дальнейшего сравнения
$deliveryDate
=
new
\DateTime
(
$user
->
delivery_date
);
// Если пользователь подписан и дата соответствует требованиям
if
(
Bid
::
find
()
->
where
([
'email'
=>
$user
->
email
])
->
exists
()
&&
$deliveryDate
<=
$date
)
{
// Перебираем все url-ы
foreach
(
$urls
as
$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
,
$template_id
,
$templateData
,
null
);
// Произвели отправку, следовательно переопределили значение переменной
$sendedToUser
=
true
;
}
}
// Создали дату следующей отправки
$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
);
if
(
Bid
::
find
()
->
where
([
'email'
=>
$user
->
email
])
->
exists
())
{
// Перебираем все case-ы
foreach
(
$cases
as
$case
)
{
// Проверили наличие отправки кейса юзеру
$scheduleExist
=
CasesSchedule
::
find
()
->
where
([
'id'
=>
$case
->
id
,
'user_id'
=>
$user
->
id
])
->
exists
();
// Если отправка в расписании отсутствует
if
(
!
$scheduleExist
)
{
// Заносим в расписание
$model
=
new
CasesSchedule
();
$model
->
user_id
=
$user
->
id
;
$model
->
case_id
=
$case
->
id
;
$model
->
template_id
=
(
!
is_null
(
$case
->
template_id
))
?
$case
->
template_id
:
null
;
$model
->
sended_date
=
null
;
$model
->
sended
=
false
;
$model
->
actual
=
true
;
$model
->
save
();
}
}
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment