From: fomichev Date: Wed, 11 Dec 2024 15:04:32 +0000 (+0300) Subject: Вывод таблицы X-Git-Tag: 1.7~161^2~19 X-Git-Url: https://gitweb.erp-flowers.ru/?a=commitdiff_plain;h=5fb2dfbec0d74e7962f6a8543dd003eb8d0c7a66;p=erp24_rep%2Fyii-erp24%2F.git Вывод таблицы --- diff --git a/erp24/controllers/UsersMessageManagementController.php b/erp24/controllers/UsersMessageManagementController.php index d817a283..cec867b9 100644 --- a/erp24/controllers/UsersMessageManagementController.php +++ b/erp24/controllers/UsersMessageManagementController.php @@ -2,13 +2,16 @@ namespace app\controllers; +use PhpOffice\PhpSpreadsheet\Spreadsheet; use Yii; use yii\web\Controller; +use yii_app\records\Users; use yii_app\records\UsersMessageManagement; class UsersMessageManagementController extends Controller { - public function actionIndex() { + public function actionIndex() + { $model = UsersMessageManagement::find()->one(); if (!$model) { @@ -29,4 +32,89 @@ class UsersMessageManagementController extends Controller return $this->render('index', compact('model')); } + + + public function actionExportKogort() + { + $request = Yii::$app->request; + + + $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->generateExcelLink($formattedDate, 'target'), + 'whatsapp' => $this->generateExcelLink($formattedDate, 'whatsapp'), + 'call' => $this->generateExcelLink($formattedDate, 'call'), + ]; + $currentDate = strtotime('+1 day', $currentDate); + } + + return $this->render('export-kogort', [ + 'links' => $dates, + 'startDate' => $startDate, + 'endDate' => $endDate, + ]); + } + + public function actionGenerateExcel($date, $type) + { + $data = Users::getUsersListForKogort($date); + + $spreadsheet = new Spreadsheet(); + $sheet = $spreadsheet->getActiveSheet(); + + if (!empty($data)) { + $fields = array_keys($data[0]->getAttributes()); + } else { + Yii::$app->session->setFlash('error', 'Нет данных для экспорта.'); + return $this->redirect(Yii::$app->request->referrer); + } + + $columnIndex = 1; + foreach ($fields as $field) { + $sheet->setCellValue([ $columnIndex, 1], $field); + $columnIndex++; + } + + $row = 2; + foreach ($data as $user) { + $columnIndex = 1; + foreach ($fields as $field) { + $sheet->setCellValue([$columnIndex, $row], $user->$field); + $columnIndex++; + } + $row++; + } + + $sheet->setTitle('Users'); + + $response = Yii::$app->response; + $response->format = \yii\web\Response::FORMAT_RAW; + + + $response->headers->add('Content-Type', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); + $response->headers->add('Content-Disposition', 'attachment; filename="users-' . $type . '-' . $date . '.xlsx"'); + $response->headers->add('Cache-Control', 'max-age=0'); + $response->headers->add('Pragma', 'public'); + + + $writer = new \PhpOffice\PhpSpreadsheet\Writer\Xlsx($spreadsheet); + $writer->save('php://output'); + Yii::$app->end(); + } + + protected function generateExcelLink($date, $type) + { + return Yii::$app->urlManager->createUrl([ + 'users-message-management/generate-excel', + 'date' => $date, + 'type' => $type, + ]); + } } diff --git a/erp24/records/Users.php b/erp24/records/Users.php index 2493466b..d8572a7c 100755 --- a/erp24/records/Users.php +++ b/erp24/records/Users.php @@ -3,6 +3,7 @@ namespace yii_app\records; use Yii; +use yii\base\StaticInstanceInterface; /** * This is the model class for table "users". @@ -289,10 +290,11 @@ class Users extends \yii\db\ActiveRecord * https://tracker.yandex.ru/ERP-252 * @return array */ - public function getUsersListForKogort() + public static function getUsersListForKogort($startDate = null, $endDate = null) { - $startDate = date('Y-m-d'); - $endDate = date('Y-m-d', strtotime($startDate . ' +7 days')); + + $startDate = $startDate ?? date('Y-m-d'); + $endDate = $endDate ?? date('Y-m-d', strtotime($startDate . ' +7 days')); $salesPhone = Sales::find() ->where(['>=', 'date', "$startDate 00:00:00"]) diff --git a/erp24/views/users-message-management/export-kogort.php b/erp24/views/users-message-management/export-kogort.php new file mode 100644 index 00000000..98e2b3f4 --- /dev/null +++ b/erp24/views/users-message-management/export-kogort.php @@ -0,0 +1,52 @@ +title = 'Рассылка по когортам'; +?> + +
+

title) ?>

+ +
+
+
+ + +
+
+ + +
+
+ + +
+
+
+ + + + + + + + + + + + $columns): ?> + + + + + + + + +
День выгрузкиTargetWhatsappЗвонок
Скачать EXCELСкачать EXCELСкачать EXCEL
+
\ No newline at end of file