]> gitweb.erp-flowers.ru Git - erp24_rep/yii-erp24/.git/commitdiff
Формирование данных
authorfomichev <vladimir.fomichev@erp-flowers.ru>
Fri, 13 Dec 2024 08:40:21 +0000 (11:40 +0300)
committerfomichev <vladimir.fomichev@erp-flowers.ru>
Fri, 13 Dec 2024 08:40:21 +0000 (11:40 +0300)
erp24/controllers/UsersMessageManagementController.php
erp24/views/users-message-management/_export.php
erp24/views/users-message-management/view-kogort.php

index 5108162ef72b96a51d8a972f3e81a783049c33e4..9e3f40b6ac10445a6a742e3bbeed4729161a4c6e 100644 (file)
@@ -8,7 +8,9 @@ use Yii;
 use yii\base\DynamicModel;
 use yii\data\ArrayDataProvider;
 use yii\web\Controller;
+use yii_app\records\Sales;
 use yii_app\records\Users;
+use yii_app\records\UsersEvents;
 use yii_app\records\UsersMessageManagement;
 
 class UsersMessageManagementController extends Controller
@@ -47,7 +49,7 @@ class UsersMessageManagementController extends Controller
 
 
         if (!$model) {
-            $model = new UsersMessageManagement;
+            $model = new UsersMessageManagement();
         }
 
         if (Yii::$app->request->isPost && $model->load(Yii::$app->request->post())) {
@@ -120,12 +122,58 @@ class UsersMessageManagementController extends Controller
     public function actionGenerateExcel($date, $type)
     {
         try {
-            $data = Users::getUsersListForKogort($date);
-            if (empty($data)) {
+            $users = Users::getUsersListForKogort($date);
+            if (empty($users)) {
                 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',
+                    'name',
+                ]);
+            }
+
             $spreadsheet = new Spreadsheet();
             $sheet = $spreadsheet->getActiveSheet();
             $sheet->setTitle('Users');
@@ -174,7 +222,49 @@ class UsersMessageManagementController extends Controller
 
     public function actionViewKogortUsers($date, $type)
     {
-        $data = Users::getUsersListForKogort($date);
+        $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, 'date' => $date])
+                ->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;
+        }
 
         $dataProvider = new ArrayDataProvider([
             'allModels' => $data,
@@ -186,6 +276,7 @@ class UsersMessageManagementController extends Controller
         return $this->render('view-kogort', [
             'dataProvider' => $dataProvider,
             'date' => $date,
+            'type' => $type,
         ]);
     }
 
index 74f50d57e6c417d17b17898737d82cff53e1253a..0f934b54c2e33c0fa40060c31662fbe0d0bc4ab4 100644 (file)
@@ -25,7 +25,7 @@ use yii\helpers\Url;
             <div class="col">
                 <select id="year-select" name="year" class="form-control">
                     <option value="" selected>Выберите год</option>
-                    <?php for ($i = $year - 3; $i <= $year + 3; $i++): ?>
+                    <?php for ($i = $year - 4; $i <= $year + 4; $i++): ?>
                         <option value="<?= $i ?>" <?= $i == $year ? 'selected' : '' ?>><?= $i ?></option>
                     <?php endfor; ?>
                 </select>
index dc1586f5a8c37660ff87dc814331564bea746546..9756039b8649378bf8c18af5c0bd7e28cdb26090 100644 (file)
@@ -20,7 +20,7 @@ $this->params['breadcrumbs'][] = $this->title;
 
     <?= GridView::widget([
         'dataProvider' => $dataProvider,
-        'columns' => [
+        /*'columns' => [
             ['class' => 'yii\grid\SerialColumn'],
 
             [
@@ -64,7 +64,7 @@ $this->params['breadcrumbs'][] = $this->title;
             ],
 
 
-            ],
+            ],*/
     ]); ?>
 
 </div>