Changed Citycom order flow to new estmk activation workflow
This commit is contained in:
@@ -697,6 +697,7 @@
|
|||||||
<th>ctag</th>
|
<th>ctag</th>
|
||||||
<th>Typ</th>
|
<th>Typ</th>
|
||||||
<th>External ID</th>
|
<th>External ID</th>
|
||||||
|
<th>External Name</th>
|
||||||
<th>External State</th>
|
<th>External State</th>
|
||||||
</tr>
|
</tr>
|
||||||
<?php if(is_array($preorder->ctags) && count($preorder->ctags)): ?>
|
<?php if(is_array($preorder->ctags) && count($preorder->ctags)): ?>
|
||||||
@@ -706,6 +707,7 @@
|
|||||||
<td class="text-monospace"><?=$ctag->ctag?></td>
|
<td class="text-monospace"><?=$ctag->ctag?></td>
|
||||||
<td class="text-monospace"><?=$ctag->service_type?></td>
|
<td class="text-monospace"><?=$ctag->service_type?></td>
|
||||||
<td class="text-monospace"><?=htmlentities($ctag->ext_id)?></td>
|
<td class="text-monospace"><?=htmlentities($ctag->ext_id)?></td>
|
||||||
|
<td class="text-monospace"><?=htmlentities($ctag->ext_name)?></td>
|
||||||
<td class="text-monospace"><?=htmlentities($ctag->ext_status)?></td>
|
<td class="text-monospace"><?=htmlentities($ctag->ext_status)?></td>
|
||||||
</tr>
|
</tr>
|
||||||
<?php endforeach; ?>
|
<?php endforeach; ?>
|
||||||
|
|||||||
@@ -85,13 +85,13 @@ class SnoppCitycom extends Modules\ApiControllerModule
|
|||||||
$bb_down = $this->post["bb_down"];
|
$bb_down = $this->post["bb_down"];
|
||||||
$execution_date = false;
|
$execution_date = false;
|
||||||
|
|
||||||
if($this->post["execution_date"]) {
|
/*if($this->post["execution_date"]) {
|
||||||
try {
|
try {
|
||||||
$execution_date = new \DateTime($this->post["execution_date"]);
|
$execution_date = new \DateTime($this->post["execution_date"]);
|
||||||
} catch(\Exception $e) {
|
} catch(\Exception $e) {
|
||||||
return \mfResponse::BadRequest(["message" => "Invalid Timestamp format"]);
|
return \mfResponse::BadRequest(["message" => "Invalid Timestamp format"]);
|
||||||
}
|
}
|
||||||
}
|
}*/
|
||||||
|
|
||||||
|
|
||||||
if(!is_numeric($bb_down) || !$bb_down || !is_numeric($bb_up) || !$bb_up || !$bb_down > 10000 || $bb_up > 10000) {
|
if(!is_numeric($bb_down) || !$bb_down || !is_numeric($bb_up) || !$bb_up || !$bb_down > 10000 || $bb_up > 10000) {
|
||||||
@@ -118,6 +118,10 @@ class SnoppCitycom extends Modules\ApiControllerModule
|
|||||||
|
|
||||||
// if all services are ordered and active, finish order and return active
|
// if all services are ordered and active, finish order and return active
|
||||||
$ctag = PreorderCtag::getFirstActive(["preorder_id" => $preorder->id, "service_type" => "inet"]);
|
$ctag = PreorderCtag::getFirstActive(["preorder_id" => $preorder->id, "service_type" => "inet"]);
|
||||||
|
if(!$ctag) {
|
||||||
|
return \mfResponse::NotFound(["message" => "Home not found"]);
|
||||||
|
}
|
||||||
|
|
||||||
if($ctag->ext_id && $ctag->ext_status == "finished") {
|
if($ctag->ext_id && $ctag->ext_status == "finished") {
|
||||||
if($preorder->status->code < 500) {
|
if($preorder->status->code < 500) {
|
||||||
$preorder->setNewStatusCode(500);
|
$preorder->setNewStatusCode(500);
|
||||||
@@ -132,7 +136,7 @@ class SnoppCitycom extends Modules\ApiControllerModule
|
|||||||
return \mfResponse::Ok(["message" => "ONT not yet installed. Deferred", "activation_status" => "deferred"]);
|
return \mfResponse::Ok(["message" => "ONT not yet installed. Deferred", "activation_status" => "deferred"]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
$cc_home_id = \Citycom_OanApiHelper::hausnummerExtrefToCitycomId($wohneinheit->extref);
|
$cc_home_id = \Citycom_OanApiHelper::hausnummerExtrefToCitycomId($wohneinheit->extref);
|
||||||
$data["up"] = $bb_up;
|
$data["up"] = $bb_up;
|
||||||
$data["down"] = $bb_down;
|
$data["down"] = $bb_down;
|
||||||
@@ -159,10 +163,30 @@ class SnoppCitycom extends Modules\ApiControllerModule
|
|||||||
// order Service at Citycom and set Preorder to 500 Finished
|
// order Service at Citycom and set Preorder to 500 Finished
|
||||||
if(!$cc_api->orderServices($preorder, $cc_home_id, $data)) {
|
if(!$cc_api->orderServices($preorder, $cc_home_id, $data)) {
|
||||||
return \mfResponse::InternalServerError(["message" => "Error activating service"]);
|
return \mfResponse::InternalServerError(["message" => "Error activating service"]);
|
||||||
|
}*/
|
||||||
|
|
||||||
|
// update product at citycom
|
||||||
|
//$cc_home_id = \Citycom_OanApiHelper::hausnummerExtrefToCitycomId($wohneinheit->extref);
|
||||||
|
$data["up"] = $bb_up;
|
||||||
|
$data["down"] = $bb_down;
|
||||||
|
$data["product_name"] = false;
|
||||||
|
|
||||||
|
if($preorder->campaign->fulfillment == "citycom_oan") {
|
||||||
|
$data["product_name"] = "Estmk Greenstream OAN $bb_down/$bb_up";
|
||||||
}
|
}
|
||||||
|
|
||||||
// live check if service is active, if not return deferred
|
$cc_api_client = new \Citycom_OanApiClient(CITYCOM_OAN_API_USER, CITYCOM_OAN_API_PASS);
|
||||||
$ctag = PreorderCtag::getFirstActive(["preorder_id" => $preorder->id, "service_type" => "inet"]);
|
$cc_api = new \Citycom_OanApiHelper($cc_api_client);
|
||||||
|
|
||||||
|
// try to update product with bandwidth provided by snopp.
|
||||||
|
// updateService() only updates if values are changed.
|
||||||
|
if(!$cc_api->updateService($ctag->ext_id, $data)) {
|
||||||
|
$this->log->error(__METHOD__.": Error updating service {$ctag->ext_id} for preorder {$preorder->id}");
|
||||||
|
//return \mfResponse::InternalServerError(["message" => "Error activating service"]);
|
||||||
|
}
|
||||||
|
|
||||||
|
// check if service is active, if not return deferred
|
||||||
|
//$ctag = PreorderCtag::getFirstActive(["preorder_id" => $preorder->id, "service_type" => "inet"]);
|
||||||
if($ctag->ext_id && $ctag->ext_status == "finished") {
|
if($ctag->ext_id && $ctag->ext_status == "finished") {
|
||||||
if($preorder->status->code < 500) {
|
if($preorder->status->code < 500) {
|
||||||
$preorder->setNewStatusCode(500);
|
$preorder->setNewStatusCode(500);
|
||||||
|
|||||||
@@ -736,19 +736,27 @@ class Preorder extends mfBaseModel {
|
|||||||
$first_ctag = $search_ctag - ($search_ctag % $ctags_per_home);
|
$first_ctag = $search_ctag - ($search_ctag % $ctags_per_home);
|
||||||
$last_ctag = $first_ctag + $ctags_per_home - 1;
|
$last_ctag = $first_ctag + $ctags_per_home - 1;
|
||||||
|
|
||||||
|
$mgmt_ctag_exists = false;
|
||||||
|
|
||||||
$mgmt_ctag = null;
|
$mgmt_ctag = null;
|
||||||
$ctag_range = [];
|
$ctag_range = [];
|
||||||
for($i = $first_ctag; $i <= $last_ctag; $i++) {
|
for($i = $first_ctag; $i <= $last_ctag; $i++) {
|
||||||
if(!PreorderCtag::getFirstActive(["stag" => $stag, "ctag" => $i, "network" => $network_name])) {
|
$ctag = PreorderCtag::getFirstActive(["stag" => $stag, "ctag" => $i, "network" => $network_name]);
|
||||||
if($i == $last_ctag) {
|
if(!$ctag) {
|
||||||
|
if($i == $last_ctag && !$mgmt_ctag_exists) {
|
||||||
// mgmt ctag should be the last in range
|
// mgmt ctag should be the last in range
|
||||||
$mgmt_ctag = $i;
|
$mgmt_ctag = $i;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
$ctag_range[] = $i;
|
$ctag_range[] = $i;
|
||||||
|
} else {
|
||||||
|
if($ctag->service_type == "mgmt") {
|
||||||
|
$this->log->debug(__METHOD__.": mgmt ctag ($i / stag $stag) exists already\n");
|
||||||
|
$mgmt_ctag_exists = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return [$ctag_range, $mgmt_ctag];
|
return [$ctag_range, $mgmt_ctag];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,10 +1,8 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
class PreorderCtag extends mfBaseModel {
|
class PreorderCtag extends mfBaseModel {
|
||||||
protected $forcestr = ["product_name","product_info","matchcode"];
|
protected $forcestr = ["network","ext_id","ext_name"];
|
||||||
private $preorder;
|
private $preorder;
|
||||||
private $invoice;
|
|
||||||
private $adb_wohneinheit;
|
|
||||||
private $creator;
|
private $creator;
|
||||||
private $editor;
|
private $editor;
|
||||||
|
|
||||||
@@ -153,7 +151,7 @@ class PreorderCtag extends mfBaseModel {
|
|||||||
$model = new PreorderCtag();
|
$model = new PreorderCtag();
|
||||||
|
|
||||||
$table_fields = [
|
$table_fields = [
|
||||||
"preorder_id", "network", "stag", "ctag", "service_type", "ext_id", "ext_status", "deleted",
|
"preorder_id", "network", "stag", "ctag", "service_type", "ext_id", "ext_name", "ext_status", "deleted",
|
||||||
"create_by","edit_by","create","edit"
|
"create_by","edit_by","create","edit"
|
||||||
];
|
];
|
||||||
|
|
||||||
@@ -203,7 +201,7 @@ class PreorderCtag extends mfBaseModel {
|
|||||||
$where = self::getSqlFilter($filter);
|
$where = self::getSqlFilter($filter);
|
||||||
$sql = "SELECT PreorderCtag.* FROM PreorderCtag
|
$sql = "SELECT PreorderCtag.* FROM PreorderCtag
|
||||||
WHERE $where
|
WHERE $where
|
||||||
ORDER BY preorder_id,stag,ctag LIMIT 1";
|
ORDER BY ctag LIMIT 1";
|
||||||
//var_dump($sql);exit;
|
//var_dump($sql);exit;
|
||||||
mfLoghandler::singleton()->debug($sql);
|
mfLoghandler::singleton()->debug($sql);
|
||||||
$res = $db->query($sql);
|
$res = $db->query($sql);
|
||||||
@@ -230,7 +228,7 @@ class PreorderCtag extends mfBaseModel {
|
|||||||
$where = self::getSqlFilter($filter);
|
$where = self::getSqlFilter($filter);
|
||||||
$sql = "SELECT PreorderCtag.* FROM PreorderCtag
|
$sql = "SELECT PreorderCtag.* FROM PreorderCtag
|
||||||
WHERE $where
|
WHERE $where
|
||||||
ORDER BY preorder_id DESC,stag DESC,ctag DESC LIMIT 1";
|
ORDER BY ctag DESC LIMIT 1";
|
||||||
//var_dump($sql);exit;
|
//var_dump($sql);exit;
|
||||||
mfLoghandler::singleton()->debug($sql);
|
mfLoghandler::singleton()->debug($sql);
|
||||||
$res = $db->query($sql);
|
$res = $db->query($sql);
|
||||||
|
|||||||
35
db/migrations/20260115121818_preorder_ctag_add_ext_name.php
Normal file
35
db/migrations/20260115121818_preorder_ctag_add_ext_name.php
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
<?php
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
use Phinx\Migration\AbstractMigration;
|
||||||
|
|
||||||
|
final class PreorderCtagAddExtName extends AbstractMigration
|
||||||
|
{
|
||||||
|
public function up(): void
|
||||||
|
{
|
||||||
|
if($this->getEnvironment() == "thetool") {
|
||||||
|
$table = $this->table("PreorderCtag");
|
||||||
|
$table->renameColumn("ext_id", "ext_name");
|
||||||
|
$table->addColumn("ext_id", "string", ["null" => true, "default" => null, "length" => 255, "after" => "service_type"]);
|
||||||
|
$table->update();
|
||||||
|
}
|
||||||
|
|
||||||
|
if($this->getEnvironment() == "addressdb") {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function down(): void
|
||||||
|
{
|
||||||
|
if($this->getEnvironment() == "thetool") {
|
||||||
|
$table = $this->table("PreorderCtag");
|
||||||
|
$table->removeColumn("ext_id");
|
||||||
|
$table->renameColumn("ext_name", "ext_id");
|
||||||
|
$table->update();
|
||||||
|
}
|
||||||
|
|
||||||
|
if($this->getEnvironment() == "addressdb") {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -219,6 +219,21 @@ class Citycom_OanApiClient {
|
|||||||
|
|
||||||
$url = str_replace("{service_id}", $service_id, $this->baseurl.CITYCOM_OAN_API_EP_UPDATE_SERVICES);
|
$url = str_replace("{service_id}", $service_id, $this->baseurl.CITYCOM_OAN_API_EP_UPDATE_SERVICES);
|
||||||
|
|
||||||
|
$ctx_options = [
|
||||||
|
"http" => [
|
||||||
|
"ignore_errors" => true,
|
||||||
|
"method" => "PUT",
|
||||||
|
"content" => json_encode($data),
|
||||||
|
"header" => [
|
||||||
|
"Accept: application/json",
|
||||||
|
"Content-type: application/json",
|
||||||
|
"Authorization: Bearer ".$this->token,
|
||||||
|
],
|
||||||
|
]
|
||||||
|
];
|
||||||
|
|
||||||
|
$result = $this->runApiRequest($url, $ctx_options);
|
||||||
|
return $result;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function cancelService($service_id, $data) {
|
public function cancelService($service_id, $data) {
|
||||||
@@ -449,7 +464,7 @@ class Citycom_OanApiClient {
|
|||||||
$output = file_get_contents($final_url, false, $ctx);
|
$output = file_get_contents($final_url, false, $ctx);
|
||||||
|
|
||||||
$resp = json_decode($output);
|
$resp = json_decode($output);
|
||||||
//var_dump($resp);
|
//var_dump($resp);exit;
|
||||||
if(!is_object($resp) || (property_exists($resp, "success") && !$resp->success)) {
|
if(!is_object($resp) || (property_exists($resp, "success") && !$resp->success)) {
|
||||||
$this->lastError = $output;
|
$this->lastError = $output;
|
||||||
return false;
|
return false;
|
||||||
@@ -459,6 +474,8 @@ class Citycom_OanApiClient {
|
|||||||
|
|
||||||
if(is_array($response)) {
|
if(is_array($response)) {
|
||||||
$return_data = $response;
|
$return_data = $response;
|
||||||
|
} elseif(is_object($response) && (!property_exists($response, "data") || !is_array($response->data))) {
|
||||||
|
$return_data = $response;
|
||||||
} elseif(is_object($response) && property_exists($response, "data") && is_array($response->data)) {
|
} elseif(is_object($response) && property_exists($response, "data") && is_array($response->data)) {
|
||||||
$return_data = $response->data;
|
$return_data = $response->data;
|
||||||
|
|
||||||
|
|||||||
@@ -94,7 +94,7 @@ class Citycom_OanApiHelper {
|
|||||||
$execution_date = date("Y-m-d");
|
$execution_date = date("Y-m-d");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$ctag_range_search = false;
|
||||||
|
|
||||||
if(array_key_exists("ctag_range_search", $data) && $data["ctag_range_search"]) {
|
if(array_key_exists("ctag_range_search", $data) && $data["ctag_range_search"]) {
|
||||||
$ctag_range_search = $data["ctag_range_search"];
|
$ctag_range_search = $data["ctag_range_search"];
|
||||||
@@ -116,21 +116,21 @@ class Citycom_OanApiHelper {
|
|||||||
// order all services and save ctags
|
// order all services and save ctags
|
||||||
$cc_service_types = $this->api->getServiceTypes();
|
$cc_service_types = $this->api->getServiceTypes();
|
||||||
|
|
||||||
$this->log->debug(print_r($want_services, true));
|
$this->log->debug(__METHOD__.": Want services: ".print_r($want_services, true));
|
||||||
|
|
||||||
$allowed_service_types = array_merge(CITYCOM_OAN_API_SERVICES_FOR_ORDER, CITYCOM_OAN_API_SERVICES_FOR_RESERVATION);
|
$allowed_service_types = array_merge(CITYCOM_OAN_API_SERVICES_FOR_ORDER, CITYCOM_OAN_API_SERVICES_FOR_RESERVATION);
|
||||||
|
|
||||||
// check if we have these services already
|
// check if we have these services already
|
||||||
foreach($cc_service_types as $stype) {
|
foreach($cc_service_types as $stype) {
|
||||||
if(!in_array($stype->name, $allowed_service_types)) continue;
|
if(!in_array($stype->name, $allowed_service_types)) continue;
|
||||||
$ctag_service_type = array_flip($allowed_service_types)[$stype->name];
|
$ctag_service_type = (array_flip($allowed_service_types))[$stype->name];
|
||||||
if(PreorderCtag::getFirstActive(["preorder_id" => $preorder->id, "service_type" => $ctag_service_type])) {
|
if(PreorderCtag::getFirstActive(["preorder_id" => $preorder->id, "service_type" => $ctag_service_type])) {
|
||||||
// service was ordered already, remove from want_services
|
// service was ordered already, remove from want_services
|
||||||
unset($want_services[$ctag_service_type]);
|
unset($want_services[$ctag_service_type]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->log->debug(print_r($want_services, true));
|
$this->log->debug(__METHOD__.": Want services after filtering: ".print_r($want_services, true));
|
||||||
|
|
||||||
$new_services = [];
|
$new_services = [];
|
||||||
|
|
||||||
@@ -140,26 +140,32 @@ class Citycom_OanApiHelper {
|
|||||||
list($ctags, $mgmt_ctag) = $preorder->getNextFreeCtags();
|
list($ctags, $mgmt_ctag) = $preorder->getNextFreeCtags();
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->log->debug(print_r($ctags, true));
|
//var_dump($ctags);
|
||||||
|
//var_dump($mgmt_ctag);
|
||||||
|
|
||||||
|
$this->log->debug(__METHOD__.": ctags: ".print_r($ctags, true));
|
||||||
|
$this->log->debug(__METHOD__.": mgmt ctag: ".print_r($mgmt_ctag, true));
|
||||||
|
|
||||||
if(!is_array($ctags)) {
|
if(!is_array($ctags)) {
|
||||||
$this->log->error(__METHOD__.": No Free Ctags (Preorder ".$preorder->id.")");
|
$this->log->error(__METHOD__.": No Free Ctags (Preorder ".$preorder->id.")");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(count($ctags) < count($want_services)) {
|
$ctag_count = count($ctags);
|
||||||
|
if($mgmt_ctag) $ctag_count++;
|
||||||
|
if($ctag_count < count($want_services)) {
|
||||||
$this->log->error(__METHOD__.": Not enough New Free CTags for Preorder ".$preorder->id);
|
$this->log->error(__METHOD__.": Not enough New Free CTags for Preorder ".$preorder->id);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
$preorder_ctag_data = [
|
$preorder_ctag_data = [
|
||||||
"preorder_id" => $preorder->id,
|
"preorder_id" => $preorder->id,
|
||||||
"network" => "citycom-oan",
|
"network" => "citycom-oan",
|
||||||
"stag" => $preorder->adb_hausnummer->vlan_stag,
|
"stag" => $preorder->adb_hausnummer->vlan_stag,
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
||||||
$service_count = 0;
|
$service_count = 0;
|
||||||
foreach($cc_service_types as $stype) {
|
foreach($cc_service_types as $stype) {
|
||||||
// was this service type requested
|
// was this service type requested
|
||||||
@@ -169,7 +175,7 @@ class Citycom_OanApiHelper {
|
|||||||
if($mgmt_ctag && $stype->name == $allowed_service_types["mgmt"]) {
|
if($mgmt_ctag && $stype->name == $allowed_service_types["mgmt"]) {
|
||||||
$ctag = $mgmt_ctag;
|
$ctag = $mgmt_ctag;
|
||||||
} else {
|
} else {
|
||||||
$ctag = $ctags[$service_count];
|
$ctag = array_shift($ctags);
|
||||||
}
|
}
|
||||||
$ctag_service_type = array_flip($allowed_service_types)[$stype->name];
|
$ctag_service_type = array_flip($allowed_service_types)[$stype->name];
|
||||||
if(!$ctag_service_type) {
|
if(!$ctag_service_type) {
|
||||||
@@ -185,6 +191,7 @@ class Citycom_OanApiHelper {
|
|||||||
"ctag" => $ctag,
|
"ctag" => $ctag,
|
||||||
];
|
];
|
||||||
|
|
||||||
|
//echo "Creating Service ".$stype->name." on sublocation $sublocation_id with product_id $product_id and ctag $ctag\n";
|
||||||
$this->log->info(__METHOD__.": Creating Service ".$stype->name." on sublocation $sublocation_id with product_id $product_id and ctag $ctag");
|
$this->log->info(__METHOD__.": Creating Service ".$stype->name." on sublocation $sublocation_id with product_id $product_id and ctag $ctag");
|
||||||
//continue;
|
//continue;
|
||||||
|
|
||||||
@@ -247,11 +254,61 @@ class Citycom_OanApiHelper {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Updates service values if nesseccary
|
||||||
|
*
|
||||||
|
* @param $service_ext_num
|
||||||
|
* @param $data
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public function updateService($service_ext_id, $data) {
|
||||||
|
// get service and compare data
|
||||||
|
$services = $this->api->getServices();
|
||||||
|
if(!$services) {
|
||||||
|
$this->log->error(__METHOD__.": Error getting services.");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
$service = false;
|
||||||
|
foreach($services as $cc_service) {
|
||||||
|
if($cc_service->id == $service_ext_id) {
|
||||||
|
$service = $cc_service;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!$service) {
|
||||||
|
$this->log->error(__METHOD__.": Service not available.");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
$service_data = [];
|
||||||
|
|
||||||
|
// update service if nesseccary
|
||||||
|
if(array_key_exists("product_name", $data) && $data["product_name"] && $service->product->name != $data["product_name"]) {
|
||||||
|
$product_data["up"] = $data["up"];
|
||||||
|
$product_data["down"] = $data["down"];
|
||||||
|
$product_data["name"] = $data["product_name"];
|
||||||
|
$product_id = $this->findOrCreateProduct($product_data);
|
||||||
|
if(!$product_id) {
|
||||||
|
$this->log->error(__METHOD__.": Cannot find or create product ".$product_data["name"]);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
$service_data["product_id"] = $product_id;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!count($service_data)) return true;
|
||||||
|
$result = $this->api->updateService($service, $service_data);
|
||||||
|
|
||||||
|
if($result) return true;
|
||||||
|
return false;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public static function citycomIdToHausnummerExtref($id) {
|
public static function citycomIdToHausnummerExtref($id) {
|
||||||
|
|||||||
@@ -254,8 +254,12 @@ class CitycomImporter {
|
|||||||
$ctag = \PreorderCtag::getFirstActive(["preorder_id" => $preorder->id, "stag" => $stag, "service_type" => $stypes[$service->service_type]]);
|
$ctag = \PreorderCtag::getFirstActive(["preorder_id" => $preorder->id, "stag" => $stag, "service_type" => $stypes[$service->service_type]]);
|
||||||
//echo "====\n";
|
//echo "====\n";
|
||||||
//echo $preorder->id." - ".$service->service_number." - ".$service->location->sublocation->id." - ".$service->service_type." - $stag\n";
|
//echo $preorder->id." - ".$service->service_number." - ".$service->location->sublocation->id." - ".$service->service_type." - $stag\n";
|
||||||
if($ctag && $ctag->ext_id != $service->service_number) {
|
if($ctag && $ctag->ext_id != $service->id) {
|
||||||
$ctag->ext_id = $service->service_number;
|
$ctag->ext_id = $service->id;
|
||||||
|
$ctag->save();
|
||||||
|
}
|
||||||
|
if($ctag && $ctag->ext_name != $service->service_number) {
|
||||||
|
$ctag->ext_name = $service->service_number;
|
||||||
$ctag->save();
|
$ctag->save();
|
||||||
}
|
}
|
||||||
if($ctag && $ctag->ext_status != $service->state) {
|
if($ctag && $ctag->ext_status != $service->state) {
|
||||||
|
|||||||
@@ -1,5 +1,9 @@
|
|||||||
#!/usr/bin/php
|
#!/usr/bin/php
|
||||||
<?php
|
<?php
|
||||||
|
/*
|
||||||
|
* Looks for new Citycom OAN Orders and orders all services with ctags
|
||||||
|
* from Citycom OAN API
|
||||||
|
*/
|
||||||
|
|
||||||
//require 'vendor/autoload.php';
|
//require 'vendor/autoload.php';
|
||||||
require("../../../config/config.php");
|
require("../../../config/config.php");
|
||||||
@@ -37,23 +41,36 @@ foreach(PreordercampaignModel::search(["fulfillment" => "citycom_oan"]) as $camp
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if($has_inet_service || $has_mgmt_service) continue;
|
if($has_inet_service) continue;
|
||||||
|
|
||||||
$sublocation_id = \Citycom_OanApiHelper::hausnummerExtrefToCitycomId($preorder->adb_wohneinheit->extref);
|
$sublocation_id = \Citycom_OanApiHelper::hausnummerExtrefToCitycomId($preorder->adb_wohneinheit->extref);
|
||||||
$data = [
|
$data = [
|
||||||
"down" => 100,
|
"down" => 100,
|
||||||
"up" => 100,
|
"up" => 100,
|
||||||
"product_name" => "Estmk Greenstream OAN Mgmt",
|
"product_name" => "Estmk Greenstream OAN Default",
|
||||||
"execution_date" => false,
|
"execution_date" => false,
|
||||||
"services" => CITYCOM_OAN_API_SERVICES_FOR_RESERVATION,
|
|
||||||
|
|
||||||
];
|
];
|
||||||
|
|
||||||
$log->info(__METHOD__.": Ordering mgmt service for preorder ".$preorder->id);
|
$services_to_order = array_merge(CITYCOM_OAN_API_SERVICES_FOR_RESERVATION, CITYCOM_OAN_API_SERVICES_FOR_ORDER);
|
||||||
|
if($has_mgmt_service) {
|
||||||
|
$services_to_order = CITYCOM_OAN_API_SERVICES_FOR_ORDER;
|
||||||
|
}
|
||||||
|
$data["services"] = $services_to_order;
|
||||||
|
|
||||||
|
$existing_ctag = \PreorderCtag::getFirstActive(["preorder_id" => $preorder->id]);
|
||||||
|
if($existing_ctag) {
|
||||||
|
$data["ctag_range_search"] = $existing_ctag->ctag;
|
||||||
|
}
|
||||||
|
|
||||||
|
//echo "{$preorder->id}\n";
|
||||||
|
//var_dump($data);exit;
|
||||||
|
|
||||||
|
$log->info(__FILE__.": Ordering Citycom services for preorder ".$preorder->id);
|
||||||
if(!$cc_helper->orderServices($preorder, $sublocation_id, $data)) {
|
if(!$cc_helper->orderServices($preorder, $sublocation_id, $data)) {
|
||||||
$log->error(__METHOD__.": Error ordering mgmt service for preorder ".$preorder->id);
|
$log->error(__FILE__.": Error ordering Citycom services for preorder ".$preorder->id);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
//continue;
|
||||||
|
|
||||||
// TODO check for new service @ citycom -> 230
|
// TODO check for new service @ citycom -> 230
|
||||||
$cc_services = $cc->getServices();
|
$cc_services = $cc->getServices();
|
||||||
|
|||||||
Reference in New Issue
Block a user