/** * Salva dados de endereço, telefone e email vindos do infoconv quando for cadastro de nova PJ * * @param integer $sqPessoa * @param \Core_Dto_Mapping $dto * @return \Principal\Service\PessoaJuridica */ private function _processAddressPhoneEmail($sqPessoa, \Core_Dto_Mapping $dto) { $infoconvAddress = $dto->getAddress_infoconv(); $infoconvPhone = $dto->getPhone_infoconv(); $infoconvEmail = $dto->getEmail_infoconv(); if ($infoconvAddress) { $infoconvAddress = json_decode(str_replace('\\', '', $infoconvAddress)); $addressMethod = 'libCorpSaveEndereco'; $addressRepository = 'app:Endereco'; $addressFilters = array('sqCep' => 'Digits'); $arrAddressValues = array(array('name' => 'sqPessoa', 'value' => $sqPessoa), array('name' => 'sqTipoEndereco', 'value' => \Core_Configuration::getCorpTipoEnderecoInstitucional())); $fnCropString = function ($str, $length) { if (mb_strlen($str, 'UTF-8') > $length) { $str = mb_substr($str, 0, $length, 'UTF-8'); } return $str; }; foreach ($infoconvAddress as $key => $value) { switch ($key) { case 'sqEstado': //infoconv retorno a sigla do estado if (!is_numeric($value)) { $arrEntEstado = $this->_getRepository('app:Estado')->findBySgEstado(trim($value)); if ($arrEntEstado) { $value = current($arrEntEstado)->getSqEstado(); } } break; case 'txComplemento': case 'noBairro': $value = $fnCropString($value, 100); break; case 'txEndereco': $value = $fnCropString($value, 200); break; case 'nuEndereco': $value = $fnCropString($value, 6); break; default: break; } $arrAddressValues[] = array('name' => $key, 'value' => $value); } //endforeach; //salva os dados do endereco $resultAddress = $this->saveFormWebService($addressRepository, $addressMethod, $arrAddressValues, $addressFilters); } if ($infoconvPhone) { $infoconvPhone = json_decode(str_replace('\\', '', $infoconvPhone)); $phoneMethod = 'libCorpSaveTelefone'; $phoneRepository = 'app:Telefone'; $phoneFilters = array('nuDdd' => 'Digits', 'nuTelefone' => 'Digits'); $arrPhoneValues = array(array('name' => 'sqPessoa', 'value' => $sqPessoa), array('name' => 'sqTipoTelefone', 'value' => \Core_Configuration::getCorpTipoTelefoneInstitucional())); foreach ($infoconvPhone as $key => $value) { $arrPhoneValues[] = array('name' => $key, 'value' => $value); } //endforeach; //salva os dados do telefone $resultPhone = $this->saveFormWebService($phoneRepository, $phoneMethod, $arrPhoneValues, $phoneFilters); } if ($infoconvEmail) { $infoconvEmail = json_decode(str_replace('\\', '', $infoconvEmail)); $emailMethod = 'libCorpSaveEmail'; $emailRepository = 'app:Email'; $arrEmailValues = array(array('name' => 'sqPessoa', 'value' => $sqPessoa), array('name' => 'sqTipoEmail', 'value' => \Core_Configuration::getCorpTipoEmailInstitucional())); $arrEmailValues[] = array('name' => 'txEmail', 'value' => $infoconvEmail); //salva os dados do email $resultEmail = $this->saveFormWebService($emailRepository, $emailMethod, $arrEmailValues); } return $this; }