--- /dev/null
+<?php
+
+use yii\db\Migration;
+
+/**
+ * Class m241211_141619_alter_table_users_message_management_add_columns_hold_active
+ */
+class m241211_141619_alter_table_users_message_management_add_columns_hold_active extends Migration
+{
+ const TABLE_NAME = 'erp24.users_message_management';
+
+ /**
+ * {@inheritdoc}
+ */
+ public function safeUp()
+ {
+ $this->addColumn(self::TABLE_NAME, 'hold', $this->integer()->notNull()->defaultValue(0)->comment('HOLD клиентов'));
+ $this->addColumn(self::TABLE_NAME, 'hold_active', $this->tinyInteger()->notNull()->defaultValue(0)
+ ->comment('0 - поле деактивировано, 1 - поле активировано'));
+ $this->addColumn(self::TABLE_NAME, 'day_before_step1_active', $this->tinyInteger()->notNull()
+ ->defaultValue(0)->comment('0 - поле деактивировано, 1 - поле активировано'));
+ $this->addColumn(self::TABLE_NAME, 'day_before_step2_active', $this->tinyInteger()->notNull()
+ ->defaultValue(0)->comment('0 - поле деактивировано, 1 - поле активировано'));
+ $this->addColumn(self::TABLE_NAME, 'day_before_step3_active', $this->tinyInteger()->notNull()
+ ->defaultValue(0)->comment('0 - поле деактивировано, 1 - поле активировано'));
+ $this->addColumn(self::TABLE_NAME, 'active', $this->tinyInteger()->notNull()
+ ->defaultValue(0)->comment('0 - поле деактивировано, 1 - поле активировано'));
+ $this->addColumn(self::TABLE_NAME, 'date_end', $this->dateTime()->null()->comment('Дата и время завершения события'));
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function safeDown()
+ {
+ $this->dropColumn(self::TABLE_NAME, 'date_end');
+ $this->dropColumn(self::TABLE_NAME, 'active');
+ $this->dropColumn(self::TABLE_NAME, 'day_before_step3_active');
+ $this->dropColumn(self::TABLE_NAME, 'day_before_step2_active');
+ $this->dropColumn(self::TABLE_NAME, 'day_before_step1_active');
+ $this->dropColumn(self::TABLE_NAME, 'hold_active');
+ $this->dropColumn(self::TABLE_NAME, 'hold');
+ }
+}
* @property int $created_by ID создателя записи
* @property string $updated_at Дата обновления
* @property int $updated_by ID обновления записи
+ * @property int $hold_active 0 - поле деактивировано, 1 - поле активировано
+ * @property int $day_before_step1_active 0 - поле деактивировано, 1 - поле активировано
+ * @property int $day_before_step2_active 0 - поле деактивировано, 1 - поле активировано
+ * @property int $day_before_step3_active 0 - поле деактивировано, 1 - поле активировано
+ * @property int $active 0 - поле деактивировано, 1 - поле активировано
+ * @property string|null $date_end Дата и время завершения события
*/
class UsersMessageManagement extends \yii\db\ActiveRecord
{
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'],
+ [['day_before_step1', 'day_before_step2', 'day_before_step3', 'created_by', 'updated_by',
+ 'hold', 'hold_active', 'day_before_step1_active', 'day_before_step2_active', 'day_before_step3_active', 'active'], 'default', 'value' => null],
+ [['day_before_step1', 'day_before_step2', 'day_before_step3', 'created_by', 'updated_by',
+ 'hold', 'hold_active', 'day_before_step1_active', 'day_before_step2_active', 'day_before_step3_active', 'active'], 'integer'],
+ [['date_start', 'date_last_scenario', 'created_at', 'updated_at', 'date_end'], 'safe'],
+ [['offer_1', 'offer_2', 'offer_3', 'offer_whatsapp', 'offer_text', 'date_end'], 'string'],
];
}
'day_before_step2' => 'Дней до второго этапа',
'day_before_step3' => 'Дней до третьего этапа',
'date_start' => 'Дата и время старта',
- 'offer_1' => 'Оффер чатбот 1',
- 'offer_2' => 'Оффер чатбот 2',
+ 'date_end' => 'Дата и время окончания',
+ 'offer_1' => 'Первое сообщение в чатбот',
+ 'offer_2' => 'Второе сообщение в чатбот',
'offer_3' => 'Оффер чатбот 3',
- 'offer_whatsapp' => 'Оффер Whatsapp',
- 'offer_text' => 'ТекÑ\81Ñ\82 Ñ\82аÑ\80геÑ\82а',
+ 'offer_whatsapp' => 'Whatsapp',
+ 'offer_text' => 'ТаÑ\80геÑ\82',
'date_last_scenario' => 'Дата последнего сценария',
'created_at' => 'Created At',
'created_by' => 'Created By',
'updated_at' => 'Updated At',
'updated_by' => 'Updated By',
+ 'hold' => 'Hold',
+ 'hold_active' => 'Hold Active',
+ 'day_before_step1_active' => 'Day Before Step1 Active',
+ 'day_before_step2_active' => 'Day Before Step2 Active',
+ 'day_before_step3_active' => 'Day Before Step3 Active',
+ 'active' => 'Active',
];
}
}
/* @var $model UsersMessageManagement */
+$this->registerJsFile('/js/users-message-management/index.js', ['position' => \yii\web\View::POS_END]);
+
?>
<div class="usersMessageManagementIndex m-5">
<?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
- ],
- ]) ?>
+ <ul class="nav1 br-7 border">
+ <li class="nav-item1">
+ <a class="nav-link text-primary active" id="mainTabAnchor" href="javascript:showTab('mainTab');">Основные настройки</a>
+ </li>
+ <li class="nav-item1">
+ <a class="nav-link text-primary" id="messageTabAnchor" href="javascript:showTab('messageTab');">Сообщения рассылки</a>
+ </li>
+ <li class="nav-item1">
+ <a class="nav-link text-primary" id="messageTabAnchor" href="javascript:showTab('unloadingTab');">Выгрузки</a>
+ </li>
+ </ul>
+
+ <div class="card">
+ <div class="card-body">
+ <div id="mainTab">
+ <div class="row">
+ <div class="col-2 mt-2">
+ Время начала
+ </div>
+ <div class="col-2">
+ <?= $form->field($model, 'date_start')->widget(DateTimePicker::class, [
+ 'language' => 'ru',
+ 'template' => '{input}',
+ 'clientOptions' => [
+ 'autoclose' => true,
+ 'format' => 'Y-m-d H:i:s',
+ 'todayBtn' => true
+ ],
+ ])->label(false) ?>
+ </div>
+ </div>
+ <div class="row">
+ <div class="col-2 mt-2">
+ Время конца
+ </div>
+ <div class="col-2">
+ <?= $form->field($model, 'date_end')->widget(DateTimePicker::class, [
+ 'language' => 'ru',
+ 'template' => '{input}',
+ 'clientOptions' => [
+ 'autoclose' => true,
+ 'format' => 'Y-m-d H:i:s',
+ 'todayBtn' => true
+ ],
+ ])->label(false) ?>
+ </div>
+ </div>
+ <div class="row">
+ <div class="col-2 mt-2">
+ Количество бонусов
+ </div>
+ <div class="col-2">
+ <?= $form->field($model, 'bonus')->textInput(['type' => 'number'])->label(false) ?>
+ </div>
+ </div>
+ <div class="row">
+ <div class="col-2 mt-2">
+ HOLD клиентов
+ </div>
+ <div class="col-4">
+ <div class="d-inline-block">
+ <?php $attr = $model->hold_active ? ['type' => 'number'] : ['type' => 'number', 'readonly' => true]; ?>
+ <?= $form->field($model, 'hold')->textInput($attr)->label(false) ?>
+ </div>
+ <div class="d-inline-block px-5">
+ <?= $form->field($model, 'hold_active')->checkbox(['unchecked' => false, 'onchange'
+ => 'setReadonly("#usersmessagemanagement-hold", this.checked);'], false)->label(false) ?>
+ </div>
+ </div>
+ </div>
+ <div class="row">
+ <div class="col-2 mt-2">
+ Первый этап
+ </div>
+ <div class="col-4">
+ <div class="d-inline-block">
+ <?php $attr = $model->day_before_step1_active ? ['type' => 'number'] : ['type' => 'number', 'readonly' => true]; ?>
+ <?= $form->field($model, 'day_before_step1')->textInput($attr)->label(false) ?>
+ </div>
+ <div class="d-inline-block px-5">
+ <?= $form->field($model, 'day_before_step1_active')->checkbox(['unchecked' => false, 'onchange'
+ => 'setReadonly("#usersmessagemanagement-day_before_step1", this.checked);'], false)->label(false) ?>
+ </div>
+ </div>
+ </div>
+ <div class="row">
+ <div class="col-2 mt-2">
+ Второй этап
+ </div>
+ <div class="col-4">
+ <div class="d-inline-block">
+ <?php $attr = $model->day_before_step2_active ? ['type' => 'number'] : ['type' => 'number', 'readonly' => true]; ?>
+ <?= $form->field($model, 'day_before_step2')->textInput($attr)->label(false) ?>
+ </div>
+ <div class="d-inline-block px-5">
+ <?= $form->field($model, 'day_before_step2_active')->checkbox(['unchecked' => false, 'onchange'
+ => 'setReadonly("#usersmessagemanagement-day_before_step2", this.checked);'], false)->label(false) ?>
+ </div>
+ </div>
+ </div>
+ <div class="row">
+ <div class="col-2 mt-2">
+ Третий этап
+ </div>
+ <div class="col-4">
+ <div class="d-inline-block">
+ <?php $attr = $model->day_before_step3_active ? ['type' => 'number'] : ['type' => 'number', 'readonly' => true]; ?>
+ <?= $form->field($model, 'day_before_step3')->textInput($attr)->label(false) ?>
+ </div>
+ <div class="d-inline-block px-5">
+ <?= $form->field($model, 'day_before_step3_active')->checkbox(['unchecked' => false, 'onchange'
+ => 'setReadonly("#usersmessagemanagement-day_before_step3", this.checked);'], false)->label(false) ?>
+ </div>
+ </div>
+ </div>
+ <div class="row">
+ <div class="col-2 mt-2">
+ Активность рассылки
+ </div>
+ <div class="col-4">
+ <div class="d-inline-block">
+ <?= $form->field($model, 'active')->checkbox(['unchecked' => false], false)->label(false) ?>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div id="messageTab">
+ <div class="row">
+ <div class="col-6">
+ <?= $form->field($model, 'offer_1')->textarea(['row' => 6]) ?>
+ </div>
+ <div class="col-6">
+ <?= $form->field($model, 'offer_2')->textarea(['row' => 6]) ?>
+ </div>
+ </div>
+ <div class="row">
+ <div class="col-6">
+ <?= $form->field($model, 'offer_whatsapp')->textarea(['row' => 6]) ?>
+ </div>
+ <div class="col-6">
+ <?= $form->field($model, 'offer_text')->textarea(['row' => 6]) ?>
+ </div>
+ </div>
+ </div>
+ <div id="unloadingTab">
+ вызгрузки
+ </div>
</div>
</div>
+
+
+
<div class="form-group">
<?= Html::submitButton('Сохранить', ['class' => 'btn btn-success']) ?>
</div>
--- /dev/null
+/* jshint esversion: 6 */
+
+const tabs = ['mainTab', 'messageTab', 'unloadingTab'];
+
+function showTab(tabName) {
+ $.each(tabs, function() {
+ if (this == tabName) {
+ $('#' + this).show();
+ $('#' + this + 'Anchor').addClass('active');
+ } else {
+ $('#' + this).hide();
+ $('#' + this + 'Anchor').removeClass('active');
+ }
+ });
+}
+
+function setReadonly(id, checked) {
+ const inp = document.querySelector(id);
+ if (checked) {
+ inp.removeAttribute("readonly");
+ } else {
+ inp.setAttribute("readonly", true);
+ }
+}
+
+$(document).ready(() => {
+ showTab('mainTab');
+})