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;
{
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;
}
}
}
- return $this->render('index', compact('model'));
+ return $this->render('index', [
+ 'model' => $model,
+ 'links' => $dates,
+ 'startDate' => $startDate,
+ 'endDate' => $endDate,
+ ]);
}
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,
$columnIndex = 1;
foreach ($fields as $field) {
- $sheet->setCellValue([ $columnIndex, 1], $field);
+ $sheet->setCellValue(Coordinate::stringFromColumnIndex($columnIndex) . '1', $field);
$columnIndex++;
}
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++;
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,
]);
--- /dev/null
+<?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"> </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>