예제 #1
0
 /**
  * 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;
 }