]> gitweb.erp-flowers.ru Git - erp24_rep/yii-erp24/.git/commitdiff
Добавление softDelete в воркбот origin/feature_fomichev_erp-277_add_soft_delete_to_timetable
authorfomichev <vladimir.fomichev@erp-flowers.ru>
Wed, 22 Jan 2025 10:22:41 +0000 (13:22 +0300)
committerfomichev <vladimir.fomichev@erp-flowers.ru>
Wed, 22 Jan 2025 10:22:41 +0000 (13:22 +0300)
erp24/api3/core/services/TimetableService.php
erp24/api3/modules/v1/models/timetable/Timetable.php
erp24/records/TimetablePlan.php
erp24/records/TimetableV3.php
erp24/traits/SoftDeleteTrait.php

index 7ce830080def102e11c30185f8a2ed234060caaf..48d4167c24baafb5b42e2de53122e44f0b3d879e 100644 (file)
@@ -268,7 +268,7 @@ class TimetableService
 
             $timetableWorkbot->save();
 
-            return (bool)$timetable->softDelete();
+            return (bool)$timetable->softDelete($removed_by);
         }
         return false;
     }
index 8c483411e9da03713f0f3f51ba2c0880ad79a2aa..3777f3aa02884cb38cc78afcf9ff2c2853e4c6d5 100644 (file)
@@ -194,4 +194,16 @@ class Timetable extends \yii_app\records\TimetableV3
     public function getCheckInCount() {
         return $this->hasMany(AdminCheckin::class, ['plan_id' => 'id'])->count();
     }
-}
\ No newline at end of file
+
+    public function softDelete($deleted_by = null)
+    {
+        $existingFact = TimetableFactModel::findOne(['plan_id' => $this->id]);
+
+        if ($existingFact) {
+            return false;
+        }
+
+        return parent::softDelete($deleted_by);
+    }
+
+}
index b40c9ca1912107224a6384f416b9c98cb99f3909..763696cf2a95238591f09c560ce72d1581d48440 100755 (executable)
@@ -146,15 +146,15 @@ class TimetablePlan extends Timetable
         return $this->fact->getDateTimeEnd() < $this->getDateTimeEnd();
     }
 
-    public function softDelete()
+    public function softDelete($deleted_by = null)
     {
         $existingFact = TimetableFactModel::findOne(['plan_id' => $this->id]);
-//var_dump($existingFact); die();
+
         if ($existingFact) {
             Yii::$app->session->setFlash('error', 'Невозможно удалить запись плановой смены для которой существует факт смены.');
             return false;
         }
 
-        return parent::softDelete();
+        return parent::softDelete($deleted_by);
     }
 }
index 8bb651508e771d07ee8fe4bba17b5bf333af548a..cf08782aadfcae9ba887a28d9dd17870f90b70a7 100755 (executable)
@@ -5,6 +5,7 @@ namespace yii_app\records;
 
 use yii\db\ActiveQuery;
 use yii\db\ActiveRecord;
+use yii_app\traits\SoftDeleteTrait;
 
 /**
  * Табель сотрудников
@@ -36,6 +37,7 @@ use yii\db\ActiveRecord;
  */
 class TimetableV3 extends ActiveRecord
 {
+    use SoftDeleteTrait;
     const STATUS_PENDING = 0;
     const STATUS_VERIFIED = 1;
 
@@ -331,4 +333,18 @@ class TimetableV3 extends ActiveRecord
     {
         return $this->hasOne(Shift::class, ['id' => 'shift_id']);
     }
-}
\ No newline at end of file
+
+    public static function hasSoftDelete(): bool
+    {
+        return true;
+    }
+
+    public static function find()
+    {
+        $query = parent::find();
+        if (static::hasSoftDelete()) {
+            $query->andWhere(['timetable.active' => 1]);
+        }
+        return $query;
+    }
+}
index 6fd45fedc507331e11f5dda984b93634129fe95d..9a44b8854d7f178b4bb009814775a662c94a6e4d 100644 (file)
@@ -9,11 +9,12 @@ trait SoftDeleteTrait
     /**
      * Удаление записи (soft delete).
      */
-    public function softDelete()
+    public function softDelete($deleted_by = null)
     {
         $admin = Yii::$app->user->identity;
+        $adminId = $deleted_by ?? $admin->id;
         $this->active = 0;
-        $this->deleted_by = $admin->id;
+        $this->deleted_by = $adminId;
         $this->deleted_at = date('Y-m-d H:i:s');
         return $this->save(false, ['active', 'deleted_by', 'deleted_at']);
     }