]> gitweb.erp-flowers.ru Git - erp24_rep/yii-erp24/.git/commitdiff
[ERP-250] интерфейс настроек рассылок клиентам
authorAlexander Smirnov <fredeom@mail.ru>
Thu, 28 Nov 2024 12:07:15 +0000 (15:07 +0300)
committerAlexander Smirnov <fredeom@mail.ru>
Thu, 28 Nov 2024 12:07:15 +0000 (15:07 +0300)
erp24/controllers/UsersMessageManagementController.php [new file with mode: 0644]
erp24/migrations/m241127_161623_create_table_users_message_management.php [new file with mode: 0755]
erp24/records/UsersMessageManagement.php [new file with mode: 0644]
erp24/views/users-message-management/index.php [new file with mode: 0644]

diff --git a/erp24/controllers/UsersMessageManagementController.php b/erp24/controllers/UsersMessageManagementController.php
new file mode 100644 (file)
index 0000000..d817a28
--- /dev/null
@@ -0,0 +1,32 @@
+<?php
+
+namespace app\controllers;
+
+use Yii;
+use yii\web\Controller;
+use yii_app\records\UsersMessageManagement;
+
+class UsersMessageManagementController extends Controller
+{
+    public function actionIndex() {
+        $model = UsersMessageManagement::find()->one();
+
+        if (!$model) {
+            $model = new UsersMessageManagement;
+        }
+
+        if (Yii::$app->request->isPost && $model->load(Yii::$app->request->post())) {
+            if (!$model->created_at) {
+                $model->created_at = date('Y-m-d H:i:s');
+                $model->created_by = Yii::$app->user->id;
+            }
+            $model->updated_at = date('Y-m-d H:i:s');
+            $model->updated_by = Yii::$app->user->id;
+            if ($model->validate()) {
+                $model->save();
+            }
+        }
+
+        return $this->render('index', compact('model'));
+    }
+}
diff --git a/erp24/migrations/m241127_161623_create_table_users_message_management.php b/erp24/migrations/m241127_161623_create_table_users_message_management.php
new file mode 100755 (executable)
index 0000000..8ada10d
--- /dev/null
@@ -0,0 +1,43 @@
+<?php
+
+use yii\db\Migration;
+
+/**
+ * Class m241127_161623_create_table_users_message_management
+ */
+class m241127_161623_create_table_users_message_management extends Migration
+{
+    const TABLE_NAME = 'erp24.users_message_management';
+    /**
+     * {@inheritdoc}
+     */
+    public function safeUp()
+    {
+        $this->createTable(self::TABLE_NAME, [
+            'id' => $this->primaryKey(),
+            'bonus' => $this->float()->notNull()->comment('Количество бонусов к начислению'),
+            'day_before_step1' => $this->integer()->notNull()->comment('Количество дней до начала запуска первого этапа'),
+            'day_before_step2' => $this->integer()->notNull()->comment('Количество дней до начала запуска второго этапа'),
+            'day_before_step3' => $this->integer()->notNull()->comment('Количество дней до начала запуска третьего этапа'),
+            'date_start' => $this->dateTime()->notNull()->comment('Дата и время запуска события'),
+            'offer_1' => $this->text()->notNull()->comment('Офер в чат бот 1'),
+            'offer_2' => $this->text()->notNull()->comment('Офер в чат бот 2'),
+            'offer_3' => $this->text()->null()->comment('Офер в чат бот 3'),
+            'offer_whatsapp' => $this->text()->notNull()->comment('Офер в whatsapp'),
+            'offer_text' => $this->text()->notNull()->comment('Текст таргета'),
+            'date_last_scenario' => $this->dateTime()->notNull()->comment('Дата последнего сценария'),
+            'created_at' => $this->dateTime()->notNull()->comment('Дата создания'),
+            'created_by' => $this->integer()->notNull()->comment('ID создателя записи'),
+            'updated_at' => $this->dateTime()->notNull()->comment('Дата обновления'),
+            'updated_by' => $this->integer()->notNull()->comment('ID обновления записи'),
+        ]);
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function safeDown()
+    {
+        $this->dropTable(self::TABLE_NAME);
+    }
+}
diff --git a/erp24/records/UsersMessageManagement.php b/erp24/records/UsersMessageManagement.php
new file mode 100644 (file)
index 0000000..88c99c0
--- /dev/null
@@ -0,0 +1,76 @@
+<?php
+
+namespace yii_app\records;
+
+use Yii;
+
+/**
+ * This is the model class for table "users_message_management".
+ *
+ * @property int $id
+ * @property float $bonus Количество бонусов к начислению
+ * @property int $day_before_step1 Количество дней до начала запуска первого этапа
+ * @property int $day_before_step2 Количество дней до начала запуска второго этапа
+ * @property int $day_before_step3 Количество дней до начала запуска третьего этапа
+ * @property string $date_start Дата и время запуска события
+ * @property string $offer_1 Офер в чат бот 1
+ * @property string $offer_2 Офер в чат бот 2
+ * @property string|null $offer_3 Офер в чат бот 3
+ * @property string $offer_whatsapp Офер в whatsapp
+ * @property string $offer_text Текст таргета
+ * @property string $date_last_scenario Дата последнего сценария
+ * @property string $created_at Дата создания
+ * @property int $created_by ID создателя записи
+ * @property string $updated_at Дата обновления
+ * @property int $updated_by ID обновления записи
+ */
+class UsersMessageManagement extends \yii\db\ActiveRecord
+{
+    /**
+     * {@inheritdoc}
+     */
+    public static function tableName()
+    {
+        return 'users_message_management';
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function rules()
+    {
+        return [
+            [['bonus', 'day_before_step1', 'day_before_step2', 'day_before_step3', 'date_start', 'offer_1', 'offer_2', 'offer_whatsapp', 'offer_text', 'date_last_scenario', 'created_at', 'created_by', 'updated_at', 'updated_by'], 'required'],
+            [['bonus'], 'number'],
+            [['day_before_step1', 'day_before_step2', 'day_before_step3', 'created_by', 'updated_by'], 'default', 'value' => null],
+            [['day_before_step1', 'day_before_step2', 'day_before_step3', 'created_by', 'updated_by'], 'integer'],
+            [['date_start', 'date_last_scenario', 'created_at', 'updated_at'], 'safe'],
+            [['offer_1', 'offer_2', 'offer_3', 'offer_whatsapp', 'offer_text'], 'string'],
+        ];
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function attributeLabels()
+    {
+        return [
+            'id' => 'ID',
+            'bonus' => 'Бонус',
+            'day_before_step1' => 'Дней до первого этапа',
+            'day_before_step2' => 'Дней до второго этапа',
+            'day_before_step3' => 'Дней до третьего этапа',
+            'date_start' => 'Дата и время старта',
+            'offer_1' => 'Оффер чатбот 1',
+            'offer_2' => 'Оффер чатбот 2',
+            'offer_3' => 'Оффер чатбот 3',
+            'offer_whatsapp' => 'Оффер Whatsapp',
+            'offer_text' => 'Текст таргета',
+            'date_last_scenario' => 'Дата последнего сценария',
+            'created_at' => 'Created At',
+            'created_by' => 'Created By',
+            'updated_at' => 'Updated At',
+            'updated_by' => 'Updated By',
+        ];
+    }
+}
diff --git a/erp24/views/users-message-management/index.php b/erp24/views/users-message-management/index.php
new file mode 100644 (file)
index 0000000..690d9f0
--- /dev/null
@@ -0,0 +1,84 @@
+<?php
+
+use yii\helpers\Html;
+use yii\widgets\ActiveForm;
+
+use dosamigos\datetimepicker\DateTimePicker;
+
+use yii_app\records\UsersMessageManagement;
+
+/* @var $model UsersMessageManagement */
+
+?>
+
+<div class="usersMessageManagementIndex m-5">
+
+    <h1>Настройка управления рассылками клиентам</h1>
+
+    <?php $form = ActiveForm::begin(); ?>
+
+    <div class="row">
+        <div class="col-6">
+            <?= $form->field($model, 'bonus')->textInput(['type' => 'number', 'step' => 0.01]) ?>
+        </div>
+        <div class="col-6">
+            <?= $form->field($model, 'date_start')->widget(DateTimePicker::class, [
+                'language' => 'ru',
+                'template' => '{input}',
+                'clientOptions' => [
+                    'autoclose' => true,
+                    'format' => 'Y-m-d H:i:s',
+                    'todayBtn' => true
+                ],
+            ]) ?>
+        </div>
+    </div>
+    <div class="row">
+        <div class="col-4">
+            <?= $form->field($model, 'day_before_step1')->textInput(['type' => 'number', 'step' => 0.01]) ?>
+        </div>
+        <div class="col-4">
+            <?= $form->field($model, 'day_before_step2')->textInput(['type' => 'number', 'step' => 0.01]) ?>
+        </div>
+        <div class="col-4">
+            <?= $form->field($model, 'day_before_step3')->textInput(['type' => 'number', 'step' => 0.01]) ?>
+        </div>
+    </div>
+    <div class="row">
+        <div class="col-4">
+            <?= $form->field($model, 'offer_1')->textarea(['row' => 6]) ?>
+        </div>
+        <div class="col-4">
+            <?= $form->field($model, 'offer_2')->textarea(['row' => 6]) ?>
+        </div>
+        <div class="col-4">
+            <?= $form->field($model, 'offer_3')->textarea(['row' => 6]) ?>
+        </div>
+    </div>
+    <div class="row">
+        <div class="col-4">
+            <?= $form->field($model, 'offer_whatsapp')->textarea(['row' => 6]) ?>
+        </div>
+        <div class="col-4">
+            <?= $form->field($model, 'offer_text')->textarea(['row' => 6]) ?>
+        </div>
+        <div class="col-4">
+            <?= $form->field($model, 'date_last_scenario')->widget(DateTimePicker::class, [
+                'language' => 'ru',
+                'template' => '{input}',
+                'clientOptions' => [
+                    'autoclose' => true,
+                    'format' => 'Y-m-d H:i:s',
+                    'todayBtn' => true
+                ],
+            ]) ?>
+        </div>
+    </div>
+
+    <div class="form-group">
+        <?= Html::submitButton('Сохранить', ['class' => 'btn btn-success']) ?>
+    </div>
+
+    <?php ActiveForm::end(); ?>
+
+</div>