return $data;
}
- public static function formKogortByDateAndType($startDate = null, $type = 'target'): array
+ public static function formKogortByDateAndType($targetDate = null, $type = 'target'): array
{
- $startDate = $startDate ?? date('Y-m-d');
+ $targetDate = $targetDate ?? date('Y-m-d');
$existingTargetKogort = SentKogort::find()
->select('phone')
->where([
- 'kogort_date' => $startDate,
+ 'kogort_target' => $targetDate,
'kogort_number' => SentKogort::KOGORT_NUMBERS['target']
])
->column();
if ($type === 'whatsapp' && !empty($existingTargetKogort)) {
- return self::processWhatsappKogort($existingTargetKogort, $startDate);
+ return self::processWhatsappKogort($existingTargetKogort, $targetDate);
}
if ($type === 'call' && !empty($existingTargetKogort)) {
- return self::processCallKogort($existingTargetKogort, $startDate);
+ return self::processCallKogort($existingTargetKogort, $targetDate);
}
- $monthDay = date('m-d', strtotime($startDate));
+ $monthDay = date('m-d', strtotime($targetDate));
$messagesSettings = UsersMessageManagement::find()->one();
->column();
$memorableDate = UsersEvents::find()
- ->where(new \yii\db\Expression("TO_CHAR(date, 'MM-DD') = :monthDay", [':monthDay' => $monthDay]))
+ ->where(['date_month' => (int)date('m', strtotime($targetDate)),
+ 'date_day' => (int)date('d', strtotime($targetDate))])
->distinct('phone')
->select('phone')
->column();
$phonesSent = SentKogort::find()
->select('phone')
->where(['between', 'kogort_date',
- date('Y-m-d', strtotime("$startDate -$hold days")),
- date('Y-m-d', strtotime("$startDate -1 days"))])
+ date('Y-m-d', strtotime("$targetDate -$hold days")),
+ date('Y-m-d', strtotime("$targetDate -1 days"))])
->andWhere(['kogort_number' => SentKogort::KOGORT_NUMBERS['target']])
->column();
} else {
}
return $type === 'whatsapp'
- ? self::processWhatsappKogort($kogortData, $startDate)
- : self::processCallKogort($kogortData, $startDate);
+ ? self::processWhatsappKogort($kogortData, $targetDate)
+ : self::processCallKogort($kogortData, $targetDate);
}
/**
* Обработка выборки для WhatsApp когорты
*/
- private static function processWhatsappKogort(array $targetPhones, string $startDate): array
+ private static function processWhatsappKogort(array $targetPhones, string $targetDate): array
{
$messagesSettings = UsersMessageManagement::find()->one();
->column();
$excludeSalesPhone = Sales::find()
- ->where(['>=', 'date', date('Y-m-d', strtotime("$startDate -$step1 days"))])
- ->andWhere(['<=', 'date', date('Y-m-d', strtotime("$startDate -$step2 days"))])
+ ->where(['>=', 'date', date('Y-m-d', strtotime("$targetDate -$step1 days"))])
+ ->andWhere(['<=', 'date', date('Y-m-d', strtotime("$targetDate -$step2 days"))])
->andWhere(['phone' => $targetPhones])
->distinct('phone')
->select('phone')
/**
* Обработка выборки для Call когорты
*/
- private static function processCallKogort(array $whatsappPhones, string $startDate): array
+ private static function processCallKogort(array $whatsappPhones, string $targetDate): array
{
- $messagesSettings = UsersMessageManagement::find()
- //->where(['active' => 1])
- ->one();
+ $messagesSettings = UsersMessageManagement::find()->one();
$step2 = $messagesSettings ? $messagesSettings->day_before_step2 : 4;
$step3 = $messagesSettings ? $messagesSettings->day_before_step3 : 2;
// Исключаем телефоны с продажами в период от 4 до 2 дней до даты
$excludeSalesPhone = Sales::find()
- ->where(['>=', 'date', date('Y-m-d', strtotime("$startDate -$step2 days"))])
- ->andWhere(['<=', 'date', date('Y-m-d', strtotime("$startDate -$step3 days"))])
+ ->where(['>=', 'date', date('Y-m-d', strtotime("$targetDate -$step2 days"))])
+ ->andWhere(['<=', 'date', date('Y-m-d', strtotime("$targetDate -$step3 days"))])
->andWhere(['phone' => $whatsappPhones])
->distinct('phone')
->select('phone')