diff --git a/Layout/default/Preordercampaign/Form.php b/Layout/default/Preordercampaign/Form.php index 2ad1f965c..9d813f7fb 100644 --- a/Layout/default/Preordercampaign/Form.php +++ b/Layout/default/Preordercampaign/Form.php @@ -271,6 +271,16 @@ +
+ +
+ +
+
+
diff --git a/application/ADBWohneinheit/ADBWohneinheit.php b/application/ADBWohneinheit/ADBWohneinheit.php index 349a674c5..b9de4d063 100644 --- a/application/ADBWohneinheit/ADBWohneinheit.php +++ b/application/ADBWohneinheit/ADBWohneinheit.php @@ -81,6 +81,15 @@ class ADBWohneinheit extends mfBaseModel { return true; } + if($hausnummer->netzgebiet->source == "citycom-oan-api") { + return true; + } + + if(!preg_match('/^SDIBuilding_\d+_\d+$/', $hausnummer->rimo_id)) { + $this->log->info("[".$this->_ruid."] ".__METHOD__.": invalid rimo_id in Hausnummer ".$hausnummer->id); + return true; + } + // Get RIMO API credentials $creds = $hausnummer->getNetownerRimoApiCredentials(); if(!$creds) { diff --git a/application/Api/v1/PreorderinfrastructureApicontroller.php b/application/Api/v1/PreorderinfrastructureApicontroller.php new file mode 100644 index 000000000..cedaaa776 --- /dev/null +++ b/application/Api/v1/PreorderinfrastructureApicontroller.php @@ -0,0 +1,48 @@ +allowMissingOrigin = true; + } + + protected function registerRoutes() { + $this->addRoute("/preorderinfrastructure/patchportAssignmentOrders", "getPatchportAssignmentOrders", "GET"); + + } + + protected function authenticated() { + $this->registerRoutes(); + return true; + } + + /** + * GET /preorderinfrastructure/patchportAssignmentOrders + * Returns Homes in patching enabled campaigns with status 245 + * + * @return array mfRequest + */ + protected function getPatchportAssignmentOrders() { + if($this->me->username != "system.preorder.infra.api.snopp") { + return mfResponse::Forbidden(); + } + + $campaigns = PreordercampaignModel::search(["create_external_patchports" => 1]); + if(!$campaigns) { + return mfResponse::Ok(["homes" => []]); + } + + // get IDs of campaigns + $campaign_ids = array_map(fn($c): int => $c->id, $campaigns); + + $homes = []; + foreach(PreorderModel::search(["preordercampaign_id" => $campaign_ids, "status_code" => 245]) as $preorder) { + if(!$preorder->adb_wohneinheit_id) continue; + $home = $preorder->adb_wohneinheit; + if(!$home->extref) continue; + $homes[] = $home->extref; + } + + return mfResponse::Ok(["homes" => $homes]); + } +} \ No newline at end of file diff --git a/application/Preordercampaign/PreordercampaignController.php b/application/Preordercampaign/PreordercampaignController.php index 912ef1495..1be333cdc 100644 --- a/application/Preordercampaign/PreordercampaignController.php +++ b/application/Preordercampaign/PreordercampaignController.php @@ -286,6 +286,12 @@ class PreordercampaignController extends mfBaseController { $data['exist_is_error'] = 0; } + if($r->create_external_patchports == 1) { + $data['create_external_patchports'] = 1; + } else { + $data['create_external_patchports'] = 0; + } + //var_dump($r->banned_rimo_fcp);exit; if($r->banned_rimo_fcp && is_array($r->banned_rimo_fcp) && count($r->banned_rimo_fcp)) { $banned_fcp_json = json_encode($r->banned_rimo_fcp); diff --git a/application/Preordercampaign/PreordercampaignModel.php b/application/Preordercampaign/PreordercampaignModel.php index 4dd79bc08..3acbf547b 100644 --- a/application/Preordercampaign/PreordercampaignModel.php +++ b/application/Preordercampaign/PreordercampaignModel.php @@ -15,6 +15,7 @@ class PreordercampaignModel { public $district_is_city; public $hausnummer_add_zusatz; public $exist_is_error; + public $create_external_patchports; public $require_connectiontype; public $allow_unit_update; public $netowner_fibu_cost_code; @@ -164,6 +165,15 @@ class PreordercampaignModel { $where .= " AND `Preordercampaign`.`fulfillment` = '$fulfillment'"; } } + + if(array_key_exists("create_external_patchports", $filter)) { + $create_external_patchports = $filter['create_external_patchports']; + if($create_external_patchports) { + $where .= " AND create_external_patchports=1"; + } else { + $where .= " AND create_external_patchports=0"; + } + } if(array_key_exists("name", $filter)) { $name = FronkDB::singleton()->escape($filter['name']); diff --git a/db/migrations/20260210155502_preordercampaign_add_create_external_patchports.php b/db/migrations/20260210155502_preordercampaign_add_create_external_patchports.php new file mode 100644 index 000000000..205fe8c21 --- /dev/null +++ b/db/migrations/20260210155502_preordercampaign_add_create_external_patchports.php @@ -0,0 +1,31 @@ +getEnvironment() == "thetool") { + $table = $this->table("Preordercampaign"); + $table->addColumn("create_external_patchports", "integer", ["null" => false, "default" => 0, "length" => Phinx\Db\Adapter\MysqlAdapter::INT_TINY, "after" => "allow_unit_update"]); + $table->update(); + } + + if($this->getEnvironment() == "addressdb") { + + } + } + + public function down(): void + { + if($this->getEnvironment() == "thetool") { + + } + + if($this->getEnvironment() == "addressdb") { + + } + } +}