Files
2026-01-15 15:53:46 +01:00

132 lines
3.9 KiB
PHP

<?php
namespace application\Api\v1\Modules\Preorder;
use application\Api\v1\Modules;
require_once(APPDIR."/Api/v1/Modules/ApiControllerModule.php");
/*
* API Endpoints for Preorder Client Installation Feedback
*/
class Cif extends Modules\ApiControllerModule {
public function init() {
}
/*
* GET /preorder/:code/clientInstallationFinished
*/
public function providerSetCif($code) {
if($this->me->is("Preorderreadonly")) return \mfResponse::Forbidden();
$code = trim($code);
if(!$code) {
return \mfResponse::NotFound(["message" => "Preorder not found"]);
}
$preorder = \PreorderModel::getFirst(['ucode' => strtoupper($code), 'partner_id' => $this->me->address_id]);
if(!$preorder) {
// try oaid
$preorder = \PreorderModel::getFirst(['oaid' => strtolower($code), 'partner_id' => $this->me->address_id], "`create` DESC");
}
if(!$preorder) {
// try as extref
$preorder = \PreorderModel::getFirst(['extref' => $code, 'partner_id' => $this->me->address_id]);
}
if(!$preorder) {
return \mfResponse::NotFound(["message" => "Preorder not found"]);
}
if($preorder->partner_id != $this->me->address_id) {
return \mfResponse::NotFound(["message" => "Preorder not found"]);
}
// set status flag 200
$preorder->setStatusFlag(200, 1);
return \mfResponse::Ok(["message" => "Status successfully updated."]);
}
/*
* GET /preorder/customerInstallationFeedback
*/
public function getCifData() {
if($this->me->is("Preorderreadonly")) return \mfResponse::Forbidden();
if(!array_key_exists("ciftoken", $this->get) || !$this->get['ciftoken']) {
return \mfResponse::BadRequest(["message" => "ciftoken missing"]);
}
$preorder = \PreorderModel::getFirst(["ciftoken" => $this->get["ciftoken"]]);
if(!$preorder) {
return \mfResponse::NotFound(["message" => "Invalid ciftoken"]);
}
if(!$preorder->adb_hausnummer->netzgebiet_id) {
return \mfResponse::NotFound(["message" => "Invalid ciftoken"]);
}
$network = \NetworkModel::getFirst(["adb_netzgebiet_id" => $preorder->adb_hausnummer->netzgebiet->id]);
if(!$network) {
return \mfResponse::NotFound(["message" => "Invalid ciftoken"]);
}
if($network->owner_id != $this->me->address_id) {
return \mfResponse::NotFound(["message" => "Invalid ciftoken"]);
}
$return = $preorder->getCifdataApiArray();
return \mfResponse::Ok($return);
}
/*
* POST /preorder/customerInstallationFeedback
*/
public function userSetCif() {
if($this->me->is("Preorderreadonly")) return \mfResponse::Forbidden();
//return \mfResponse::InternalServerError();
$ciftoken = false;
if(array_key_exists("ciftoken", $this->post) && $this->post['ciftoken']) {
$ciftoken = $this->post['ciftoken'];
}
if(array_key_exists("ciftoken", $this->get) && $this->get['ciftoken']) {
$ciftoken = $this->get['ciftoken'];
}
if(!$ciftoken) {
return \mfResponse::BadRequest(["message" => "ciftoken missing"]);
}
$preorder = \PreorderModel::getFirst(["ciftoken" => $this->get["ciftoken"]]);
if(!$preorder) {
return \mfResponse::NotFound(["message" => "Invalid ciftoken"]);
}
if(!$preorder->adb_hausnummer->netzgebiet_id) {
return \mfResponse::NotFound(["message" => "Invalid ciftoken"]);
}
$network = \NetworkModel::getFirst(["adb_netzgebiet_id" => $preorder->adb_hausnummer->netzgebiet->id]);
if(!$network) {
return \mfResponse::NotFound(["message" => "Invalid ciftoken"]);
}
if($network->owner_id != $this->me->address_id) {
return \mfResponse::NotFound(["message" => "Invalid ciftoken"]);
}
// set status flag 200
$preorder->setStatusFlag(200, 1);
return \mfResponse::Ok(["message" => "Status successfully updated."]);
}
}