From 9aecd18da5bd3f1c3a0a4dcded9a8b6107d36742 Mon Sep 17 00:00:00 2001 From: Frank Schubert Date: Tue, 5 Aug 2025 14:52:29 +0200 Subject: [PATCH] citycom import now saves service_number and status to PreorderCtag --- application/PreorderCtag/PreorderCtag.php | 39 ++++++++++++-- scripts/adb-rimo-import/importer/citycom.php | 57 +++++++++++++------- 2 files changed, 74 insertions(+), 22 deletions(-) diff --git a/application/PreorderCtag/PreorderCtag.php b/application/PreorderCtag/PreorderCtag.php index df439b0d3..a49d06c56 100644 --- a/application/PreorderCtag/PreorderCtag.php +++ b/application/PreorderCtag/PreorderCtag.php @@ -153,7 +153,7 @@ class PreorderCtag extends mfBaseModel { $model = new PreorderCtag(); $table_fields = [ - "preorder_id", "network", "stag", "ctag", "service_type", "deleted", + "preorder_id", "network", "stag", "ctag", "service_type", "ext_id", "ext_status", "deleted", "create_by","edit_by","create","edit" ]; @@ -192,7 +192,12 @@ class PreorderCtag extends mfBaseModel { } - public static function getFirst($filter) { + public static function getFirstActive($filter) { + $filter["deleted"] = false; + return self::getFirst($filter); + } + + public static function getFirst($filter = []) { $db = FronkDB::singleton(); $where = self::getSqlFilter($filter); @@ -253,6 +258,13 @@ class PreorderCtag extends mfBaseModel { return 0; } + public static function searchActive($filter, $limit = false, $order = false) { + $filter["deleted"] = false; + return self::search($filter, $limit, $order); + + + } + public static function search($filter, $limit = false, $order = false) { //var_dump($filter);exit; $items = []; @@ -265,7 +277,6 @@ class PreorderCtag extends mfBaseModel { $where = self::getSqlFilter($filter); $sql = "SELECT PreorderCtag.* FROM PreorderCtag - LEFT JOIN Preorder ON Preorder.id = PreorderCtag.preorder_id WHERE $where ORDER BY $order"; @@ -292,6 +303,13 @@ class PreorderCtag extends mfBaseModel { private static function getSqlFilter($filter) { $where = "1=1 "; + if(array_key_exists("preorder_id", $filter)) { + $preorder_id = $filter['preorder_id']; + if(is_numeric($preorder_id)) { + $where .= " AND PreorderCtag.preorder_id=$preorder_id"; + } + } + if(array_key_exists("stag", $filter)) { $stag = $filter['stag']; if(is_numeric($stag)) { @@ -312,7 +330,22 @@ class PreorderCtag extends mfBaseModel { $where .= " AND PreorderCtag.network = '$network'"; } } + + if(array_key_exists("service_type", $filter)) { + $service_type = FronkDB::singleton()->escape($filter['service_type']); + if($service_type) { + $where .= " AND PreorderCtag.service_type = '$service_type'"; + } + } + if(array_key_exists("deleted", $filter)) { + $deleted = $filter['deleted']; + if($deleted === false || $deleted === null || $deleted === 0) { + $where .= " AND (PreorderCtag.deleted=0 OR PreorderCtag.deleted IS NULL)"; + } elseif($deleted === true) { + $where .= " AND PreorderCtag.deleted > 0"; + } + } diff --git a/scripts/adb-rimo-import/importer/citycom.php b/scripts/adb-rimo-import/importer/citycom.php index 4a2030e7d..577c98184 100644 --- a/scripts/adb-rimo-import/importer/citycom.php +++ b/scripts/adb-rimo-import/importer/citycom.php @@ -200,8 +200,6 @@ class CitycomImporter { $services = $ccapi->getServices(); foreach($services as $service) { - if(!property_exists($service, "ont") || !$service->ont || !$service->ont->id) continue; - if(!property_exists($service, "location") || !$service->location || !$service->location->id) continue; if(!property_exists($service->location, "sublocation") || !$service->location->sublocation || !$service->location->sublocation->id) continue; //var_dump($service); @@ -213,28 +211,49 @@ class CitycomImporter { $preorder = \PreorderModel::getFirst(["adb_wohneinheit_id" => $unit->id]); if(!$preorder) continue; - $pco = \PreorderCitycomOan::getFirst(["preorder_id" => $preorder->id]); - if(!$pco) { - $pco = \PreorderCitycomOan::create([ - "preorder_id" => $preorder->id - ]); - } - $ont_sn = $service->ont->serial; - $ont_gpid = $service->ont->fsan; - if($ont_sn || $ont_gpid) { - $status_300 = \PreorderstatusModel::getFirst(["code" => 300]); - if($preorder->status->code < 300) { - $preorder->status_id = $status_300->id; - $preorder->save(); + if(property_exists($service, "ont") && !$service->ont && !$service->ont->id) { + $pco = \PreorderCitycomOan::getFirst(["preorder_id" => $preorder->id]); + if(!$pco) { + $pco = \PreorderCitycomOan::create([ + "preorder_id" => $preorder->id + ]); + } + + $ont_sn = $service->ont->serial; + $ont_gpid = $service->ont->fsan; + + if($ont_sn || $ont_gpid) { + $status_300 = \PreorderstatusModel::getFirst(["code" => 300]); + if($preorder->status->code < 300) { + $preorder->status_id = $status_300->id; + $preorder->save(); + } + } + + if($pco->ont_sn != $ont_sn || $pco->ont_gpid != $ont_gpid) { + $pco->ont_sn = $ont_sn; + $pco->ont_gpid = $ont_gpid; + $pco->save(); } } - if($pco->ont_sn != $ont_sn || $pco->ont_gpid != $ont_gpid) { - $pco->ont_sn = $ont_sn; - $pco->ont_gpid = $ont_gpid; - $pco->save(); + // find ctag and update ext id and status if changed + $stypes = array_flip(CITYCOM_OAN_API_SERVICES_FOR_ORDER); + $stag = $unit->hausnummer->vlan_stag; + if(!$stag) continue; + + $ctag = \PreorderCtag::getFirstActive(["preorder_id" => $preorder->id, "stag" => $stag, "service_type" => $stypes[$service->service_type]]); + //echo "====\n"; + //echo $preorder->id." - ".$service->service_number." - ".$service->location->sublocation->id." - ".$service->service_type." - $stag\n"; + if($ctag->ext_id != $service->service_number) { + $ctag->ext_id = $service->service_number; + $ctag->save(); + } + if($ctag->ext_status != $service->state) { + $ctag->ext_status = $service->state; + $ctag->save(); } }