diff --git a/Layout/default/Device/Detail.php b/Layout/default/Device/Detail.php
index cc3b26240..afa91e9b1 100644
--- a/Layout/default/Device/Detail.php
+++ b/Layout/default/Device/Detail.php
@@ -408,7 +408,7 @@ foreach ($devicesall as $deviceall) {
success == "true" && $devicesconfig->data > 0) {
+ if ($devicesconfig->success == "true" && $devicesconfig->data) {
?>
@@ -711,7 +711,7 @@ foreach ($devicesall as $deviceall) {
-devicetype->devicemanufactor->config_backup > 0):
+devicetype->devicemanufactor->config_backup > count()):
$year = date("Y", time());
$month = date("n", time());
diff --git a/scripts/fiberplan/sync_preorder_qgis.php b/scripts/fiberplan/sync_preorder_qgis.php
index 16f416cfc..202058038 100644
--- a/scripts/fiberplan/sync_preorder_qgis.php
+++ b/scripts/fiberplan/sync_preorder_qgis.php
@@ -14,9 +14,33 @@ $pgPort = '5432';
$pgDb = QGIS_DBNAME;
$pgUser = QGIS_DBUSER;
$pgPass = QGIS_DBPASS;
-$targetSchema = '"ON Leibnitz"';
+
$targetTable = 'Preorders';
+
+$campaigns = [
+ [
+ 'targetSchema' => '"ON Leibnitz"',
+ 'campaignId' => 99
+ ],
+ [
+ 'targetSchema' => '"ON Semriach"',
+ 'campaignId' => 101
+ ],
+ [
+ 'targetSchema' => '"ON Bad Gleichenberg"',
+ 'campaignId' => 108
+ ],
+ [
+ 'targetSchema' => '"ON Straden"',
+ 'campaignId' => 107
+ ],
+ [
+ 'targetSchema' => '"ON St.Anna am Aigen"',
+ 'campaignId' => 106
+ ]
+];
+
define("INTERNAL_USER_ID", 154);
class PreorderSyncWrapper extends PreorderController {
@@ -32,24 +56,6 @@ class PreorderSyncWrapper extends PreorderController {
}
}
-$apiParams = [
- 'mod' => 'Preorder',
- 'action' => 'api',
- 'do' => 'getFilteredPreorders',
- 'filter' => [
- 'preordercampaign_id' => 99
- ]
-];
-
-new PreorderSyncWrapper($apiParams);
-$response = PreorderSyncWrapper::$capturedResult;
-
-if (!$response || !isset($response['status']) || $response['status'] !== 'OK') {
- die("Fehler beim Abrufen der Daten oder keine Daten erhalten.\n");
-}
-
-$preorders = $response['result']['preorders'] ?? [];
-
try {
$dsn = "pgsql:host=$pgHost;port=$pgPort;dbname=$pgDb";
$pdo = new PDO($dsn, $pgUser, $pgPass, [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]);
@@ -57,9 +63,33 @@ try {
die("Verbindung zu PostgreSQL fehlgeschlagen: " . $e->getMessage() . "\n");
}
-$pdo->exec("CREATE SCHEMA IF NOT EXISTS $targetSchema");
+foreach ($campaigns as $campaign) {
+ $targetSchema = $campaign['targetSchema'];
+ $campaignId = $campaign['campaignId'];
-$createTableSql = << 'Preorder',
+ 'action' => 'api',
+ 'do' => 'getFilteredPreorders',
+ 'filter' => [
+ 'preordercampaign_id' => $campaignId
+ ]
+ ];
+
+ PreorderSyncWrapper::$capturedResult = null;
+ new PreorderSyncWrapper($apiParams);
+ $response = PreorderSyncWrapper::$capturedResult;
+
+ if (!$response || !isset($response['status']) || $response['status'] !== 'OK') {
+ echo "Fehler beim Abrufen der Daten oder keine Daten erhalten fuer Schema $targetSchema (ID: $campaignId).\n";
+ continue;
+ }
+
+ $preorders = $response['result']['preorders'] ?? [];
+
+ $pdo->exec("CREATE SCHEMA IF NOT EXISTS $targetSchema");
+
+ $createTableSql = <<exec($createTableSql);
+ $pdo->exec($createTableSql);
-$pdo->exec("ALTER TABLE $targetSchema.\"$targetTable\" ADD COLUMN IF NOT EXISTS company VARCHAR(255)");
-$pdo->exec("ALTER TABLE $targetSchema.\"$targetTable\" ADD COLUMN IF NOT EXISTS firstname VARCHAR(255)");
-$pdo->exec("ALTER TABLE $targetSchema.\"$targetTable\" ADD COLUMN IF NOT EXISTS lastname VARCHAR(255)");
-$pdo->exec("ALTER TABLE $targetSchema.\"$targetTable\" ADD COLUMN IF NOT EXISTS phone VARCHAR(100)");
-$pdo->exec("ALTER TABLE $targetSchema.\"$targetTable\" ADD COLUMN IF NOT EXISTS email VARCHAR(255)");
-$pdo->exec("ALTER TABLE $targetSchema.\"$targetTable\" ADD COLUMN IF NOT EXISTS status_code INTEGER");
-$pdo->exec("ALTER TABLE $targetSchema.\"$targetTable\" ADD COLUMN IF NOT EXISTS status_id INTEGER");
-$pdo->exec("ALTER TABLE $targetSchema.\"$targetTable\" ADD COLUMN IF NOT EXISTS oaid VARCHAR(255)");
+ $pdo->exec("ALTER TABLE $targetSchema.\"$targetTable\" ADD COLUMN IF NOT EXISTS company VARCHAR(255)");
+ $pdo->exec("ALTER TABLE $targetSchema.\"$targetTable\" ADD COLUMN IF NOT EXISTS firstname VARCHAR(255)");
+ $pdo->exec("ALTER TABLE $targetSchema.\"$targetTable\" ADD COLUMN IF NOT EXISTS lastname VARCHAR(255)");
+ $pdo->exec("ALTER TABLE $targetSchema.\"$targetTable\" ADD COLUMN IF NOT EXISTS phone VARCHAR(100)");
+ $pdo->exec("ALTER TABLE $targetSchema.\"$targetTable\" ADD COLUMN IF NOT EXISTS email VARCHAR(255)");
+ $pdo->exec("ALTER TABLE $targetSchema.\"$targetTable\" ADD COLUMN IF NOT EXISTS status_code INTEGER");
+ $pdo->exec("ALTER TABLE $targetSchema.\"$targetTable\" ADD COLUMN IF NOT EXISTS status_id INTEGER");
+ $pdo->exec("ALTER TABLE $targetSchema.\"$targetTable\" ADD COLUMN IF NOT EXISTS oaid VARCHAR(255)");
-$sqlUpsert = <<prepare($sqlUpsert);
+ $stmt = $pdo->prepare($sqlUpsert);
-$processedIds = [];
-$countUpsert = 0;
-$countUnchanged = 0;
-$countSkipped = 0;
+ $processedIds = [];
+ $countUpsert = 0;
+ $countUnchanged = 0;
+ $countSkipped = 0;
-$pdo->beginTransaction();
+ $pdo->beginTransaction();
-foreach ($preorders as $po) {
- $id = $po->id;
- $gps_lat = $po->gps_lat;
- $gps_long = $po->gps_long;
+ foreach ($preorders as $po) {
+ $id = $po->id;
+ $gps_lat = $po->gps_lat;
+ $gps_long = $po->gps_long;
- if (empty($gps_lat) || empty($gps_long)) {
- $countSkipped++;
- continue;
+ if (empty($gps_lat) || empty($gps_long)) {
+ $countSkipped++;
+ continue;
+ }
+
+ $latVal = str_replace(',', '.', $gps_lat);
+ $lonVal = str_replace(',', '.', $gps_long);
+
+ $params = [
+ ':id' => $id,
+ ':type' => $po->type,
+ ':type_label' => $po->type_label,
+ ':strasse' => $po->adb_strasse,
+ ':hausnummer' => $po->adb_hausnummer,
+ ':plz' => $po->adb_plz,
+ ':ort' => $po->adb_ort,
+ ':company' => $po->company,
+ ':firstname' => $po->firstname,
+ ':lastname' => $po->lastname,
+ ':phone' => $po->phone,
+ ':email' => $po->email,
+ ':status_code' => $po->status_code,
+ ':status_id' => $po->status_id,
+ ':oaid' => $po->oaid,
+ ':lat' => $latVal,
+ ':lon' => $lonVal
+ ];
+
+ $stmt->execute($params);
+ $processedIds[] = $id;
+ if ($stmt->rowCount() > 0) {
+ $countUpsert++;
+ } else {
+ $countUnchanged++;
+ }
}
- $latVal = str_replace(',', '.', $gps_lat);
- $lonVal = str_replace(',', '.', $gps_long);
-
- $params = [
- ':id' => $id,
- ':type' => $po->type,
- ':type_label' => $po->type_label,
- ':strasse' => $po->adb_strasse,
- ':hausnummer' => $po->adb_hausnummer,
- ':plz' => $po->adb_plz,
- ':ort' => $po->adb_ort,
- ':company' => $po->company,
- ':firstname' => $po->firstname,
- ':lastname' => $po->lastname,
- ':phone' => $po->phone,
- ':email' => $po->email,
- ':status_code' => $po->status_code,
- ':status_id' => $po->status_id,
- ':oaid' => $po->oaid,
- ':lat' => $latVal,
- ':lon' => $lonVal
- ];
-
- $stmt->execute($params);
- $processedIds[] = $id;
- if ($stmt->rowCount() > 0) {
- $countUpsert++;
+ $deletedCount = 0;
+ if (!empty($processedIds)) {
+ $inQuery = implode(',', array_map('intval', $processedIds));
+ $deleteSql = "DELETE FROM $targetSchema.\"$targetTable\" WHERE id NOT IN ($inQuery)";
+ $deletedCount = $pdo->exec($deleteSql);
} else {
- $countUnchanged++;
+
+ if (count($preorders) == 0) {
+ }
}
+
+ $pdo->commit();
}
-
-$deletedCount = 0;
-if (!empty($processedIds)) {
- $inQuery = implode(',', array_map('intval', $processedIds));
- $deleteSql = "DELETE FROM $targetSchema.\"$targetTable\" WHERE id NOT IN ($inQuery)";
- $deletedCount = $pdo->exec($deleteSql);
-} else {
-
- if (count($preorders) == 0) {
- }
-}
-
-$pdo->commit();
-
-//echo "Sync fertig.\n";
-//echo "Neu erstellt oder aktualisiert: $countUpsert\n";
-//echo "Unverändert (kein Update nötig): $countUnchanged\n";
-//echo "Ohne Koordinaten (übersprungen): $countSkipped\n";
-//echo "Gelöscht (nicht mehr in Quelle): $deletedCount\n";
\ No newline at end of file