]> gitweb.erp-flowers.ru Git - erp24_rep/yii-erp24/.git/commitdiff
Изменение мягкого удаления
authorfomichev <vladimir.fomichev@erp-flowers.ru>
Tue, 14 Jan 2025 09:31:22 +0000 (12:31 +0300)
committerfomichev <vladimir.fomichev@erp-flowers.ru>
Tue, 14 Jan 2025 09:31:22 +0000 (12:31 +0300)
erp24/migrations/m250113_104214_add_deleted_at_column_to_timetable.php
erp24/records/Timetable.php
erp24/traits/SoftDeleteTrait.php

index 85870adf5ae01d9ccf6ac21f8a1c1c7a5c9def3e..00bc9655e1a319b6322c5b95e1b9650f90b948b7 100644 (file)
@@ -17,8 +17,22 @@ class m250113_104214_add_deleted_at_column_to_timetable extends Migration
             return;
         }
 
-        if ($this->db->schema->getTableSchema(self::TABLE_NAME)->getColumn('deleted_at') === null) {
-            $this->addColumn(self::TABLE_NAME, 'deleted_at', $this->timestamp()->null()->defaultValue(null)->comment('Дата мягкого удаления'));
+        if ($this->db->schema->getTableSchema(self::TABLE_NAME)->getColumn('active') === null) {
+            $this->addColumn(
+                self::TABLE_NAME,
+                'active',
+                $this->tinyInteger()->notNull()->defaultValue(1)->comment('Активность')
+            );
+            $this->addColumn(
+                self::TABLE_NAME,
+                'deleted_by',
+                $this->integer()->null()->comment('Пользователь, удаливший запись')
+            );
+            $this->addColumn(
+                self::TABLE_NAME,
+                'deleted_at',
+                $this->timestamp()->null()->defaultValue(null)->comment('Дата мягкого удаления')
+            );
         }
     }
 
@@ -31,7 +45,9 @@ class m250113_104214_add_deleted_at_column_to_timetable extends Migration
             return;
         }
 
-        if ($this->db->schema->getTableSchema(self::TABLE_NAME)->getColumn('deleted_at') !== null) {
+        if ($this->db->schema->getTableSchema(self::TABLE_NAME)->getColumn('active') !== null) {
+            $this->dropColumn(self::TABLE_NAME, 'active');
+            $this->dropColumn(self::TABLE_NAME, 'deleted_by');
             $this->dropColumn(self::TABLE_NAME, 'deleted_at');
         }
     }
index 2d4f2709f1f6900af9ee5274c85d376d093a8fe1..70e8a97febb78e100eb6b5f358975de15b7b4fa9 100755 (executable)
@@ -35,6 +35,9 @@ use yii_app\traits\SoftDeleteTrait;
  * @property AdminGroup $position Должность работника
  * @property Admin $admin работник
  * @property Admin $addedBy добавивший пользователь
+ * @property Admin $deleted_by удаливший пользователь
+ * @property int $active активность
+ * @property string $deleted_at время удаления
  * @package yii_app\records
  */
 class Timetable extends ActiveRecord
@@ -491,7 +494,7 @@ class Timetable extends ActiveRecord
     {
         $query = parent::find();
         if (static::hasSoftDelete()) {
-            $query->andWhere(['deleted_at' => null]);
+            $query->andWhere(['active' => 1]);
         }
         return $query;
     }
index 22fed05d30278674debb97680ffab7a623eb73d4..40b0a3bd43abd5ccb33838c32c69908face0a5c0 100644 (file)
@@ -1,6 +1,7 @@
 <?php
 namespace yii_app\traits;
 
+use Yii;
 use yii\db\ActiveQuery;
 
 trait SoftDeleteTrait
@@ -10,8 +11,11 @@ trait SoftDeleteTrait
      */
     public function softDelete()
     {
+        $admin = Yii::$app->user->identity;
+        $this->active = 0;
+        $this->deleted_by = $admin->id;
         $this->deleted_at = date('Y-m-d H:i:s');
-        return $this->save(false, ['deleted_at']);
+        return $this->save(false, ['active', 'deleted_admin_id', 'deleted_at']);
     }
 
     /**
@@ -19,8 +23,10 @@ trait SoftDeleteTrait
      */
     public function restore()
     {
+        $this->active = 1;
+        $this->deleted_by = null;
         $this->deleted_at = null;
-        return $this->save(false, ['deleted_at']);
+        return $this->save(false, ['active', 'deleted_admin_id', 'deleted_at']);
     }
 
     /**
@@ -28,6 +34,6 @@ trait SoftDeleteTrait
      */
     public function isDeleted(): bool
     {
-        return $this->deleted_at !== null;
+        return $this->active === 0;
     }
-}
\ No newline at end of file
+}