From: vladfo Date: Wed, 16 Oct 2024 12:14:11 +0000 (+0300) Subject: Закрытие записи по кластеру при добавлении X-Git-Tag: 1.7~228^2~36 X-Git-Url: https://gitweb.erp-flowers.ru/?a=commitdiff_plain;h=cb0d4cd0af7455eca561578c3bb5a075337a8f27;p=erp24_rep%2Fyii-erp24%2F.git Закрытие записи по кластеру при добавлении --- diff --git a/erp24/controllers/crud/ClusterAdminController.php b/erp24/controllers/crud/ClusterAdminController.php index 4fbfd922..d27599f6 100644 --- a/erp24/controllers/crud/ClusterAdminController.php +++ b/erp24/controllers/crud/ClusterAdminController.php @@ -78,31 +78,36 @@ class ClusterAdminController extends Controller $model = new ClusterAdmin(); if ($this->request->isPost && $model->load($this->request->post())) { - // Проверка на существование записи с такими же cluster_id и admin_id и date_end > текущей даты + // Проверка на существование записи с такими же cluster_id и date_end >= текущей даты или date_end = '2100-01-01' $existingRecord = ClusterAdmin::find() - ->where(['cluster_id' => $model->cluster_id, 'admin_id' => $model->admin_id]) - ->andWhere(['>', 'date_end', date('Y-m-d')]) + ->where(['cluster_id' => $model->cluster_id]) + ->andWhere(['or', ['>=', 'date_end', date('Y-m-d')], ['date_end' => '2100-01-01']]) ->one(); if ($existingRecord) { - Yii::$app->session->setFlash('error', 'Запись с таким кустом и кустовым уже существует и ещё актуальна.'); - } else { - // Проверка на пересечение дат - $overlappingRecord = ClusterAdmin::find() - ->where(['cluster_id' => $model->cluster_id, 'admin_id' => $model->admin_id]) - ->andWhere(['<=', 'date_start', $model->date_start]) - ->andWhere(['>=', 'date_end', $model->date_start]) - ->one(); - - if ($overlappingRecord) { - Yii::$app->session->setFlash('error', 'Дата начала пересекается с существующей записью.'); + // Обновляем дату окончания для текущей записи на текущую дату + $existingRecord->date_end = date('Y-m-d'); + if (!$existingRecord->save()) { + Yii::$app->session->setFlash('error', 'Ошибка при обновлении существующей записи.'); + return $this->redirect(['create']); + } + + // Создаём новую запись для cluster_id и admin_id + $model->date_start = date('Y-m-d'); // Опционально установить текущую дату как начало новой привязки + if ($model->save()) { + Yii::$app->session->setFlash('success', 'Новая запись успешно создана, предыдущая была закрыта.'); + return $this->redirect(['view', 'id' => $model->id]); } else { - if ($model->save()) { - return $this->redirect(['view', 'id' => $model->id]); - } + Yii::$app->session->setFlash('error', 'Ошибка при создании новой записи.'); + } + } else { + // Если такой записи нет, просто создаем новую + if ($model->save()) { + return $this->redirect(['view', 'id' => $model->id]); } } } + // Получение данных для выпадающих списков $clusters = ArrayHelper::map(Cluster::find()->all(), 'id', 'name'); $admins = ArrayHelper::map(Admin::find()