]> gitweb.erp-flowers.ru Git - erp24_rep/yii-erp24/.git/commitdiff
Исправление генерации для ватсапа и звонка
authorfomichev <vladimir.fomichev@erp-flowers.ru>
Thu, 9 Jan 2025 09:15:55 +0000 (12:15 +0300)
committerfomichev <vladimir.fomichev@erp-flowers.ru>
Thu, 9 Jan 2025 09:15:55 +0000 (12:15 +0300)
erp24/controllers/UsersMessageManagementController.php
erp24/records/Users.php

index bcf3b861bac1468df63af297fb5474c4e85b2e86..d776f7174b5b83e34ef001e4e6138ac39f9bed0c 100644 (file)
@@ -276,6 +276,7 @@ class UsersMessageManagementController extends Controller
             ->where(['kogort_date' => $date, 'kogort_number' => SentKogort::KOGORT_NUMBERS[$type]])
             ->select(['phone'])
             ->column();
+        //$targetDate
 
         $data = Users::prepareDataForExport($dataKogort, $date, $type);
 
index 1ae3f13b8eb796a2f903f3641b21516d292967e5..00b0562ff8c237bbb2b08f20f00998c58819fe1a 100755 (executable)
@@ -430,27 +430,27 @@ class Users extends \yii\db\ActiveRecord
         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();
 
@@ -464,7 +464,8 @@ class Users extends \yii\db\ActiveRecord
             ->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();
@@ -475,8 +476,8 @@ class Users extends \yii\db\ActiveRecord
             $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 {
@@ -499,14 +500,14 @@ class Users extends \yii\db\ActiveRecord
         }
 
         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();
 
@@ -521,8 +522,8 @@ class Users extends \yii\db\ActiveRecord
             ->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')
@@ -536,19 +537,17 @@ class Users extends \yii\db\ActiveRecord
     /**
      * Обработка выборки для 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')