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; }
/** * Add alarms list to sim * * @param SimModel $sim */ protected function _addAlarms(SimModel $sim) { try { // Aggregators cannot list alarms, but they can retrieve // alarm list for a sim. Strange behavior, I know. // GLOBALPORTAL-94024 // $dumbModel = new AlarmModel(); // $this->_helper->allowed('list', $dumbModel); $result = array(); /** * @var $alarmService \Application\Service\AlarmService */ $alarmService = \Application\Service\AlarmService::getInstance(); //prepare filter $filterValues = array(); $filterValues[AlarmFilterFields::SIM_ICC] = $sim->getIcc(); $filterValues[AlarmFilterFields::STATE] = "!" . AlarmModel::STATE_CLOSED; $filterValues['sortBy'] = AlarmSortingFields::OPEN_TIME; if (\App::getOrgUserLogged()->type == OrgAggregatorModel::ORG_TYPE) { $filterValues[AlarmFilterFields::ALARM_TYPE] = "!" . AlarmModel::TYPE_SUPERVISION; } $filterList = $alarmService->buildFilterList($filterValues); $alarms = $alarmService->listAll($filterList); $alarms->getIterator()->addPlugin(new Stream\Plugin\Allowed(array('permission' => 'read'))); $alarms->getIterator()->addPlugin(new Stream\Plugin\FilterNotAllowedFields(array('permission' => 'read_field'))); // Add list to sim response $sim->setAlarms($alarms->getItems()); } catch (\Exception $e) { App::log()->err("An exception occurred while retrieving alarms: " . $e->getMessage()); // No, do nothing } }