diff --git a/src/Controllers/ServerDetailController.php b/src/Controllers/ServerDetailController.php index 042c5a8..c8df1c5 100755 --- a/src/Controllers/ServerDetailController.php +++ b/src/Controllers/ServerDetailController.php @@ -297,36 +297,44 @@ class ServerDetailController extends Model VALUES (:server_id, :metric_name_id, :warning_threshold, :critical_threshold, :duration) "); + // Дефолтные значения порогов (пока хардкод, потом из настроек) + $defaultWarning = 80; + $defaultCritical = 90; + $defaultDuration = 0; + $saved = []; - $partial = []; + $usedDefaults = []; foreach ($metricTypes as $metricType) { $warning = $params[$metricType['name'] . '_warning'] ?? ''; $critical = $params[$metricType['name'] . '_critical'] ?? ''; - $duration = (int)($params[$metricType['name'] . '_duration'] ?? 0); + $duration = $params[$metricType['name'] . '_duration'] ?? ''; // Сохраняем если хотя бы один порог заполнен if ($warning !== '' || $critical !== '') { - // Если не указано - ставим NULL - $warningVal = $warning !== '' ? (float)$warning : null; - $criticalVal = $critical !== '' ? (float)$critical : null; + // Если не указано - используем дефолт + $warningVal = $warning !== '' ? (float)$warning : $defaultWarning; + $criticalVal = $critical !== '' ? (float)$critical : $defaultCritical; + $durationVal = $duration !== '' ? (int)$duration : $defaultDuration; $insertStmt->execute([ ':server_id' => $id, ':metric_name_id' => $metricType['id'], ':warning_threshold' => $warningVal, ':critical_threshold' => $criticalVal, - ':duration' => $duration + ':duration' => $durationVal ]); $name = $metricType['name']; - if ($warningVal !== null && $criticalVal !== null) { - $saved[] = $name; + $used = []; + if ($warning === '') $used[] = 'warning=' . $defaultWarning; + if ($critical === '') $used[] = 'critical=' . $defaultCritical; + if ($duration === '') $used[] = 'duration=' . $defaultDuration; + + if (count($used) > 0) { + $usedDefaults[] = $name . ' (' . implode(', ', $used) . ')'; } else { - $missing = []; - if ($warningVal === null) $missing[] = 'warning'; - if ($criticalVal === null) $missing[] = 'critical'; - $partial[] = $name . ' (нет: ' . implode(', ', $missing) . ')'; + $saved[] = $name; } } } @@ -336,15 +344,15 @@ class ServerDetailController extends Model if (count($saved) > 0) { $messages[] = 'Сохранено: ' . implode(', ', $saved); } - if (count($partial) > 0) { - $messages[] = 'Сохранено частично (используются значения по умолчанию): ' . implode(', ', $partial); + if (count($usedDefaults) > 0) { + $messages[] = 'Для остальных подставлены значения по умолчанию: ' . implode(', ', $usedDefaults); } if (count($messages) === 0) { $messages[] = 'Все пороги удалены'; } $_SESSION['flash_message'] = implode('. ', $messages); - $_SESSION['flash_type'] = count($partial) > 0 ? 'warning' : 'success'; + $_SESSION['flash_type'] = count($usedDefaults) > 0 ? 'warning' : 'success'; return $response->withHeader('Location', "/servers/{$id}?tab=thresholds")->withStatus(302); }