$startDate = $startDate ?? date('Y-m-d');
$monthDay = date('m-d', strtotime($startDate));
+ $messagesSettings = UsersMessageManagement::find()
+ ->where(['active' => 1])
+ ->one();
+
+ $step1 = $messagesSettings ? $messagesSettings->day_before_step1 : 10;
+ $step2 = $messagesSettings ? $messagesSettings->day_before_step2 : 4;
+ $step3 = $messagesSettings ? $messagesSettings->day_before_step3 : 2;
+
$salesPhone = Sales::find()
->where(new \yii\db\Expression("TO_CHAR(date, 'MM-DD') = :monthDay", [':monthDay' => $monthDay]))
//->andWhere(new \yii\db\Expression("date <= NOW()"))
->column();
$usersArray = array_unique(array_merge($salesPhone, $memorableDate));
+ //TODO: Проверка что он уже участвовал в когорте раннее
+ $phonesSent = SentKogort::find()
+ ->select('phone')
+ ->where(['between', 'kogort_date', date('Y-m-d', strtotime("$startDate -$step1 days")), date('Y-m-d', strtotime("$startDate -1 days"))])
+ ->column();
+
+ $filteredUsers = array_diff($usersArray, $phonesSent);
+ $kogortData = array_values($filteredUsers);
+
$data = [];
if ($type === 'target') {
- //TODO: Проверка что он уже участвовал в когорте раннее
-
- foreach ($usersArray as $phone) {
- $userPhone = $phone;
- $userData = [
- 'phone' => $userPhone,
- ];
- $data[] = $userData;
+ $kogortPhones = SentKogort::find()
+ ->select('phone')
+ ->where(['kogort_date' => $startDate])
+ ->column();
+ foreach ($kogortData as $phone) {
+ if($phone) {
+ if (!in_array($phone, $kogortPhones) ) {
+ $sentKogort = new SentKogort;
+ $sentKogort->phone = $phone;
+ $sentKogort->kogort_date = $startDate;
+ $sentKogort->kogort_unixtime = (int)strtotime($startDate . ' 00:00:00');
+ $sentKogort->status = 1;
+ $sentKogort->save(false);
+ }
+
+ $userData = [
+ 'phone' => $phone,
+ ];
+ $data[] = $userData;
+ }
}
return $data;
}
-
+// Выборка по пользователям - проверка на подписку
$query = Users::find()
- // ->andWhere() //заглушка на проверку что он уже участвовал в
- ->andWhere(['phone' => $usersArray]);
-
- $messagesSettings = UsersMessageManagement::find()
- ->where(['active' => 1])
- ->one();
-
- $step1 = $messagesSettings ? $messagesSettings->day_before_step1 : 10;
- $step2 = $messagesSettings ? $messagesSettings->day_before_step2 : 4;
- $step3 = $messagesSettings ? $messagesSettings->day_before_step3 : 2;
+ ->andWhere(['phone' => $kogortData]);
if ($type === 'whatsapp') {
$excludeSalesPhone = Sales::find()