]> gitweb.erp-flowers.ru Git - erp24_rep/yii-erp24/.git/commitdiff
Исправления и перенос
authorfomichev <vladimir.fomichev@erp-flowers.ru>
Thu, 12 Dec 2024 09:46:20 +0000 (12:46 +0300)
committerfomichev <vladimir.fomichev@erp-flowers.ru>
Thu, 12 Dec 2024 09:46:20 +0000 (12:46 +0300)
erp24/controllers/UsersMessageManagementController.php
erp24/views/users-message-management/_export.php [new file with mode: 0644]
erp24/views/users-message-management/export-kogort.php
erp24/views/users-message-management/index.php
erp24/views/users-message-management/view-kogort.php [new file with mode: 0644]

index cec867b985a7840b5f48eb4554722ec0fe25a86e..09cbc4f8a62124bf278cc72769f2d8282c54de7f 100644 (file)
@@ -2,8 +2,11 @@
 
 namespace app\controllers;
 
+use PhpOffice\PhpSpreadsheet\Cell\Coordinate;
 use PhpOffice\PhpSpreadsheet\Spreadsheet;
 use Yii;
+use yii\base\DynamicModel;
+use yii\data\ArrayDataProvider;
 use yii\web\Controller;
 use yii_app\records\Users;
 use yii_app\records\UsersMessageManagement;
@@ -12,8 +15,29 @@ class UsersMessageManagementController extends Controller
 {
     public function actionIndex()
     {
+        $request = Yii::$app->request;
         $model = UsersMessageManagement::find()->one();
 
+        $startDate = $request->get('start_date', date('Y-m-d'));
+        $endDate = $request->get('end_date', date('Y-m-d', strtotime('+7 days')));
+
+        $dates = [];
+        $currentDate = strtotime($startDate);
+
+        while ($currentDate <= strtotime($endDate)) {
+            $formattedDate = date('Y-m-d', $currentDate);
+            $dates[$formattedDate] = [
+                'target' => [$this->generateLink($formattedDate, 'target', 'generate-excel'),
+                    $this->generateLink($formattedDate, 'target', 'view-kogort-users')],
+                'whatsapp' => [$this->generateLink($formattedDate, 'whatsapp', 'generate-excel'),
+                    $this->generateLink($formattedDate, 'whatsapp', 'view-kogort-users')],
+                'call' => [$this->generateLink($formattedDate, 'call', 'generate-excel'),
+                    $this->generateLink($formattedDate, 'call', 'view-kogort-users') ],
+
+            ];
+            $currentDate = strtotime('+1 day', $currentDate);
+        }
+
         if (!$model) {
             $model = new UsersMessageManagement;
         }
@@ -30,7 +54,12 @@ class UsersMessageManagementController extends Controller
             }
         }
 
-        return $this->render('index', compact('model'));
+        return $this->render('index', [
+            'model' => $model,
+            'links' => $dates,
+            'startDate' => $startDate,
+            'endDate' => $endDate,
+        ]);
     }
 
 
@@ -48,13 +77,19 @@ class UsersMessageManagementController extends Controller
         while ($currentDate <= strtotime($endDate)) {
             $formattedDate = date('Y-m-d', $currentDate);
             $dates[$formattedDate] = [
-                'target' => $this->generateExcelLink($formattedDate, 'target'),
-                'whatsapp' => $this->generateExcelLink($formattedDate, 'whatsapp'),
-                'call' => $this->generateExcelLink($formattedDate, 'call'),
+                'target' => [$this->generateLink($formattedDate, 'target', 'generate-excel'),
+                    $this->generateLink($formattedDate, 'target', 'view-kogort-users')],
+                'whatsapp' => [$this->generateLink($formattedDate, 'whatsapp', 'generate-excel'),
+                    $this->generateLink($formattedDate, 'whatsapp', 'view-kogort-users')],
+                'call' => [$this->generateLink($formattedDate, 'call', 'generate-excel'),
+                    $this->generateLink($formattedDate, 'call', 'view-kogort-users') ],
+
             ];
             $currentDate = strtotime('+1 day', $currentDate);
         }
 
+        //var_dump($dates); die();
+
         return $this->render('export-kogort', [
             'links' => $dates,
             'startDate' => $startDate,
@@ -78,7 +113,7 @@ class UsersMessageManagementController extends Controller
 
         $columnIndex = 1;
         foreach ($fields as $field) {
-            $sheet->setCellValue([ $columnIndex, 1], $field);
+            $sheet->setCellValue(Coordinate::stringFromColumnIndex($columnIndex) . '1', $field);
             $columnIndex++;
         }
 
@@ -86,7 +121,7 @@ class UsersMessageManagementController extends Controller
         foreach ($data as $user) {
             $columnIndex = 1;
             foreach ($fields as $field) {
-                $sheet->setCellValue([$columnIndex, $row], $user->$field);
+                $sheet->setCellValue(Coordinate::stringFromColumnIndex($columnIndex) . $row, $user->$field);
                 $columnIndex++;
             }
             $row++;
@@ -109,10 +144,28 @@ class UsersMessageManagementController extends Controller
         Yii::$app->end();
     }
 
-    protected function generateExcelLink($date, $type)
+    public function actionViewKogortUsers($date, $type)
+    {
+        $data = Users::getUsersListForKogort($date);
+
+        $dataProvider = new ArrayDataProvider([
+            'allModels' => $data,
+            'pagination' => [
+                'pageSize' => 200,
+            ],
+        ]);
+
+        return $this->render('view-kogort', [
+            'dataProvider' => $dataProvider,
+            'date' => $date,
+        ]);
+    }
+
+    protected function generateLink($date, $type, $view)
     {
+        $url = 'users-message-management/' . $view;
         return Yii::$app->urlManager->createUrl([
-            'users-message-management/generate-excel',
+            $url,
             'date' => $date,
             'type' => $type,
         ]);
diff --git a/erp24/views/users-message-management/_export.php b/erp24/views/users-message-management/_export.php
new file mode 100644 (file)
index 0000000..742264b
--- /dev/null
@@ -0,0 +1,70 @@
+<?php
+use yii\helpers\Html;
+use yii\helpers\Url;
+
+/** @var array $links */
+/** @var string $startDate */
+/** @var string $endDate */
+
+
+?>
+
+    <form method="get" class="mb-4">
+        <div class="row g-3">
+            <div class="col">
+                <label for="start_date" class="form-label">Начальная дата</label>
+                <input type="date" name="start_date" id="start_date" class="form-control" value="<?= Html::encode($startDate) ?>">
+            </div>
+            <div class="col">
+                <label for="end_date" class="form-label">Конечная дата</label>
+                <input type="date" name="end_date" id="end_date" class="form-control" value="<?= Html::encode($endDate) ?>">
+            </div>
+            <div class="col-auto">
+                <label class="form-label d-block">&nbsp;</label>
+                <button type="submit" class="btn btn-primary">Показать</button>
+            </div>
+        </div>
+    </form>
+
+    <table class="table table-bordered table-striped">
+        <thead class="table-light">
+        <tr>
+            <th>День выгрузки</th>
+            <th>Target</th>
+            <th>Whatsapp</th>
+            <th>Звонок</th>
+        </tr>
+        </thead>
+        <tbody>
+        <?php foreach ($links as $date => $columns): ?>
+            <tr>
+                <td><?= Html::encode($date) ?></td>
+                <td >
+                    <a href="<?= Url::to($columns['target'][0]) ?>" target="_blank" download="users-target-<?= $date ?>.xlsx">
+                        Скачать EXCEL
+                    </a>
+                    <a href="<?= Url::to($columns['target'][1]) ?>" target="_blank" class="btn btn-outline-primary">
+                        Посмотреть
+                    </a>
+
+                </td>
+                <td >
+                    <a href="<?= Url::to($columns['whatsapp'][0]) ?>" target="_blank" download="users-whatsapp-<?= $date ?>.xlsx">
+                        Скачать EXCEL
+                    </a>
+                    <a href="<?= Url::to($columns['whatsapp'][1]) ?>" target="_blank" class="btn btn-outline-primary">
+                        Посмотреть
+                    </a>
+                </td>
+                <td >
+                    <a href="<?= Url::to($columns['call'][0]) ?>" target="_blank" download="users-call-<?= $date ?>.xlsx">
+                        Скачать EXCEL
+                    </a>
+                    <a href="<?= Url::to($columns['call'][1]) ?>" target="_blank" class="btn btn-outline-primary">
+                        Посмотреть
+                    </a>
+                </td>
+            </tr>
+        <?php endforeach; ?>
+        </tbody>
+    </table>
index eaccb3023428a24765a5a14ca307813c014551d3..39e53554afa626ecf15f108bc127338385ab1d66 100644 (file)
@@ -46,9 +46,31 @@ $this->title = 'Рассылка по когортам';
         <?php foreach ($links as $date => $columns): ?>
             <tr>
                 <td><?= Html::encode($date) ?></td>
-                <td><a href="<?= Url::to($columns['target']) ?>" target="_blank" download="users-target-<?= $date ?>.xlsx">Скачать EXCEL</a></td>
-                <td><a href="<?= Url::to($columns['whatsapp']) ?>" target="_blank" download="users-whatsapp-<?= $date ?>.xlsx">Скачать EXCEL</a></td>
-                <td><a href="<?= Url::to($columns['call']) ?>" target="_blank" download="users-call-<?= $date ?>.xlsx">Скачать EXCEL</a></td>
+                <td >
+                    <a href="<?= Url::to($columns['target'][0]) ?>" target="_blank" download="users-target-<?= $date ?>.xlsx">
+                        Скачать EXCEL
+                    </a>
+                    <a href="<?= Url::to($columns['target'][1]) ?>" target="_blank" class="btn btn-outline-primary">
+                        Посмотреть
+                    </a>
+
+                </td>
+                <td >
+                    <a href="<?= Url::to($columns['whatsapp'][0]) ?>" target="_blank" download="users-whatsapp-<?= $date ?>.xlsx">
+                        Скачать EXCEL
+                    </a>
+                    <a href="<?= Url::to($columns['whatsapp'][1]) ?>" target="_blank" class="btn btn-outline-primary">
+                        Посмотреть
+                    </a>
+                </td>
+                <td >
+                    <a href="<?= Url::to($columns['call'][0]) ?>" target="_blank" download="users-call-<?= $date ?>.xlsx">
+                        Скачать EXCEL
+                    </a>
+                    <a href="<?= Url::to($columns['call'][1]) ?>" target="_blank" class="btn btn-outline-primary">
+                        Посмотреть
+                    </a>
+                </td>
             </tr>
         <?php endforeach; ?>
         </tbody>
index 41471dca211cb66ffc59092a3f5043b2410b7251..83b69fbbb2f1cb099f9b5f48a80efa6086827782 100644 (file)
@@ -8,6 +8,9 @@ use dosamigos\datetimepicker\DateTimePicker;
 use yii_app\records\UsersMessageManagement;
 
 /* @var $model UsersMessageManagement */
+/** @var array $links */
+/** @var string $startDate */
+/** @var string $endDate */
 
 $this->registerJsFile('/js/users-message-management/index.js', ['position' => \yii\web\View::POS_END]);
 
@@ -164,7 +167,11 @@ $this->registerJsFile('/js/users-message-management/index.js', ['position' => \y
                 </div>
             </div>
             <div id="unloadingTab">
-                вызгрузки
+                <?= $this->render('_export', [
+                    'links' => $links,
+                    'startDate' => $startDate,
+                    'endDate' => $endDate,
+                ]) ?>
             </div>
         </div>
     </div>
diff --git a/erp24/views/users-message-management/view-kogort.php b/erp24/views/users-message-management/view-kogort.php
new file mode 100644 (file)
index 0000000..e07d333
--- /dev/null
@@ -0,0 +1,25 @@
+<?php
+
+use yii\grid\GridView;
+use yii\helpers\Html;
+
+
+/** @var yii\data\ActiveDataProvider $dataProvider */
+/** @var string $date */
+
+$this->title = 'Когорта пользователей';
+$this->params['breadcrumbs'][] = $this->title;
+?>
+<?= Html::a('Назад', ['index'], ['class' => 'btn btn-primary m-5']) ?>
+<div class="view-kogort p-5 bg-white mt-6 rounded-3">
+
+
+
+    <h1><?= Html::encode($this->title) ?> <?= $date ?></h1>
+
+
+    <?= GridView::widget([
+        'dataProvider' => $dataProvider,
+    ]); ?>
+
+</div>