Merge branch 'fronkdev' into 'master'
Snopp/Citycom Service Order Api See merge request fronk/thetool!1643
This commit is contained in:
@@ -56,6 +56,12 @@ class SnoppCitycom extends Modules\ApiControllerModule
|
||||
return \mfResponse::NotFound(["message" => "Home not found"]);
|
||||
}
|
||||
|
||||
// Home must have Status 300, else return deferred
|
||||
if($wohneinheit->status->code < 300) {
|
||||
return \mfResponse::Ok(["message" => "ONT not yet installed. Deferred", "activation_status" => "deferred"]);
|
||||
}
|
||||
|
||||
|
||||
$cc_home_id = \Citycom_OanApiHelper::hausnummerExtrefToCitycomId($wohneinheit->extref);
|
||||
$data["up"] = $bb_up;
|
||||
$data["down"] = $bb_down;
|
||||
@@ -63,6 +69,14 @@ class SnoppCitycom extends Modules\ApiControllerModule
|
||||
$data["execution_date"] = ($execution_date) ? $execution_date->format("Y-m-d") : false;
|
||||
$data["services"] = CITYCOM_OAN_API_SERVICES_FOR_ORDER;
|
||||
|
||||
// check if mgmt ctag is set
|
||||
// so we use the same ctag set for the real services
|
||||
$mgmt_ctag = \PreorderCtag::getFirstActive(["preorder_id" => $preorder->id, "service_type" => "mgmt"]);
|
||||
if($mgmt_ctag) {
|
||||
$data["ctag_range_search"] = $mgmt_ctag->ctag;
|
||||
}
|
||||
|
||||
|
||||
if($preorder->campaign->name == "Citycom - Graz") {
|
||||
$data["product_name"] = "Estmk Greenstream OAN $bb_down/$bb_up";
|
||||
}
|
||||
@@ -71,13 +85,18 @@ class SnoppCitycom extends Modules\ApiControllerModule
|
||||
$cc_api_client = new \Citycom_OanApiClient(CITYCOM_OAN_API_USER, CITYCOM_OAN_API_PASS);
|
||||
$cc_api = new \Citycom_OanApiHelper($cc_api_client);
|
||||
|
||||
// order Service at Citycom and set Preorder to 500 Finished
|
||||
$services = $cc_api->orderServices($preorder, $cc_home_id, $data);
|
||||
if(!$services) {
|
||||
return \mfResponse::InternalServerError(["message" => "Error activating service"]);
|
||||
}
|
||||
|
||||
$preorder->setNewStatusCode(500);
|
||||
$preorder->save();
|
||||
|
||||
return \mfResponse::Ok(["message" => "Services ordered successfully", "activation_status" => "active"]);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -50,6 +50,7 @@ class OperationaldataApicontroller extends mfBaseApicontroller
|
||||
$this->addRoute("/operationaldata/home/:id/connected", [$modules["Snopp"], "setPreorderConnected"], "POST");
|
||||
$this->addRoute("/operationaldata/home/:id/active", [$modules["Snopp"], "setPreorderActive"], "POST");
|
||||
|
||||
//$this->addRoute("/operationaldata/preorder/:id/orderServiceTest", [$modules["SnoppCitycom"], "orderServiceTest"], "POST");
|
||||
$this->addRoute("/operationaldata/preorder/:id/orderService", [$modules["SnoppCitycom"], "orderService"], "POST");
|
||||
|
||||
}
|
||||
|
||||
@@ -671,6 +671,43 @@ class Preorder extends mfBaseModel {
|
||||
|
||||
}
|
||||
|
||||
public function getFreeCtagsInSet($search_ctag) {
|
||||
if(!$this->getProperty("adb_hausnummer")->vlan_stag) {
|
||||
echo "no stag\n";
|
||||
return false;
|
||||
}
|
||||
|
||||
$stag = $this->adb_hausnummer->vlan_stag;
|
||||
if(!$stag) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$ctags_per_home = 1;
|
||||
|
||||
$network_name = "";
|
||||
if($this->adb_hausnummer->netzgebiet->source == "citycom-oan-api") {
|
||||
$network_name = "citycom-oan";
|
||||
$ctags_per_home = count(CITYCOM_OAN_API_SERVICES_FOR_ORDER) + count(CITYCOM_OAN_API_SERVICES_FOR_RESERVATION); // Service VLANS + mgmt VLANS
|
||||
}
|
||||
|
||||
if(!$network_name) {
|
||||
echo "no network\n";
|
||||
return false;
|
||||
}
|
||||
|
||||
// get start of ctag range
|
||||
$first_ctag = $search_ctag - ($search_ctag % $ctags_per_home);
|
||||
|
||||
$ctag_range = [];
|
||||
for($i = $first_ctag; $i < $first_ctag + $ctags_per_home; $i++) {
|
||||
if(!PreorderCtag::getFirstActive(["stag" => $stag, "ctag" => $i, "network" => $network_name])) {
|
||||
$ctag_range[] = $i;
|
||||
}
|
||||
|
||||
}
|
||||
return $ctag_range;
|
||||
}
|
||||
|
||||
public function getNextFreeCtags() {
|
||||
if(!$this->getProperty("adb_hausnummer")->vlan_stag) {
|
||||
echo "no stag\n";
|
||||
@@ -678,6 +715,10 @@ class Preorder extends mfBaseModel {
|
||||
}
|
||||
|
||||
$stag = $this->adb_hausnummer->vlan_stag;
|
||||
if(!$stag) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$new_ctag = false;
|
||||
$ctags_per_home = 1;
|
||||
|
||||
@@ -693,7 +734,7 @@ class Preorder extends mfBaseModel {
|
||||
return false;
|
||||
}
|
||||
|
||||
$last_ctag = PreorderCtag::getLast(["stag" => $stag, "network" => $network_name]);
|
||||
$last_ctag = PreorderCtag::getLastActive(["stag" => $stag, "network" => $network_name]);
|
||||
if(!$last_ctag) {
|
||||
$new_ctag = $first_ctag;
|
||||
} else {
|
||||
@@ -988,6 +1029,7 @@ class Preorder extends mfBaseModel {
|
||||
if($status->code < $new_status->code) {
|
||||
$this->status_id = $new_status->id;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public function getNetowner() {
|
||||
|
||||
@@ -219,6 +219,11 @@ class PreorderCtag extends mfBaseModel {
|
||||
return null;
|
||||
}
|
||||
|
||||
public static function getLastActive($filter) {
|
||||
$filter["deleted"] = false;
|
||||
return self::getLast($filter);
|
||||
}
|
||||
|
||||
public static function getLast($filter) {
|
||||
$db = FronkDB::singleton();
|
||||
|
||||
|
||||
@@ -309,7 +309,7 @@ class Citycom_OanApiClient {
|
||||
return true;
|
||||
}
|
||||
|
||||
private function runApiRequest($url, $ctx_opts, $url_params = [], $page_num = 1) {
|
||||
private function runApiRequest($url, $ctx_opts, $url_params = [], $page_num = 1) : mixed {
|
||||
$current_page = $page_num;
|
||||
$return_data = [];
|
||||
|
||||
|
||||
@@ -94,6 +94,9 @@ class Citycom_OanApiHelper {
|
||||
$execution_date = date("Y-m-d");
|
||||
}
|
||||
|
||||
if(array_key_exists("ctag_range_search", $data) && $data["ctag_range_search"]) {
|
||||
$ctag_range_search = $data["ctag_range_search"];
|
||||
}
|
||||
|
||||
$product_data = [
|
||||
"up" => $up,
|
||||
@@ -113,10 +116,16 @@ class Citycom_OanApiHelper {
|
||||
|
||||
$new_services = [];
|
||||
|
||||
$ctags = $preorder->getNextFreeCtags();
|
||||
if($ctag_range_search) {
|
||||
$ctags = $preorder->getFreeCtagsInSet($ctag_range_search);
|
||||
} else {
|
||||
$ctags = $preorder->getNextFreeCtags();
|
||||
}
|
||||
|
||||
$this->log->debug(print_r($ctags, true));
|
||||
|
||||
if(!$ctags) {
|
||||
$this->log->error(__METHOD__.": No New Free Ctags (Preorder ".$preorder->id.")");
|
||||
$this->log->error(__METHOD__.": No Free Ctags (Preorder ".$preorder->id.")");
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -156,7 +165,7 @@ class Citycom_OanApiHelper {
|
||||
//continue;
|
||||
|
||||
// register new Service with Citycom
|
||||
/*$new_service = $this->api->createService($service_data);
|
||||
$new_service = $this->api->createService($service_data);
|
||||
|
||||
if(!$new_service) {
|
||||
$this->log->error(__METHOD__.": Error creating service");
|
||||
@@ -173,9 +182,9 @@ class Citycom_OanApiHelper {
|
||||
"serial" => $new_service->ont->serial,
|
||||
"fsan" => $new_service->ont->fsan,
|
||||
],
|
||||
];*/
|
||||
];
|
||||
|
||||
$service_return[] = [
|
||||
/*$service_return[] = [
|
||||
"sublocation_id" => $sublocation_id,
|
||||
"service_number" => "30-fggreger-01",
|
||||
"service_type" => $ctag_service_type,
|
||||
@@ -184,7 +193,7 @@ class Citycom_OanApiHelper {
|
||||
"serial" => "ONT123456",
|
||||
"fsan" => "FSAN7890",
|
||||
],
|
||||
];
|
||||
];*/
|
||||
|
||||
// save ctag
|
||||
$ctag_data = $preorder_ctag_data;
|
||||
|
||||
@@ -134,17 +134,19 @@ class CitycomImporter {
|
||||
$unit->save();
|
||||
}
|
||||
|
||||
$status_300 = \ADBStatusModel::getFirst(["code" => 300]);
|
||||
if(!$status_300) {
|
||||
die("ADB Status 300 not found");
|
||||
}
|
||||
if($unit->status->code < 300) {
|
||||
$status_300 = \ADBStatusModel::getFirst(["code" => 300]);
|
||||
if(!$status_300) {
|
||||
die("ADB Status 300 not found");
|
||||
}
|
||||
|
||||
$unit->status_id = $status_300->id;
|
||||
$unit->save();
|
||||
}
|
||||
|
||||
$status_code_241 = \ADBStatusModel::getFirst(["code" => 241]);
|
||||
if($hausnummer->status->code < 241) {
|
||||
$status_code_241 = \ADBStatusModel::getFirst(["code" => 241]);
|
||||
|
||||
$hausnummer->status_id = $status_code_241->id;
|
||||
$hausnummer->save();
|
||||
}
|
||||
@@ -216,11 +218,11 @@ class CitycomImporter {
|
||||
if(!$unit) continue;
|
||||
|
||||
$preorder = \PreorderModel::getFirst(["adb_wohneinheit_id" => $unit->id]);
|
||||
if(!$preorder) continue;
|
||||
if(!$preorder) {
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
|
||||
if(property_exists($service, "ont") && !$service->ont && !$service->ont->id) {
|
||||
if(property_exists($service, "ont") && $service->ont && $service->ont->id) {
|
||||
$pco = \PreorderCitycomOan::getFirst(["preorder_id" => $preorder->id]);
|
||||
if(!$pco) {
|
||||
$pco = \PreorderCitycomOan::create([
|
||||
@@ -232,8 +234,8 @@ class CitycomImporter {
|
||||
$ont_gpid = $service->ont->fsan;
|
||||
|
||||
if($ont_sn || $ont_gpid) {
|
||||
$status_300 = \PreorderstatusModel::getFirst(["code" => 300]);
|
||||
if($preorder->status->code < 300) {
|
||||
$status_300 = \PreorderstatusModel::getFirst(["code" => 300]);
|
||||
$preorder->status_id = $status_300->id;
|
||||
$preorder->save();
|
||||
}
|
||||
@@ -254,11 +256,11 @@ class CitycomImporter {
|
||||
$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) {
|
||||
if($ctag && $ctag->ext_id != $service->service_number) {
|
||||
$ctag->ext_id = $service->service_number;
|
||||
$ctag->save();
|
||||
}
|
||||
if($ctag->ext_status != $service->state) {
|
||||
if($ctag && $ctag->ext_status != $service->state) {
|
||||
$ctag->ext_status = $service->state;
|
||||
$ctag->save();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user