/** * Processa o submit do cadastro de pessoa [ajax] */ public function cadastroSalvarAction() { $aDados = $this->getRequest()->getPost(); $oForm = new Administrativo_Form_CadastroPessoa(); $oForm->carregarCidades($aDados['estado'], $aDados['cidade']); // Verifica se deve validar o combo ou campo texto para o bairro e endereço if (isset($aDados['cod_bairro']) && !empty($aDados['cod_bairro'])) { $oForm->getElement('bairro')->setRequired(FALSE); $oForm->carregarBairros($aDados['cidade']); $oForm->carregarEnderecos($aDados['cod_bairro']); } if (isset($aDados['bairro']) && !empty($aDados['bairro'])) { $oForm->getElement('cod_bairro')->setRequired(FALSE); } // Popula o formulario $oForm->populate($aDados); // Valida o formulario if ($oForm->isValid($aDados)) { $oCadastro = new Administrativo_Model_Cadastro(); $oCadastro->persist($aDados); $aRetornoJson['status'] = TRUE; $aRetornoJson['success'] = 'Requisição de emissão de DMS enviada.'; } else { $aRetornoJson['status'] = FALSE; $aRetornoJson['fields'] = array_keys($oForm->getMessages()); $aRetornoJson['error'][] = 'Preencha os dados corretamente.'; } // Retorna um json com mensagens de erro ou sucesso echo $this->getHelper('json')->sendJson($aRetornoJson); }
/** * Método para persistir os dados do cadastro eventual [Json] * * @return void */ public function salvarAction() { $aDados = $this->getAllParams(); $oForm = new Administrativo_Form_CadastroPessoa(); // Carrega a lista de cidade e seta os selecionados if (!empty($aDados['estado']) && !empty($aDados['cidade'])) { $oForm->carregarCidades($aDados['estado'], $aDados['cidade']); } // Se informado o bairro pelo combo, retira a validação do campo texto if (isset($aDados['cod_bairro']) && !empty($aDados['cod_bairro'])) { $oForm->getElement('bairro')->setRequired(FALSE); $oForm->carregarBairros($aDados['cidade']); } // Se informado o bairro pelo campo texto, retira a validação do combo if (isset($aDados['bairro']) && !empty($aDados['bairro'])) { $oForm->getElement('cod_bairro')->setRequired(FALSE); } // Se informado o bairro pelo combo, retira a validação do campo texto if (isset($aDados['cod_endereco']) && !empty($aDados['cod_endereco'])) { $oForm->getElement('endereco')->setRequired(FALSE); $oForm->carregarEnderecos($aDados['cod_endereco']); } // Se informado o bairro pelo campo texto, retira a validação do combo if (isset($aDados['endereco']) && !empty($aDados['endereco'])) { $oForm->getElement('cod_endereco')->setRequired(FALSE); } if ($aDados['id_perfil'] == 6) { $oForm->getElement('cnpjcpf')->removeDecorator('DBSeller_Validator_CpfCnpj'); $oForm->getElement('cnpjcpf')->addValidator(new DBSeller_Validator_Cnpj()); } else { $oForm->getElement('cnpjcpf')->addValidator(new DBSeller_Validator_CpfCnpj()); } // Popula o formulario $oForm->populate($aDados); // Valida o formulario if ($oForm->isValid($aDados)) { // Recupera os parametros, limpando as máscaras com filters do form $aDados = $oForm->getValues(); // Recupera as configurações do doctrine e inicia a transação $oDoctrine = Zend_Registry::get('em'); $oDoctrine->getConnection()->beginTransaction(); try { $aUsuarioEmail = Administrativo_Model_Usuario::getByAttribute('email', $aDados['email']); if (count($aUsuarioEmail) > 0) { $sUrl = '<a href="' . $this->view->serverUrl('/auth/login/esqueci-minha-senha/') . '">Clique Aqui</a>'; $sMensagemErro = 'Já encontramos um cadastro com este email.<br>'; $sMensagemErro .= "Caso tenha esquecido sua senha. {$sUrl}"; throw new Exception($this->translate->_($sMensagemErro)); } $aUsuarioSistema = Administrativo_Model_Usuario::getByAttribute('login', $aDados['cnpjcpf']); if (count($aUsuarioSistema) > 0) { $sMensagemErro = 'Já encontramos um cadastro com essas informações.<br>'; $sMensagemErro .= 'Entre em contato com a prefeitura para maiores informações.'; throw new Exception($this->translate->_($sMensagemErro)); } $sHash = NULL; $oParametosPrefeitura = Administrativo_Model_Prefeitura::getDadosPrefeituraBase(); if (!$oParametosPrefeitura->getVerificaAutocadastro()) { $sHash = hash('whirlpool', $aDados['cnpjcpf'] . time() . $aDados['email']); $aDados['tipo_liberacao'] = Contribuinte_Model_CadastroPessoa::TIPO_LIBERACAO_USUARIO_CGM; } $aDados['hash'] = $sHash; $oCadastro = new Contribuinte_Model_CadastroPessoa(); $oCadastro->setDadosEventual($aDados); $oCadastro->persist(); if ($oParametosPrefeitura->getVerificaAutocadastro()) { $sTextoEmail = $this->view->render('cadastro-eventual/email-aviso-fiscal.phtml'); $aUsuariosFiscais = Administrativo_Model_Usuario::getByAttribute('perfil', 5); // Cria um array, mesmo quando for somente um objeto if (is_object($aUsuariosFiscais)) { $aUsuariosFiscais = array($aUsuariosFiscais); } if (is_array($aUsuariosFiscais)) { foreach ($aUsuariosFiscais as $oUsuarioFiscal) { // Envia email apenas para os fiscais habilitados if ($oUsuarioFiscal->getHabilitado()) { DBSeller_Helper_Mail_Mail::send($oUsuarioFiscal->getEmail(), $this->translate->_('ECidadeOnline2 - Solicitação de Contribuinte Eventual'), $sTextoEmail); } } } // Envio do email para o contribuinte, avisando da espera do envio do email $sTextoEmail = $this->view->render('cadastro-eventual/email-aviso-espera-liberacao-contribuinte.phtml'); DBSeller_Helper_Mail_Mail::send($aDados['email'], $this->translate->_('ECidadeOnline2 - Solicitação de Cadastro'), $sTextoEmail); } else { //link base do sistema + caminho para geração de senha $this->view->sLinkSenha = $this->view->serverUrl("/default/cadastro-eventual/verificacao/hash/{$sHash}"); $sTextoEmail = $this->view->render('cadastro-eventual/email-aviso-contribuinte.phtml'); $lEmail = DBSeller_Helper_Mail_Mail::send($aDados['email'], $this->translate->_('ECidadeOnline2 - Confirmação de Cadastro'), $sTextoEmail); if (!$lEmail) { throw new Exception($this->translate->_('Email não enviado. Favor contate o suporte da prefeitura.')); } } $sMensagemErro = 'Cadastro efetuado com sucesso.<br>'; $sMensagemErro .= 'Siga as instruções enviadas para o seu email para continuar o cadastro.'; $aRetornoJson['status'] = TRUE; $aRetornoJson['url'] = $this->view->serverUrl(); $aRetornoJson['success'] = $this->translate->_($sMensagemErro); $oDoctrine->getConnection()->commit(); } catch (Exception $oErro) { $oDoctrine->getConnection()->rollback(); $aRetornoJson['status'] = FALSE; $aRetornoJson['error'][] = $oErro->getMessage(); } } else { $aRetornoJson['status'] = FALSE; $aRetornoJson['fields'] = array_keys($oForm->getMessages()); $aRetornoJson['error'][] = $this->translate->_('Preencha os dados corretamente.'); } // Retorna um json com mensagens de erro ou sucesso echo $this->getHelper('json')->sendJson($aRetornoJson); }