protected function _getLocationDetailsAmplia(SimModel $sim) { $service = $this->getAmpliaService(); /** @var $req \Application\Proto\SupDetail\Data\SimDetailRequest */ $req = $this->_createProto('readSimLocationDetail', $service); // Amplia uses the IMSI to identify the SIM $id = new \Application\Proto\SupProvision\Sim\SimId(); $id->setImsi($sim->getImsi()); $req->setSimId($id); /** @var $response \Application\Proto\SupDetail\Sim\SimLocationDetailResponse */ $response = $this->_sendRequest('readSimLocationDetail', array('protoMessage' => $req), $service); if ($this->_checkGetResponse($response)) { $dataLocation = $response->serialize(new Codec\PhpArray()); $dataLocation = $dataLocation['sim_location_detail']; $result = array(); if (isset($dataLocation['location_manual'])) { $result['locationManual'] = $this->_mapLocationAmplia($dataLocation['location_manual']) ?: null; } //location auto should only be shown if location supplementaryService is enabled //on the sim if (isset($dataLocation['location_auto']) && isset($sim->supplementaryServices->location) && $sim->supplementaryServices->location) { $result['locationAuto'] = $this->_mapLocationAmplia($dataLocation['location_auto']) ?: null; } $result = $this->_convertFieldNamesToCammelCase($result); return $result; } return NULL; }
public static function getSubscriptionId(SimModel $sim) { $subs = new SubscriptionId(); switch (true) { case $sim->getId() !== null: $subs->setType(SubscriptionId\IdType::ID); $subs->setId($sim->getId()); break; case $sim->getIcc() !== null: $subs->setType(SubscriptionId\IdType::ICC); $subs->setId($sim->getIcc()); break; case $sim->getImsi() !== null: $subs->setType(SubscriptionId\IdType::IMSI); $subs->setId($sim->getImsi()); break; case $sim->getMsisdn() !== null: $subs->setType(SubscriptionId\IdType::MSISDN); $subs->setId($sim->getMsisdn()); break; default: throw new InvalidArgumentException("Sim must have one identifier at least"); } return $subs; }