]> gitweb.erp-flowers.ru Git - erp24_rep/yii-erp24/.git/commitdiff
Сохранение интервалов
authorVladimir Fomichev <vladimir.fomichev@erp-flowers.ru>
Wed, 10 Sep 2025 12:10:53 +0000 (15:10 +0300)
committerVladimir Fomichev <vladimir.fomichev@erp-flowers.ru>
Wed, 10 Sep 2025 12:10:53 +0000 (15:10 +0300)
erp24/controllers/MatrixBouquetActualityController.php

index 1e189f9deee9769380a3862f640042a7252d7baa..ebc5696d498f0be62edd56b522305c28d51c42fa 100644 (file)
@@ -324,19 +324,18 @@ class MatrixBouquetActualityController extends Controller
             $bouquetId = $row['bouquet_id'];
 
 
-
             $fromAdj = (clone $fromDate)->modify('-1 second')->format('Y-m-d H:i:s');
-            $toAdj   = (clone $toDate)->modify('+1 second')->format('Y-m-d H:i:s');
+            $toAdj = (clone $toDate)->modify('+1 second')->format('Y-m-d H:i:s');
 
-            /** @var MatrixBouquetActuality[] $hits */
-            $hits = MatrixBouquetActuality::find()
+            /** @var MatrixBouquetActuality[] $actualities */
+            $actualities = MatrixBouquetActuality::find()
                 ->where(['bouquet_id' => $bouquetId])
                 ->andWhere('date_to   >= :fromAdj', [':fromAdj' => $fromAdj])
-                ->andWhere('date_from <= :toAdj',   [':toAdj'   => $toAdj])
+                ->andWhere('date_from <= :toAdj', [':toAdj' => $toAdj])
                 ->orderBy(['date_from' => SORT_ASC])
                 ->all();
 
-            if (empty($hits)) {
+            if (empty($actualities)) {
                 $new = new MatrixBouquetActuality([
                     'guid' => $guid,
                     'bouquet_id' => $bouquetId,
@@ -352,16 +351,9 @@ class MatrixBouquetActualityController extends Controller
                 continue;
             }
 
-            $minFrom = $from;
-            $maxTo   = $to;
-            foreach ($hits as $h) {
-                if ($h->date_from < $minFrom) { $minFrom = $h->date_from; }
-                if ($h->date_to   > $maxTo)   { $maxTo   = $h->date_to;   }
-            }
-
-            $master = array_shift($hits);
-            $master->date_from = $minFrom;
-            $master->date_to = $maxTo;
+            $master = array_shift($actualities);
+            $master->date_from = $from;
+            $master->date_to = $to;
             $master->updated_at = $now;
             $master->updated_by = $userId;
 
@@ -369,48 +361,9 @@ class MatrixBouquetActualityController extends Controller
                 Yii::error("Ошибка обновления GUID={$guid}: " . json_encode($master->getErrors(), JSON_UNESCAPED_UNICODE));
             }
 
-            foreach ($hits as $dup) {
-                $dup->delete();
-            }
-
-            while (true) {
-                $leftBound  = (new \DateTime($master->date_from))->modify('-1 second')->format('Y-m-d H:i:s');
-                $rightBound = (new \DateTime($master->date_to))->modify('+1 second')->format('Y-m-d H:i:s');
-
-                /** @var MatrixBouquetActuality[] $neighbors */
-                $neighbors = MatrixBouquetActuality::find()
-                    ->where(['guid' => $guid])
-                    ->andWhere(['<>', 'id', $master->id])
-                    ->andWhere('date_to   >= :leftBound',  [':leftBound'  => $leftBound])
-                    ->andWhere('date_from <= :rightBound', [':rightBound' => $rightBound])
-                    ->orderBy(['date_from' => SORT_ASC])
-                    ->all();
-
-                if (empty($neighbors)) {
-                    break;
-                }
-
-                foreach ($neighbors as $nei) {
-                    if ($nei->date_from < $master->date_from)
-                    {
-                        $master->date_from = $nei->date_from;
-                    }
-                    if ($nei->date_to   > $master->date_to)
-                    {
-                        $master->date_to   = $nei->date_to;
-                    }
-                }
-                $master->updated_at = $now;
-                $master->updated_by = $userId;
-
-                if (!$master->save()) {
-                    Yii::error("Ошибка повторного обновления GUID={$guid}: " . json_encode($master->getErrors(), JSON_UNESCAPED_UNICODE));
-                    break;
-                }
-
-                foreach ($neighbors as $nei) {
-                    $nei->delete();
-                }
+            foreach ($actualities as $actuality) {
+                /** @var MatrixBouquetActuality $actuality */
+                $actuality->delete();
             }
         }
     }