]> gitweb.erp-flowers.ru Git - erp24_rep/yii-erp24/.git/commitdiff
Изменение интерфейса и добавление миграции
authorvladfo <fvv2011@gmail.com>
Fri, 18 Oct 2024 14:47:38 +0000 (17:47 +0300)
committervladfo <fvv2011@gmail.com>
Fri, 18 Oct 2024 14:47:38 +0000 (17:47 +0300)
erp24/controllers/crud/ClusterAdminController.php
erp24/migrations/m241018_114640_alter_table_cluster_admin_add_column_active.php [new file with mode: 0644]
erp24/records/ClusterAdmin.php
erp24/views/crud/cluster-admin/_form.php
erp24/views/crud/cluster-admin/create.php
erp24/views/crud/cluster-admin/index.php
erp24/views/crud/cluster-admin/update.php
erp24/views/crud/cluster-admin/view.php

index d917c713f0f65443a8f9922dbba6688b884132c2..b0357be2f141df8c30b22acd71aa9078626e3b77 100644 (file)
@@ -43,14 +43,48 @@ class ClusterAdminController extends Controller
      */
     public function actionIndex()
     {
-        $searchModel = new ClusterAdminSearch();
-        $dataProvider = $searchModel->search($this->request->queryParams);
+        // Получаем все кусты из таблицы Cluster
+        $clusters = Cluster::find()->asArray()->all();
+
+        // Получаем все записи из таблицы ClusterAdmin
+        $clusterAdmins = ClusterAdmin::find()
+            ->with(['admin', 'cluster'])
+            ->asArray()
+            ->all();
+
+        // Создаем массив для сопоставления кустов и их статуса
+        $clusterMapping = [];
+        foreach ($clusters as $cluster) {
+            $clusterMapping[$cluster['id']] = [
+                'name' => $cluster['name'],
+                'admin' => null,
+                'status' => 'Нет записей',
+                'hasActive' => false,
+                'hasAny' => false,
+            ];
+
+            // Проверяем наличие записей и активных записей для данного куста
+            foreach ($clusterAdmins as $adminRecord) {
+                if ($adminRecord['cluster_id'] == $cluster['id']) {
+                    $clusterMapping[$cluster['id']]['hasAny'] = true;
+
+                    if ($adminRecord['active'] == 1) {
+                        $clusterMapping[$cluster['id']]['admin'] = $adminRecord['admin']['name'] . ' (' . $adminRecord['admin_id'] . ')';
+                        $clusterMapping[$cluster['id']]['status'] = 'Активная запись';
+                        $clusterMapping[$cluster['id']]['hasActive'] = true;
+                        break;
+                    }
+                }
+            }
+
+
+            if (!$clusterMapping[$cluster['id']]['hasActive'] && $clusterMapping[$cluster['id']]['hasAny']) {
+                $clusterMapping[$cluster['id']]['status'] = 'Нет активных записей';
+            }
+        }
 
-        $user = Yii::$app->user->identity;
         return $this->render('index', [
-            'searchModel' => $searchModel,
-            'dataProvider' => $dataProvider,
-            'user' => $user,
+            'clusterMapping' => $clusterMapping,
         ]);
     }
 
@@ -63,8 +97,22 @@ class ClusterAdminController extends Controller
     public function actionView($id)
     {
         $user = Yii::$app->user->identity;
+
+        // Ищем кластер по его ID
+        $cluster = Cluster::findOne($id);
+        if (!$cluster) {
+            throw new NotFoundHttpException('Кластер не найден.');
+        }
+
+        // Находим все записи для данного кластера
+        $clusterAdmins = ClusterAdmin::find()
+            ->where(['cluster_id' => $id])
+            ->with(['admin'])
+            ->all();
+
         return $this->render('view', [
-            'model' => $this->findModel($id),
+            'cluster' => $cluster,
+            'clusterAdmins' => $clusterAdmins,
             'user' => $user,
         ]);
     }
@@ -74,57 +122,59 @@ class ClusterAdminController extends Controller
      * If creation is successful, the browser will be redirected to the 'view' page.
      * @return string|\yii\web\Response
      */
-    public function actionCreate()
+    public function actionCreate($cluster_id)
     {
         $model = new ClusterAdmin();
 
+        // Проверяем, существует ли указанный кластер
+        $cluster = Cluster::findOne($cluster_id);
+        if (!$cluster) {
+            throw new NotFoundHttpException('Кластер не найден.');
+        }
+
         if ($this->request->isPost && $model->load($this->request->post())) {
-            // Проверка на существование записи с такими же cluster_id и date_end >= текущей даты или date_end = '2100-01-01'
+            $model->cluster_id = $cluster_id; // Устанавливаем cluster_id
+
+            // Ищем активную запись для данного кластера
             $existingRecord = ClusterAdmin::find()
-                ->where(['cluster_id' => $model->cluster_id])
-                ->andWhere(['or', ['>=', 'date_end', date('Y-m-d')], ['date_end' => '2100-01-01']])
+                ->where(['cluster_id' => $model->cluster_id, 'active' => 1])
                 ->one();
 
             if ($existingRecord) {
-                // Обновляем дату окончания для текущей записи на текущую дату
+                // Отключаем активность у старой записи
+                $existingRecord->active = 0;
                 $existingRecord->date_end = date('Y-m-d');
 
                 ClusterManagerService::clearClusterManagerStores($existingRecord->cluster_id, $existingRecord->admin_id);
                 if (!$existingRecord->save()) {
                     Yii::$app->session->setFlash('error', 'Ошибка при обновлении существующей записи.');
-                    return $this->redirect(['create']);
+                    return $this->redirect(['create', 'cluster_id' => $cluster_id]);
                 }
+            }
 
-                // Создаём новую запись для cluster_id и admin_id
-                $model->date_start = date('Y-m-d'); // Опционально установить текущую дату как начало новой привязки
-                if ($model->save()) {
-                    ClusterManagerService::syncClusterManagers($model->cluster_id, $model->admin_id);
-                    Yii::$app->session->setFlash('success', 'Новая запись успешно создана, предыдущая была закрыта.');
-                    return $this->redirect(['view', 'id' => $model->id]);
-                } else {
-                    Yii::$app->session->setFlash('error', 'Ошибка при создании новой записи.');
-                }
+            // Устанавливаем дату начала для новой записи и включаем активность
+            $model->date_start = date('Y-m-d');
+            $model->active = 1;
+
+            if ($model->save()) {
+                ClusterManagerService::syncClusterManagers($model->cluster_id, $model->admin_id);
+                Yii::$app->session->setFlash('success', 'Новая запись успешно создана, предыдущая была закрыта.');
+                return $this->redirect(['view', 'id' => $cluster_id]);
             } else {
-                // Если такой записи нет, просто создаем новую
-                if ($model->save()) {
-                    ClusterManagerService::syncClusterManagers($model->cluster_id, $model->admin_id);
-                    return $this->redirect(['view', 'id' => $model->id]);
-                }
+                Yii::$app->session->setFlash('error', 'Ошибка при создании новой записи.');
             }
         }
 
-        // Получение данных для выпадающих списков
-        $clusters = ArrayHelper::map(Cluster::find()->all(), 'id', 'name');
         $admins = ArrayHelper::map(Admin::find()
             ->select(['id', 'name'])
-            ->where(['IN', 'group_id', [7]]) // Только кустовые директора
+            ->where(['IN', 'group_id', [7]])
             ->all(), 'id', 'name');
 
         $user = Yii::$app->user->identity;
 
         return $this->render('create', [
             'model' => $model,
-            'clusters' => $clusters,
+            'cluster' => $cluster,
             'admins' => $admins,
             'user' => $user,
         ]);
@@ -142,41 +192,30 @@ class ClusterAdminController extends Controller
         $model = $this->findModel($id);
 
 
-        // Сохраним оригинальные значения до изменения
-        $originalClusterId = $model->cluster_id;
-        $originalAdminId = $model->admin_id;
+        $cluster = Cluster::findOne($model->cluster_id);
+        if (!$cluster) {
+            throw new NotFoundHttpException('Кластер не найден.');
+        }
 
         if ($this->request->isPost && $model->load($this->request->post())) {
-            // Если запись успешно обновлена
             if ($model->save()) {
-                // Проверяем, изменились ли cluster_id или admin_id
-                if ($originalClusterId != $model->cluster_id || $originalAdminId != $model->admin_id) {
-                    // Очищаем старую привязку менеджера к магазину
-                    ClusterManagerService::clearClusterManagerStores($originalClusterId, $originalAdminId);
-
-                    // Синхронизируем новую привязку
-                    ClusterManagerService::syncClusterManagers($model->cluster_id, $model->admin_id);
-                }
-
-                // Перенаправляем на страницу просмотра
-                return $this->redirect(['view', 'id' => $model->id]);
+                Yii::$app->session->setFlash('success', 'Запись успешно обновлена.');
+                return $this->redirect(['view', 'id' => $model->cluster_id]);
             } else {
                 Yii::$app->session->setFlash('error', 'Ошибка при сохранении данных.');
             }
         }
 
-        // Получение данных для выпадающих списков
-        $clusters = ArrayHelper::map(Cluster::find()->all(), 'id', 'name');
         $admins = ArrayHelper::map(Admin::find()
             ->select(['id', 'name'])
-            ->where(['IN', 'group_id', [7]]) // Только кустовые директора
+            ->where(['IN', 'group_id', [7]])
             ->all(), 'id', 'name');
 
         $user = Yii::$app->user->identity;
 
         return $this->render('update', [
             'model' => $model,
-            'clusters' => $clusters,
+            'cluster' => $cluster,
             'admins' => $admins,
             'user' => $user,
         ]);
diff --git a/erp24/migrations/m241018_114640_alter_table_cluster_admin_add_column_active.php b/erp24/migrations/m241018_114640_alter_table_cluster_admin_add_column_active.php
new file mode 100644 (file)
index 0000000..c3e1a27
--- /dev/null
@@ -0,0 +1,42 @@
+<?php
+
+use yii\db\Migration;
+
+/**
+ * Class m241018_114640_alter_table_cluster_admin_add_column_active
+ */
+class m241018_114640_alter_table_cluster_admin_add_column_active extends Migration
+{
+    const TABLE_NAME = 'erp24.cluster_admin';
+    /**
+     * {@inheritdoc}
+     */
+    public function safeUp()
+    {
+        $this->addColumn(self::TABLE_NAME, 'active', $this->tinyInteger()->notNull()->defaultValue(0)
+            ->after('date_end')->comment('0 - запись не активная 1 - запись привязки активная'));
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function safeDown()
+    {
+        $this->dropColumn(self::TABLE_NAME, 'active');
+    }
+
+    /*
+    // Use up()/down() to run migration code without a transaction.
+    public function up()
+    {
+
+    }
+
+    public function down()
+    {
+        echo "m241018_114640_alter_table_cluster_admin_add_column_active cannot be reverted.\n";
+
+        return false;
+    }
+    */
+}
index e43aa9b32d5439273537e53ef55ec6e93deda539..f5bd42abef1cb6ba45438caa2aea559789e24d11 100644 (file)
@@ -13,6 +13,7 @@ use yii\db\ActiveQuery;
  * @property int $admin_id ID пользователя
  * @property string $date_start Дата начала привязки
  * @property string $date_end Дата окончания привязки
+ * @property int $active Активность
  */
 class ClusterAdmin extends \yii\db\ActiveRecord
 {
@@ -31,7 +32,7 @@ class ClusterAdmin extends \yii\db\ActiveRecord
     {
         return [
             [['cluster_id', 'admin_id', 'date_start'], 'required'],
-            [['cluster_id', 'admin_id'], 'integer'],
+            [['cluster_id', 'admin_id', 'active'], 'integer'],
             [['date_start', 'date_end'], 'date', 'format' => 'php:Y-m-d'],
             ['date_end', 'compare', 'compareAttribute' => 'date_start',
                 'operator' => '>=', 'type' => 'date',
@@ -50,6 +51,7 @@ class ClusterAdmin extends \yii\db\ActiveRecord
             'admin_id' => 'Кустовой',
             'date_start' => 'Начало привязки',
             'date_end' => 'Окончание привязки',
+            'active' => 'Активность',
         ];
     }
 
@@ -63,4 +65,14 @@ class ClusterAdmin extends \yii\db\ActiveRecord
         return $this->hasOne(Admin::class, ['id' => 'admin_id']);
     }
 
-}
+    /**
+     * Устанавливаем значение активности по умолчанию
+     */
+    public function init()
+    {
+        parent::init();
+        if ($this->isNewRecord) {
+            $this->active = 1; // По умолчанию активная запись
+        }
+    }
+}
\ No newline at end of file
index 2b0feb00eb330b1e329943a2c89bb5dc6fc5bbbf..e3b69bdafd03be2c0b77feae7a78922b102833fc 100644 (file)
@@ -6,20 +6,17 @@ use yii\widgets\ActiveForm;
 
 use yii_app\records\ClusterAdmin;
 
-
 /** @var yii\web\View $this */
 /** @var ClusterAdmin $model */
 /** @var yii\widgets\ActiveForm $form */
-/** @var array $clusters */
+/** @var yii_app\records\Cluster $cluster */
 /** @var array $admins */
 /** @var yii_app\records\Admin $user */
 
-
-
 ?>
 
 <div class="cluster-admin-form">
-    <?php if(Yii::$app->session->hasFlash('error')) { ?>
+    <?php if (Yii::$app->session->hasFlash('error')) { ?>
         <div class="alert alert-danger" role="alert">
             <?= Yii::$app->session->getFlash('error') ?>
         </div>
@@ -28,13 +25,12 @@ use yii_app\records\ClusterAdmin;
     <div class="col-6">
         <?php $form = ActiveForm::begin(); ?>
 
-        <?= $form->field($model, 'cluster_id')->widget(Select2::class, [
-            'data' => $clusters,
-            'options' => ['placeholder' => 'Выберите куст...'],
-            'pluginOptions' => [
-                'allowClear' => true
-            ],
-        ]); ?>
+        <!-- Отображаем только имя кластера и скрытое поле для передачи cluster_id -->
+        <div class="form-group">
+            <label>Куст</label>
+            <input type="text" class="form-control" value="<?= Html::encode($cluster->name) ?>" readonly>
+            <?= $form->field($model, 'cluster_id')->hiddenInput(['value' => $cluster->id])->label(false) ?>
+        </div>
 
         <?= $form->field($model, 'admin_id')->widget(Select2::class, [
             'data' => $admins,
@@ -44,18 +40,18 @@ use yii_app\records\ClusterAdmin;
             ],
         ]); ?>
 
-        <?php if (in_array($user->group_id , [81])): ?>
-            <!-- Поля для группы 81 -->
+        <!-- Чекбокс для активности -->
+        <?= $form->field($model, 'active')->checkbox([
+            'label' => 'Активность',
+            'checked' => $model->isNewRecord ? true : boolval($model->active),
+        ]) ?>
+
+        <?php if (in_array($user->group_id, [81])): ?>
             <?= $form->field($model, 'date_start')->input('date', [
                 'value' => $model->date_start ?? date('Y-m-d'),
             ]) ?>
-
-
         <?php else: ?>
-            <!-- Скрытые поля для других пользователей, чтобы сохранить значение по умолчанию -->
             <?= $form->field($model, 'date_start')->hiddenInput(['value' => date('Y-m-d')])->label(false) ?>
-
-
         <?php endif; ?>
 
         <div class="form-group">
@@ -64,5 +60,7 @@ use yii_app\records\ClusterAdmin;
         </div>
 
         <?php ActiveForm::end(); ?>
+
+
     </div>
 </div>
\ No newline at end of file
index 9c5ed4f7ad381c04c16d837b856735be8a486760..2611e80462e90e41f05f2cbdf61be71f4d2e39b7 100644 (file)
@@ -5,11 +5,11 @@ use yii\helpers\Html;
 
 /** @var yii\web\View $this */
 /** @var yii_app\records\ClusterAdmin $model */
-/** @var array $clusters  */
+/** @var yii_app\records\Cluster $cluster */
 /** @var array $admins  */
 /** @var yii_app\records\Admin $user */
 
-$this->title = 'Создание привязки Куста к Кустовому';
+$this->title = 'Создание привязки Куста к Кустовому для ' . $cluster->name;
 $this->params['breadcrumbs'][] = ['label' => 'Cluster Admins', 'url' => ['index']];
 $this->params['breadcrumbs'][] = $this->title;
 ?>
@@ -19,7 +19,7 @@ $this->params['breadcrumbs'][] = $this->title;
 
     <?= $this->render('_form', [
         'model' => $model,
-        'clusters' => $clusters,
+        'cluster' => $cluster,
         'admins' => $admins,
         'user' => $user,
     ]) ?>
index e455c979d7e5233085c5f3c1c7576a791e8cb1aa..aacb358a3cbef841a1dfc5511f28c4eeab256eb7 100644 (file)
@@ -1,16 +1,10 @@
 <?php
 
-
-use yii_app\records\ClusterAdmin;
-use yii\helpers\Html;
-use yii\helpers\Url;
-use yii\grid\ActionColumn;
 use yii\grid\GridView;
+use yii\helpers\Html;
 
-/** @var yii\web\View $this */
-/** @var yii_app\records\ClusterAdminSearch $searchModel */
-/** @var yii\data\ActiveDataProvider $dataProvider */
-/** @var yii_app\records\Admin $user */
+/* @var $this yii\web\View */
+/* @var $clusterMapping array */
 
 $this->title = 'Привязка Куст-Кустовой';
 $this->params['breadcrumbs'][] = $this->title;
@@ -19,50 +13,53 @@ $this->params['breadcrumbs'][] = $this->title;
 
     <h1><?= Html::encode($this->title) ?></h1>
 
-    <p>
-        <?= Html::a('Создать новую привязку', ['create'], ['class' => 'btn btn-success']) ?>
-    </p>
-
-    <?php // echo $this->render('_search', ['model' => $searchModel]); ?>
-
     <?= GridView::widget([
-        'dataProvider' => $dataProvider,
-        'filterModel' => $searchModel,
+        'dataProvider' => new \yii\data\ArrayDataProvider([
+            'allModels' => $clusterMapping,
+            'pagination' => [
+                'pageSize' => 20,
+            ],
+        ]),
         'columns' => [
-            ['class' => 'yii\grid\SerialColumn'],
-
-            'id',
             [
-                'attribute' => 'cluster_id',
+                'attribute' => 'name',
+                'label' => 'Куст',
                 'value' => function ($model) {
-                    return $model->cluster ? $model->cluster->name . ' (' . $model->cluster_id . ')' : null;
+                    return Html::encode($model['name']);
                 },
+                'format' => 'raw',
             ],
             [
-                'attribute' => 'admin_id',
+                'attribute' => 'admin',
+                'label' => 'Кустовой',
                 'value' => function ($model) {
-                    return $model->admin ? $model->admin->name . ' (' . $model->admin_id . ')' : null;
+                    if ($model['status'] === 'Нет записей') {
+                        return Html::tag('span', 'Нет записей', ['style' => 'color: red;']);
+                    } elseif ($model['status'] === 'Нет активных записей') {
+                        return Html::tag('span', 'Нет активных записей', ['style' => 'color: orange;']);
+                    } else {
+                        return Html::encode($model['admin']);
+                    }
                 },
+                'format' => 'raw',
             ],
-            'date_start',
-            'date_end',
             [
-                'class' => ActionColumn::class,
-                'template' => '{view} {update} {delete}', // По умолчанию включаем все кнопки
-                'visibleButtons' => [
-                    'update' => function ($model) use ($user) {
-                        return in_array($user->group_id, [81]); // Показывать кнопку 'update' только для группы 81
+                'class' => 'yii\grid\ActionColumn',
+                'template' => '{view} {create}',
+                'buttons' => [
+                    'view' => function ($url, $model, $key) {
+                        return Html::a('Просмотреть', ['view', 'id' => $key], ['class' => 'btn btn-primary']);
                     },
-                    'delete' => function ($model) use ($user) {
-                        return in_array($user->group_id, [81]); // Показывать кнопку 'delete' только для группы 81
+                    'create' => function ($url, $model, $key) {
+                        // Показываем кнопку только если нет записей для кластера
+                        if ($model['status'] === 'Нет записей') {
+                            return Html::a('Создать новую привязку', ['create', 'cluster_id' => $key], ['class' => 'btn btn-success']);
+                        }
+                        return null;
                     },
                 ],
-                'urlCreator' => function ($action, ClusterAdmin $model, $key, $index, $column) {
-                    return Url::toRoute([$action, 'id' => $model->id]);
-                }
             ],
         ],
     ]); ?>
 
-
-</div>
+</div>
\ No newline at end of file
index 1d345309fd34ced5fab92824a0f36f2730e7b9fd..73bccad93d8d5b05754d15625453cedae346b333 100644 (file)
@@ -5,11 +5,11 @@ use yii\helpers\Html;
 
 /** @var yii\web\View $this */
 /** @var yii_app\records\ClusterAdmin $model */
-/** @var array $clusters  */
+/** @var yii_app\records\Cluster $cluster */
 /** @var array $admins  */
 /** @var yii_app\records\Admin $user */
 
-$this->title = 'Редактирование привязки куста к кустовому: ' . $model->id;
+$this->title = 'Редактирование привязки куста к кустовому: ' . $cluster->name;
 $this->params['breadcrumbs'][] = ['label' => 'Cluster Admins', 'url' => ['index']];
 $this->params['breadcrumbs'][] = ['label' => $model->id, 'url' => ['view', 'id' => $model->id]];
 $this->params['breadcrumbs'][] = 'Update';
@@ -20,7 +20,7 @@ $this->params['breadcrumbs'][] = 'Update';
 
     <?= $this->render('_form', [
         'model' => $model,
-        'clusters' => $clusters,
+        'cluster' => $cluster,
         'admins' => $admins,
         'user' => $user,
     ]) ?>
index 3a41c27814c646da1651e71b614bea5d48a91bb8..e5778c92056860d87c62013b3f52a31fa9ed3788 100644 (file)
@@ -2,53 +2,83 @@
 
 use yii\helpers\Html;
 use yii\widgets\DetailView;
+use yii\grid\GridView;
+use yii\data\ArrayDataProvider;
 
 /** @var yii\web\View $this */
-/** @var yii_app\records\ClusterAdmin $model */
+/** @var yii_app\records\Cluster $cluster */
+/** @var array $clusterAdmins */
 /** @var yii_app\records\Admin $user */
 
-$this->title = "Ð\9fÑ\80ивÑ\8fзка ÐºÑ\83Ñ\81Ñ\82ового Ðº ÐºÑ\83Ñ\81Ñ\82Ñ\83 â\84\96" . $model->id . " Ð¾Ñ\82 " . $model->date_start;
+$this->title = "Ð\94еÑ\82али ÐºÐ»Ð°Ñ\81Ñ\82еÑ\80а: " . $cluster->name;
 $this->params['breadcrumbs'][] = ['label' => 'Cluster Admins', 'url' => ['index']];
 $this->params['breadcrumbs'][] = $this->title;
 \yii\web\YiiAsset::register($this);
 ?>
 <div class="cluster-admin-view p-4">
+
     <?= Html::a('Назад', ['index'], ['class' => 'btn btn-danger my-2']) ?>
     <h1><?= Html::encode($this->title) ?></h1>
 
-
     <p>
         <?php if (in_array($user->group_id, [81])): ?> <!-- Проверяем, принадлежит ли пользователь к группе 81 -->
-            <?= Html::a('Изменить', ['update', 'id' => $model->id], ['class' => 'btn btn-primary']) ?>
-            <?= Html::a('Удалить', ['delete', 'id' => $model->id], [
-                'class' => 'btn btn-danger',
-                'data' => [
-                    'confirm' => 'Вы уверены что хотите удалить запись?',
-                    'method' => 'post',
-                ],
-            ]) ?>
+            <?= Html::a('Создать новую привязку', ['create', 'cluster_id' => $cluster->id], ['class' => 'btn btn-success']) ?>
         <?php endif; ?>
     </p>
 
-    <?= DetailView::widget([
-        'model' => $model,
-        'attributes' => [
-            'id',
+
+
+    <h2>Привязки кустового к кусту</h2>
+
+    <?= GridView::widget([
+        'dataProvider' => new ArrayDataProvider([
+            'allModels' => $clusterAdmins,
+            'pagination' => [
+                'pageSize' => 10,
+            ],
+        ]),
+        'columns' => [
             [
-                'attribute' => 'cluster_id',
+                'attribute' => 'admin_id',
+                'label' => 'Кустовой',
                 'value' => function ($model) {
-                    return $model->cluster ? $model->cluster->name . ' (' . $model->cluster_id . ')' : null;
+                    return $model->admin ? $model->admin->name . ' (' . $model->admin_id . ')' : 'Не назначен';
                 },
             ],
             [
-                'attribute' => 'admin_id',
+                'attribute' => 'active',
+                'label' => 'Активность',
+                'format' => 'raw',
                 'value' => function ($model) {
-                    return $model->admin ? $model->admin->name . ' (' . $model->admin_id . ')' : null;
+                    return $model->active == 1
+                        ? Html::tag('span', 'Активен', ['style' => 'color: green;'])
+                        : Html::tag('span', 'Неактивен', ['style' => 'color: red;']);
                 },
             ],
             'date_start',
-            'date_end',
+            [
+                'attribute' => 'date_end',
+                'label' => 'Дата окончания',
+                'value' => function ($model) {
+                    return $model->active == 0 ? $model->date_end : '-';
+                },
+            ],
+            [
+                'class' => 'yii\grid\ActionColumn',
+                'template' => '{update} {delete}',
+                'visibleButtons' => [
+                    'update' => function ($model) use ($user) {
+                        return in_array($user->group_id, [81]);
+                    },
+                    'delete' => function ($model) use ($user) {
+                        return in_array($user->group_id, [81]);
+                    },
+                ],
+                'urlCreator' => function ($action, $model, $key, $index) {
+                    return [$action, 'id' => $model->id];
+                },
+            ],
         ],
-    ]) ?>
+    ]); ?>
 
-</div>
+</div>
\ No newline at end of file