public function testInvalidRestrictionsType()
 {
     $restrictions = new RestrictionModel($this->_data);
     $result = $this->_validator->isValid($restrictions->getId());
     $this->assertFalse($result);
     $messages = $this->_validator->getMessages();
     $this->assertArrayHasKey(App_Validate_Ericsson_RestrictionsExistsById::ERROR_INVALID_TYPE, $messages);
 }
 /**
  * Validate element value
  *
  * If a translation adapter is registered, any error messages will be
  * translated according to the current locale, using the given error code;
  * if no matching translation is found, the original message will be
  * utilized.
  *
  * Note: The *filtered* value is validated.
  *
  * @param  array   $data
  * @param  mixed   $context
  * @return boolean
  */
 public function isValid($data, $context = null, $removeNotPresentFields = false)
 {
     if (!($data instanceof RestrictionModel || $this->_acceptArrayAsModel && is_array($data))) {
         $this->_messages = array();
         $this->_messages[self::NOT_RESTRICTIONS] = $this->_messageTemplatesUser[self::NOT_RESTRICTIONS];
         return false;
     }
     if (!parent::isValid($data, $context, $removeNotPresentFields)) {
         return false;
     }
     if (!$data instanceof RestrictionModel) {
         $data = new RestrictionModel($data);
     }
     $contracts = ContractService::getInstance()->getContractsByServiceType('csrm')->getItems();
     if (!empty($contracts)) {
         $validator = new \Zend_Validate_NotEmpty();
     } else {
         $validator = new \App_Validate_Empty();
     }
     if (!$validator->isValid($data->steering)) {
         $this->_messages['steering'] = $validator->getMessages();
         return false;
     }
     // If Voice HOME = SMS HOME, roaming is linked
     if ($data->getVoice() && $data->getVoice()->getMo() && $data->getSms() && $data->getSms()->getMo() && $data->getVoice()->getMo()->getHome() === $data->getSms()->getMo()->getHome() && $data->getVoice()->getMo()->getRoaming() !== $data->getSms()->getMo()->getRoaming()) {
         $this->_messages = array();
         $this->_messages[self::NOT_SYNC_VOICE_SMS_ROAMING] = $this->_messageTemplatesUser[self::NOT_SYNC_VOICE_SMS_ROAMING];
         return false;
     }
     //      https://jira.tid.es/browse/GLOBALPORTAL-115352
     //         if ($data->getSms() && $data->getSms()->getMo() &&
     //             // If HOME is disabled and Roaming Enabled
     //             (($data->getSms()->getMo()->getHome() &&  !$data->getSms()->getMo()->getRoaming()) ||
     //                 // If HOME is enabled and Roaming !== International
     //                 (isset($data->getSms()->getMo()->roaming) &&
     //                     $data->getSms()->getMo()->getRoaming() !== $data->getSms()->getMo()->getInternational()))) {
     //             $this->_messages = array();
     //             $this->_messages[self::NOT_ROAMING_INTERNATIONAL_SAME_VALUE] =
     //                 $this->_messageTemplatesUser[self::NOT_ROAMING_INTERNATIONAL_SAME_VALUE];
     //             return false;
     //         }
     // Validate leading/commercial OB
     $org = \App::getOrgUserLogged();
     $orgProvider = OrgService::getInstance()->getParentByType($org->id, OrgServiceProviderModel::ORG_TYPE);
     if ($orgProvider && \Application\Service\OrgService::getInstance()->isCommercial($orgProvider)) {
         $validator = new RestrictionsCommercialValidate();
         if (!$validator->isValid($data, $context, $removeNotPresentFields)) {
             $this->_messages = $validator->getMessages();
             return false;
         }
     }
     return true;
 }
 protected function _updateEricsson(Model\RestrictionModel $restrictions)
 {
     $methodName = self::METHOD_NAME_UPDATE;
     try {
         $proto = $this->_createProto($methodName);
         $createData = new Restrictions\RestrictionsData();
         $proto->setData($createData);
         $mappedData = $this->_mapModelToEricssonModel($restrictions->exportData());
         $createData->parse($mappedData, new \DrSlump\Protobuf\Codec\PhpArray());
         $proto->setId($mappedData['id']);
         $response = $this->_sendRequest($methodName, array('protoMessage' => $proto));
     } catch (Exception $e) {
         \App::log()->CRIT($e);
     }
     $this->_checkPostResponse($response);
     if ($response->getResult()->getCode() == 0 && $response->getResult()->getReasonCode()) {
         $data = array('reason' => $response->getResult()->getReason(), 'code' => $response->getResult()->getReasonCode() ?: $response->getResult()->getCode());
         throw new EricssonException($response->getResult()->getReason(), $data, null, 304);
     }
     $restrictions->setId($mappedData['id']);
     return $restrictions->getId();
 }
 protected function _changeRestriction(\Application\Proto\SubscriptionSelect $sims, \Application\Model\RestrictionModel $restriction, $watcher)
 {
     $methodName = self::METHOD_NAME_CHANGE_RESTRICTION;
     /**
      * @var  $proto \Application\Proto\Inventory\ChangeRestrictionsQuery
      */
     $proto = $this->_createProto($methodName);
     $proto->setSubscriptions($sims);
     $restrictionMapper = RestrictionMapper::getInstance();
     $mappedData = $restrictionMapper->_mapModelToEricssonModel($restriction->exportData());
     $proto->parse($mappedData, new \DrSlump\Protobuf\Codec\PhpArray());
     // Return the transaction ID
     return $this->_sendAsyncRequest($methodName, $proto, $sims, array(), $watcher);
 }