]> gitweb.erp-flowers.ru Git - erp24_rep/yii-erp24/.git/commitdiff
Рефакторинг
authorfomichev <vladimir.fomichev@erp-flowers.ru>
Mon, 16 Dec 2024 08:30:58 +0000 (11:30 +0300)
committerfomichev <vladimir.fomichev@erp-flowers.ru>
Mon, 16 Dec 2024 08:30:58 +0000 (11:30 +0300)
erp24/controllers/UsersMessageManagementController.php
erp24/records/Users.php

index a8d0690c6d9fc7ecea852807fd396c07d4ebbdb7..5f39a7ee4350888f4acdbca83da767ef08ca95cf 100644 (file)
@@ -172,52 +172,19 @@ class UsersMessageManagementController extends Controller
     public function actionGenerateExcel($date, $type)
     {
         try {
-            $users = Users::getUsersListForKogort($date);
-            if (empty($users)) {
+            $data = Users::getUsersListForKogort($date, $type);
+            if (empty($data)) {
                 Yii::$app->session->setFlash('error', 'Нет данных для экспорта.');
                 return $this->redirect(Yii::$app->request->referrer);
             }
 
-            $data = [];
-            foreach ($users as $user) {
-                $userPhone = $user['phone'];
-
-                $memorableDateCount = UsersEvents::find()->where(['phone' => $userPhone])->count();
-                $memorableDateExists = UsersEvents::find()
-                    ->where(['phone' => $userPhone, 'date' => $date])
-                    ->exists() ? 1 : 0;
-
-                $lastSale = Sales::find()
-                    ->where(['phone' => $userPhone])
-                    ->orderBy(['date' => SORT_DESC])
-                    ->one();
-                $lastDate = $lastSale ? $lastSale->date : null;
-                $dealsCount = Sales::find()->where(['phone' => $userPhone])->count();
-                $totalSum = Sales::find()->where(['phone' => $userPhone])->sum('summ') ?? 0;
-
-                $userData = [
-                    'phone' => $userPhone,
-                ];
-
-                if ($type === 'call') {
-                    $userData['name'] = $user['name'];
-                    $userData['memorable_date_count'] = $memorableDateCount;
-                  //  $userData['memorable_date'] = $memorableDateExists;
-                    $userData['last_date'] = $lastDate;
-                    $userData['deals_count'] = $dealsCount;
-                    $userData['total_sum'] = $totalSum;
-                }
-
-                $data[] = $userData;
-            }
-
             $columns = ['phone'];
             if ($type === 'call') {
                 $columns = array_merge($columns, [
                     'last_date',
                     'deals_count',
                     'total_sum',
-                   // 'memorable_date_count',
+                    'memorable_date_count',
                     'memorable_date',
                     'name',
                 ]);
@@ -266,49 +233,7 @@ class UsersMessageManagementController extends Controller
 
     public function actionViewKogortUsers($date, $type)
     {
-        $users = Users::getUsersListForKogort($date);
-        $data = [];
-
-        foreach ($users as $user) {
-            $userPhone = $user['phone'];
-
-            $memorableDateCount = UsersEvents::find()
-                ->where(['phone' => $userPhone])
-                ->count();
-
-            $memorableDateExists = UsersEvents::find()
-                ->where(['phone' => $userPhone])
-                ->exists() ? 1 : 0;
-
-            $lastSale = Sales::find()
-                ->where(['phone' => $userPhone])
-                ->orderBy(['date' => SORT_DESC])
-                ->one();
-
-            $lastDate = $lastSale ? $lastSale->date : 'нет данных';
-            $dealsCount = Sales::find()
-                ->where(['phone' => $userPhone])
-                ->count();
-            $totalSum = Sales::find()
-                ->where(['phone' => $userPhone])
-                ->sum('summ') ?? 0;
-
-
-            $userData = [
-                'phone' => $userPhone,
-            ];
-
-            if ($type === 'call') {
-                $userData['last_date'] = $lastDate;
-                $userData['deals_count'] = $dealsCount;
-                $userData['total_sum'] = $totalSum;
-               // $userData['memorable_date_count'] = $memorableDateCount;
-                $userData['memorable_date'] = $memorableDateExists;
-                $userData['name'] = $user['name'];
-            }
-
-            $data[] = $userData;
-        }
+        $data = Users::getUsersListForKogort($date, $type);
 
         $dataProvider = new ArrayDataProvider([
             'allModels' => $data,
index c20ebfcd897b6dd0dfbee30507b2489a79090e1e..ffa32846604a32e276ddcaf17263e861e6732c2a 100755 (executable)
@@ -290,15 +290,14 @@ class Users extends \yii\db\ActiveRecord
      * https://tracker.yandex.ru/ERP-252
      * @return array
      */
-    public static function getUsersListForKogort($startDate = null, $endDate = null)
+    public static function getUsersListForKogort($startDate = null, $type = 'target'): array
     {
-
         $startDate = $startDate ?? date('Y-m-d');
         $monthDay = date('m-d', strtotime($startDate));
 
         $salesPhone = Sales::find()
             ->where(new \yii\db\Expression("TO_CHAR(date, 'MM-DD') = :monthDay", [':monthDay' => $monthDay]))
-            ->andWhere(new \yii\db\Expression("date >= NOW() - INTERVAL '3 years'"))
+            ->andWhere(new \yii\db\Expression("date <= NOW()"))
             ->distinct('phone')
             ->select('phone')
             ->column();
@@ -313,9 +312,50 @@ class Users extends \yii\db\ActiveRecord
 
         $users = Users::find()
             ->andWhere(['phone' => $usersArray])
-//            ->andWhere() //заглушка на проверку что он уже участвовал в
+//          ->andWhere() //заглушка на проверку что он уже участвовал в
             ->all();
-        return $users;
+
+        $data = [];
+
+        foreach ($users as $user) {
+            $userPhone = $user['phone'];
+
+            $memorableDateExists = UsersEvents::find()
+                ->where(['phone' => $userPhone])
+                ->exists() ? 1 : 0;
+
+            $lastSale = Sales::find()
+                ->where(['phone' => $userPhone])
+                ->orderBy(['date' => SORT_DESC])
+                ->one();
+
+            $lastDate = $lastSale ? date('d-m-Y', strtotime($lastSale->date)) : 'нет данных';
+
+            $dealsCount = Sales::find()
+                ->where(['phone' => $userPhone])
+                ->count();
+
+            $totalSum = Sales::find()
+                ->where(['phone' => $userPhone])
+                ->sum('summ') ?? 0;
+
+
+            $userData = [
+                'phone' => $userPhone,
+            ];
+
+            if ($type === 'call') {
+                $userData['last_date'] = $lastDate;
+                $userData['deals_count'] = $dealsCount;
+                $userData['total_sum'] = $totalSum;
+
+                $userData['memorable_date'] = $memorableDateExists;
+                $userData['name'] = $user['name'];
+            }
+
+            $data[] = $userData;
+        }
+        return $data;
     }
 
 }
\ No newline at end of file