citycom import now saves service_number and status to PreorderCtag

This commit is contained in:
Frank Schubert
2025-08-05 14:52:29 +02:00
parent fd9f47315f
commit 9aecd18da5
2 changed files with 74 additions and 22 deletions

View File

@@ -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";
}
}

View File

@@ -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();
}
}