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 to 200 if($preorder->status->code < 200) { $new_status = \PreorderstatusModel::getFirst(["code" => 200]); if(!$new_status) { return \mfResponse::InternalServerError(); } $preorder->status_id = $new_status->id; $preorder->save(); } 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 to 200 if($preorder->status->code < 200) { $new_status = \PreorderstatusModel::getFirst(["code" => 200]); if(!$new_status) { return \mfResponse::InternalServerError(); } $preorder->status_id = $new_status->id; $preorder->save(); } return \mfResponse::Ok(["message" => "Status successfully updated."]); } }