✏️ 正在编辑: PropostaController.php
路径:
/srv/systems_dir/yuppiecred-bkp/application/controllers/PropostaController.php
提示:
您可以编辑任何文件(包括二进制文件),但请注意不当修改可能导致文件损坏。
<?php class PropostaController extends Zend_Controller_Action { protected $_bucketFolder = 'propostas'; /** @var Service_Proposta */ private $service; public function init() { $this->service = service('proposta'); $this->view->tab = $this->_getParam('tab', 0); } public function indexAction() { if (Yuppie_Auth::getIdentity()->grupo == 'Corretor') { $this->_helper->layout->setLayout('layout_corretor'); } $form = new Form_Filtro_Proposta(); $request = $this->getRequest(); $ns = new Zend_Session_Namespace('filtro_proposta'); $fields = $form->getValues(); $fields['digitado_banco'] = '0'; if ($request->isPost() && $form->isValid($request->getPost())) { $ns->unsetAll(); $ns->filtro_proposta = $request->getPost(); } if (!empty($ns->filtro_proposta)) { $fields = $ns->filtro_proposta; unset($fields['btn_filtrar']); } if (Yuppie_Auth::getIdentity()->grupo == 'Supervisor') { $fields['gerente_id'] = Yuppie_Auth::getIdentity()->id; } $form->populate($fields); $proposta = new Model_Proposta(); $fields['anexo_formulario'] = 1; $fields['anexo_capa'] = 1; if (!empty($fields)) { try { $propostas = $proposta->listar($fields, null, null, "contratos.data_cadastro ASC"); $this->view->propostas = $propostas; } catch (Exception $e) { $this->_helper->flashMessenger(['error' => $e->getMessage()]); } } $this->view->form = $form; } public function saveAction() { $request = $this->getRequest(); $usuario = Yuppie_Auth::getIdentity(); $id = (int) $request->getParam('id'); $clonar = (bool) $request->getParam('clonar'); $ns = new Zend_Session_Namespace(); $acl = $ns->acl; $idClienteBase = $request->getParam('id_cliente'); if ($usuario->grupo == 'Corretor'){ $this->_helper->layout->setLayout('layout_corretor'); } $form = $usuario->grupo == 'Corretor' || $usuario->corretor_id > 0 ? new Form_PropostaCorretor() : new Form_Proposta(); if ( $request->isPost() ){ try{ $isValid = $form->isValid($request->getPost()); } catch (Exception $ex) { $isValid = false; $this->_helper->flashMessenger(['error' => $ex->getMessage()]); } if( $isValid ){ $params = $request->getParams(); $permissao = $acl->isAllowed( $usuario->grupo, 'proposta', 'permitir-nao-anexar-documentos' ); $token = $request->getParam('token'); $ns = new Zend_Session_Namespace($token); $docsAnexados = $ns->{$token}; if ((!$permissao && (!empty($params['id']) || count($docsAnexados) > 0)) || $permissao){ try { $proposta = new Model_Proposta($request->getPost()); $cliente = new Model_Cliente($request->getPost()); $result = $proposta->adicionar($proposta, $cliente); $valid = $proposta->validarAumentoSalarial($proposta); if ($result > 0 ){ if (count($docsAnexados) > 0){ foreach ($docsAnexados as $registro){ $anexo = new Model_ContratoAnexo($registro); $anexo->setContratoId($result); $anexo->salvar(); } } unset($ns->{$token}); $res = $proposta->fraude($result, $request->getPost()); $modelCorretor = new Model_Corretor(); $dadosCorretor = $modelCorretor->exibir($form->getValue('corretor_id')); $msg = "Nova proposta enviada"; $args = [ "cod_assunto" => 1, "url" => "proposta/update/id/$result" ]; if (get_class($form) == "Form_PropostaCorretor" && $res){ $msg = "Proposta entrou na esteira anti-fraude."; } // Core_Notificacao_PushBrowser::notify('propostas', // "Nova proposta do corretor: $dadosCorretor->nome", // $msg, // $args // ); if ($result && $valid && !$params['id']){ $this->_redirect("proposta/aumento-salarial/proposta_id/$result"); } $success = ['success' => 'Dados salvos com sucesso.']; $this->_helper->flashMessenger($success); $this->_redirect("proposta"); $contrato = new Model_Contrato(); $acaoJudicial = $contrato->findAcaoJudicialProposta($cliente->getId()); if (!is_null($cliente->getId()) && $acaoJudicial){ $alert = ['alert' => 'Atenção! Cliente possui ação judicial.']; $this->_helper->flashMessenger($alert); } } else { $this->_helper->flashMessenger([ 'alert' => 'Atenção! A proposta não foi salva.' ]); } } catch ( Exception $e ) { $this->_helper->flashMessenger(['error' => $e->getMessage()]); } } else { $this->_helper->flashMessenger([ 'alert' => 'Atenção! Preencha os campos corretamente. Você deve anexar pelo menos um documento.' ]); } } } if( $id > 0 ){ $proposta = $clonar ? new Model_Contrato() : new Model_Proposta(); $dados = $proposta->exibir($id); if( empty($dados['cliente_id']) ){ $this->_helper->flashMessenger(array( 'alert' => 'Atenção! Cliente não identificado nesta proposta!' )); $this->_helper->redirector('index'); return; } //exibe histórico de pendências $formHistorico = new Form_HistoricoPendencia(); $formHistorico->getElement('contrato_id')->setValue($id); $historicoPendencia = new Model_HistoricoPendencia(); $historicoPendencias = $historicoPendencia->listar(array( 'contrato_id' => $id )); $this->view->historico_pendencias = $historicoPendencias; $this->view->form_historico_pendencias = $formHistorico; $dbTipos = new Model_DbTable_Tipos(); $tipo = $dbTipos->fetchRow("tipo = 'ANEXO_CONTRATO' AND descricao = 'Outros documentos'"); //exibe o formulário para anexar documentos $formDocumento = new Form_PropostaDocumento(); $documento = new Model_ContratoAnexo(); $documentos = $documento->listar(array( 'contrato_id = ?' => $id, 'tipo_id = ?' => $tipo['id'] )); $this->view->form_proposta_documento = $formDocumento; $this->view->documentos = $documentos; $cliente = new Model_Cliente(); $dadosCliente = $cliente->exibir($dados['cliente_id']); $dadosCliente = $dadosCliente->toArray(); unset($dadosCliente['id'], $dadosCliente['obs'], $dadosCliente['empresa_id'], $dadosCliente['anexo_cpf'], $dadosCliente['anexo_rg'], $dadosCliente['anexo_contra_cheque']); $populate = array_merge($dados->toArray(), $dadosCliente); if($clonar){ if(isset($populate['id'])){ $populate['id'] = ''; } if(isset($populate['numero_contrato']) && !empty($populate['numero_contrato'])){ unset($populate['numero_contrato']); } if (isset($populate['data_emissao']) && !empty($populate['data_emissao'])){ unset($populate['data_emissao']); } } $form->populateSave($populate); } if ($idClienteBase && empty($id)) { $cliente = Model_Cliente::salvarClienteOportunidade($idClienteBase); $cliente['valor_bruto'] = 0; $cliente['valor_liquido'] = 0; $cliente['valor_prestacao'] = 0; $cliente['anterior_prazo'] = 0; $cliente['anterior_parcelas_restantes'] = 0; $cliente['anterior_saldo_devedor'] = 0; $cliente['saldo_banco'] = 0; $cliente['valor_reducao'] = 0; $cliente['valor_beneficio'] = 0; $cliente['tipo'] = 0; $form->populate($cliente); } $this->view->tab = $request->getParam('tab', 0); $this->view->form = $form; $this->view->acl = $acl; } public function updateAction() { $acl = (new Zend_Session_Namespace())->acl; $usuario = Yuppie_Auth::getIdentity(); $request = $this->getRequest(); $id = (int) $request->getParam('id'); $form = $usuario->grupo == 'Corretor' ? new Form_PropostaCorretor() : new Form_Proposta(); if ($acl->isAllowed($usuario->grupo, 'desativar-atualizar-observacao-proposta')){ $form->getElement('obs')->setAttrib('readonly', 'readonly'); } if ( $request->isPost() ){ try{ $isValid = $form->isValid($request->getPost()); } catch (Exception $ex) { $isValid = false; $this->_helper->flashMessenger(['error' => $ex->getMessage()]); } if( $isValid ){ $token = $request->getParam('token'); $ns = new Zend_Session_Namespace($token); $docsAnexados = $ns->{$token}; try { $proposta = new Model_Proposta($request->getPost()); $cliente = new Model_Cliente($request->getPost()); $result = $proposta->salvar($proposta, $cliente); if ($result > 0 && $usuario->grupo != 'Corretor' && isset($files['file_anexo_formulario'])){ $mensagem = "Prezado parceiro(a), de acordo com norma vigente do banco," . "é necessária a assinatura do cliente no formulário em anexo. <br>" . "Aguardamos sua devolução para que o contrato não seja pendenciado.<br>" . "Atenciosamente,<br> A direção."; $email = new Core_Mail(); $resultEmail = $email->enviarEmailCorretor( "Novo formulário de proposta", $mensagem, $proposta->getCorretorId(), $proposta->getAnexoFormulario()); $this->_helper->flashMessenger([ $resultEmail['status'] == 0 ? 'error' : 'success' => $resultEmail['msg'] ]); } if ($result > 0){ if(count($docsAnexados) > 0){ foreach ($docsAnexados as $registro) { $anexo = new Model_ContratoAnexo($registro); $anexo->setContratoId($result); $anexo->salvar(); } } unset($ns->{$token}); if ($proposta->verificarReAnexo($id)){ // $modelCorretor = new Model_Corretor(); // $dadosCorretor = $modelCorretor->exibir($proposta->getCorretorId()); // (new Core_Notificacao_PushBrowser($usuario))->notify( // 'Propostas', // "Proposta obteve reanexo.", // "Corretor: $dadosCorretor->nome", // [ // "cod_assunto" => 2, // "url" => "proposta/update/id/$result" // ] // ); } $proposta->fraude($proposta->getId(), $request->getPost()); $this->_helper->flashMessenger(array( 'success' => 'Dados salvos com sucesso.' )); } else { $this->_helper->flashMessenger(array( 'alert' => 'Atenção a proposta não foi salva.' )); } } catch ( Exception $e ) { $this->_helper->flashMessenger(array( 'error' => $e->getMessage() )); } } else { $this->_helper->flashMessenger(array( 'alert' => 'Atenção! Preencha os campos corretamente. Você deve anexar pelo menos um documento.' )); } } if ($id > 0){ $proposta = new Model_Proposta(); $dados = $proposta->exibir($id); if (!$dados){ $this->_helper->flashMessenger(array( 'alert' => 'Proposta inacessível.' )); $this->_helper->redirector("index"); } //exibe histórico de pendências $formHistorico = new Form_HistoricoPendencia(); $formHistorico->getElement('contrato_id')->setValue($id); $historicoPendencia = new Model_HistoricoPendencia(); $historicoPendencias = $historicoPendencia->listar(array( 'contrato_id' => $id )); $this->view->form_historico_pendencias = $formHistorico; $this->view->historico_pendencias = $historicoPendencias; $dbTipos = new Model_DbTable_Tipos(); $tipo = $dbTipos->fetchRow("tipo = 'ANEXO_CONTRATO' AND descricao = 'Outros documentos'"); //exibe o formulário para anexar documentos $formDocumento = new Form_PropostaDocumento(); $documento = new Model_ContratoAnexo(); $documentos = $documento->listar(array( 'contrato_id = ?' => $id, 'tipo_id = ?' => $tipo['id'] )); $this->view->form_proposta_documento = $formDocumento; $this->view->documentos = $documentos; $cliente = new Model_Cliente(); $dadosCliente = $cliente->exibir($dados['cliente_id']); if( !$dadosCliente ) { $this->_helper->flashMessenger(['alert' => 'Cliente inválido.']); $this->_helper->redirector("index"); } $dadosCliente = $dadosCliente->toArray(); unset($dadosCliente['id'], $dadosCliente['obs'], $dadosCliente['empresa_id'], $dadosCliente['anexo_cpf'], $dadosCliente['anexo_rg'], $dadosCliente['anexo_contra_cheque'], $dadosCliente['numero_beneficio']); $populate = array_merge($dados->toArray(), $dadosCliente); $form->populateUpdate($populate); } if ($usuario->grupo == 'Corretor' ){ $this->_helper->layout->setLayout('layout_corretor'); } if ($request->getParam('popup')){ $this->_helper->layout->setLayout('layout_popup'); if (get_class($form) == "Form_Proposta"){ $form->_editElements(); $formDocumento->removeElement('btn_adicionar'); $formHistorico->removeElement('btn_save'); } } $this->view->tab = $request->getParam('tab', 0); $this->view->form = $form; $this->view->acl = $acl; $this->render('save'); } public function historicoPendenciasAction() { $request = $this->getRequest(); $form = new Form_HistoricoPendencia(); $propostaId = (int) $request->getParam('contrato_id'); $digitador = $request->getParam('digitador'); $descricao = $request->getParam('descricao'); if( $request->isPost() && $propostaId > 0 ){ if( $form->isValid($request->getPost()) ){ $historicoPendencia = new Model_HistoricoPendencia(); try { if( $historicoPendencia->salvarHistorico($descricao, $digitador, $propostaId) ){ $result = $historicoPendencia->notificarPendencia($descricao, $propostaId, $this); if( $result['status'] ){ $this->_helper->flashMessenger(array( 'success' => 'Notificação de pendência enviada com sucesso!' )); } else { $this->_helper->flashMessenger(array( 'alert' => $result['msg'] )); } $this->_helper->flashMessenger(array( 'success' => 'Descrição adicionada com sucesso!' )); } else { $this->_helper->flashMessenger(array( 'alert' => 'Atenção! Nenhuma descrição foi adicionada' )); } } catch ( Exception $ex ) { $this->_helper->flashMessenger(array( 'error' => $ex->getMessage() )); } } else { $this->_helper->flashMessenger(array( 'alert' => 'Preencha os campos corretamente.' )); } } $this->_redirect("/proposta/save/id/$propostaId/#mytabcontainer-frag-2"); } public function deleteHistoricoAction() { $request = $this->getRequest(); $id = (int) $request->getParam('id'); if( $id > 0 ){ $pendencia = new Model_HistoricoPendencia(); $pendencia->excluir($id); } $this->_redirect('/proposta/save/id/' . $request->getParam('contrato_id') . '/#mytabcontainer-frag-2'); } public function resolveHistoricoAction() { $request = $this->getRequest(); $id = (int) $request->getParam('id'); try { if ($id > 0) { $pendencia = new Model_HistoricoPendencia(); $result = $pendencia->resolverPendencia($id); } if ($result) { $historicoPendencia = (new Model_DbTable_HistoricoPendencia())->fetchRow(['id = ?' => $id])->toArray(); $pendencia->notificarPendencia($historicoPendencia['descricao'], $historicoPendencia['contrato_id'], $this, true); } } catch (Exception $ex) { $this->_helper->flashMessenger(['error' => $ex->getMessage()]); } $this->_redirect('/proposta/save/id/' . $request->getParam('contrato_id') . '/#mytabcontainer-frag-2'); } public function deleteAction() { $request = $this->getRequest(); $id = (int) $request->getParam('id'); if( $id > 0 ){ $proposta = new Model_Proposta(); $proposta->excluir($id); } $this->_redirect('/proposta'); } public function getDadosClienteAction() { $request = $this->getRequest(); $cpf = $request->getParam('cpf'); $result = null; if( !empty($cpf) ){ $filter = new Zend_Filter(); $cliente = new Model_Cliente(); $dados = $cliente->existe($filter->filter($cpf)); if( $dados != null ){ $dados = $dados->toArray(); $cliente->setOptions($dados); $proposta = $cliente->getDadosUltimaProposta(); $dados['data_nascimento'] = $dados['data_nascimento'] != null ? date('d/m/Y', strtotime($dados['data_nascimento'])) : ''; $dados['data_expedicao'] = $dados['data_expedicao'] != null ? date('d/m/Y', strtotime($dados['data_expedicao'])) : ''; $dados['banco_beneficiado'] = $proposta->banco_beneficiado ?? null; $dados['agencia_beneficiado'] = $proposta->agencia_beneficiado ?? null; $dados['conta_beneficiado'] = $proposta->conta_beneficiado ?? null; $result = $dados; } } $this->_helper->json($result); } public function efetivarAction() { $request = $this->getRequest(); $id = (int) $request->getParam('id'); $proposta = new Model_Proposta(); $contratos = $request->getParam('contratos'); $contratos = $contratos ? $contratos : array( $id ); $efetivadas = $notificadas = $naoEfetivadas = 0; foreach ( $contratos as $c ) { try{ $efetivacao = $proposta->efetivar($c); } catch (Exception $ex) { $this->_helper->flashMessenger(array( 'alert' => $ex->getMessage() )); continue; } if( $efetivacao > 0 ){ $efetivadas++; //dispara mensagem com notificação de proposta efetivada $dbtPermissoes = new Model_DbTable_Permissao(); $permissao = $dbtPermissoes->getPermissaoByResourceAndGrupo( "bloquear-notificacao-proposta-efetivada", "Corretor"); if( isset($permissao) && !$permissao['allow'] ){ $model = new Model_Contrato(); $contrato = $model->exibir($c); $corretor = $contrato->findParentRow('Model_DbTable_Corretor'); if( !$corretor ){ $this->_helper->flashMessenger(array( 'error' => "Erro ao notificar efetivação: corretor não identificado." )); continue; } $modelEmpresa = new Model_Empresa(); $empresa = $modelEmpresa->exibir(Yuppie_Auth::getIdentity()->empresa_id); if( !$empresa ){ $this->_helper->flashMessenger(array( 'error' => "Erro ao notificar efetivação: empresa não identificada." )); continue; } $this->view->contrato = $contrato; try{ $email = new Core_Mail(); $result = $email->enviarMensagemHtml( $corretor->nome, $corretor->email, utf8_decode("Contrato efetivado - $empresa->nome"), $this->view->render("proposta/notificacao-proposta-efetivada.phtml") ); } catch (Exception $e){ $this->_helper->flashMessenger(array( 'error' => $e->getMessage() )); } if(!empty($result['status'])){ $notificadas++; } elseif(!empty($result['msg'])) { $this->_helper->flashMessenger(array( 'error' => $result['msg'] )); } } } else { $naoEfetivadas++; } } if( $efetivadas > 0 ){ $this->_helper->flashMessenger(array( 'success' => "$efetivadas proposta(s) efetivada(s) com sucesso e $notificadas notificada(s)." )); } if( $naoEfetivadas > 0 ){ $this->_helper->flashMessenger(array( 'alert' => "$naoEfetivadas proposta(s) não efetivada(s)! Verifique se o número do contrato foi informado ou se já existe." )); } $this->_forward('index'); } public function imprimirAction() { $this->_helper->layout->setLayout('layout_impressao'); $id = $this->_getParam('id'); $mProposta = new Model_Proposta(); $proposta = $mProposta->exibir($id); $mProposta->registrarImpressao($id); $this->view->proposta = $proposta; } public function digitadoAction() { $request = $this->getRequest(); $id = (int) $request->getParam('id'); $status = $request->getParam('status'); if( $id > 0 ){ $modelProposta = new Model_Proposta(); $proposta = $modelProposta->exibir($id); if( !$proposta ){ $this->_helper->flashMessenger(array( 'alert' => "Proposta não identificada")); $this->_helper->redirector('index'); return; } try{ $result = $modelProposta->definirDigitadoBanco($id, $status); } catch (Exception $ex) { $this->_helper->flashMessenger(array( 'alert' => $ex->getMessage() )); } if( $status > 0 ){ if( $result > 0 ){ //dispara mensagem com notificação de contrato digitado try { $corretor = $proposta->findParentRow('Model_DbTable_Corretor'); if( !$corretor ){ throw new Core_Exception("Erro ao notificar digitação: corretor não identificado."); } $modelEmpresa = new Model_Empresa(); $empresa = $modelEmpresa->exibir(Yuppie_Auth::getIdentity()->empresa_id); if( !$empresa ){ throw new Core_Exception("Erro ao notificar digitação: empresa não identificada."); } $this->view->proposta = $proposta; $email = new Core_Mail(); $notificacao = $email->enviarMensagemHtml( $corretor->nome, $corretor->email, utf8_decode("Contrato digitado - $empresa->nome"), $this->view->render("proposta/notificacao-proposta-digitada.phtml") ); } catch ( Exception $e ) { $this->_helper->flashMessenger(array( 'error' => $e->getMessage() )); } $this->_helper->flashMessenger(array( 'success' => 'Proposta marcada como digitada no banco com sucesso.' )); if($notificacao){ $this->_helper->flashMessenger(array( 'success' => 'Notificação de digitação enviada com sucesso.' )); } else { $this->_helper->flashMessenger(array( 'alert' => 'Notificação de digitação não enviada.' )); } } else { $this->_helper->flashMessenger(array( 'alert' => 'Erro ao tentar marcar proposta como ' . 'digitada no banco.' )); } } else if( $status < 0 ){ if( $result > 0 ){ $this->_helper->flashMessenger(array( 'success' => 'Proposta marcada com pendências de digitação.' )); } else { $this->_helper->flashMessenger(array( 'alert' => 'Erro ao tentar marcar proposta com pendências de digitação.' )); } } else { if( $result > 0 ){ $this->_helper->flashMessenger(array( 'alert' => 'Proposta já digitada no banco.' )); } else { $this->_helper->flashMessenger(array( 'alert' => 'Erro ao tentar remover marcação de proposta.' )); } } } $this->_helper->redirector('index'); } public function preCadastroAction() { if( Yuppie_Auth::getIdentity()->grupo == 'Corretor' ){ $this->_helper->layout->setLayout('layout_corretor'); } $request = $this->getRequest(); $form = new Form_PreCadastroProposta(); if( $request->isPost() && $form->isValid($request->getPost()) ){ try { $cliente = new Model_Cliente($request->getPost()); $proposta = new Model_Proposta($request->getPost()); $proposta->salvar($proposta, $cliente); $this->_helper->flashMessenger(array( 'success' => 'Pré-cadastro realizado com sucesso' )); } catch ( Exception $e ) { $this->_helper->flashMessenger(array( 'error' => 'Não foi possível realizar o pré-cadastro' )); } } $this->view->form = $form; } public function permitirNaoAnexarDocumentosAction() { //Permissão que permite não anexar um dos documentos } public function addDocumentoAction() { $request = $this->getRequest(); $result = null; if ($request->isPost()) { $fields = $request->getPost(); try{ Upload::save((new Zend_File_Transfer_Adapter_Http()), $fields, "propostas"); } catch (Exception $ex) { unset($fields['arquivo']); $this->_helper->flashMessenger([ 'error' =>$ex->getMessage() ]); } if (!empty($fields['arquivo'])) { $dbTipos = new Model_DbTable_Tipos(); $tipo = $dbTipos->fetchRow("tipo = 'ANEXO_CONTRATO' AND descricao = 'Outros documentos'"); $fields['tipo_id'] = $tipo['id']; $documento = new Model_ContratoAnexo($fields); $result = $documento->salvar(); } } if ($result) { $this->_helper->flashMessenger([ 'success' => 'Documento adicionado com sucesso.' ]); } else { $this->_helper->flashMessenger([ 'alert' => 'Atenção! O documento não foi anexado.' ]); } $this->_redirect('/proposta/update/id/' . $request->getParam('contrato_id') . '/#mytabcontainer-frag-3'); } public function deleteDocumentoAction() { $request = $this->getRequest(); $id = (int) $request->getParam('id'); if( $id > 0 ){ $dbContratoAnexo = new Model_DbTable_ContratoAnexo(); $anexo = $dbContratoAnexo->fetchRow("id = $id"); $filename = UPLOAD_PATH . "/{$anexo['arquivo']}"; if (file_exists($filename)){ unlink($filename); } $documento = new Model_ContratoAnexo(); Yuppie_Log::write("Exclusão de anexo pelo deleteDocumentoAction: ". print_r($anexo, true), $this); $result = $documento->excluir($id); if( $result > 0 ){ $this->_helper->flashMessenger(array( 'success' => 'Documento removido com sucesso.' )); } else { $this->_helper->flashMessenger(array( 'alert' => 'Atenção! O documento não foi removido.' )); } } $this->_redirect('/proposta/update/id/' . $request->getParam('contrato_id') . '/#mytabcontainer-frag-3'); } public function getAcaoJudicialAction() { $request = $this->getRequest(); $cpf = $request->getParam('cpf'); $acaoJudicial = array(); if( !empty($cpf) ){ $filter = new Zend_Filter(); $cliente = new Model_Cliente(); $dados = $cliente->existe($filter->filter($cpf)); if( $dados != null ){ $dadosCliente = $dados->toArray(); $contrato = new Model_Contrato(); $acaoJudicial = $contrato->findAcaoJudicialProposta($dadosCliente['id']); } } $this->_helper->json($acaoJudicial); } /** * @permissao 0 */ public function aumentoSalarialAction() { $request = $this->getRequest(); $params = $request->getParams(); if( $request->isPost() ){ $parametros = [ 'tipo' => "AUMENTO SALARIAL" ]; try{ $proposta = new Model_Proposta(); $result = $proposta->clonarProposta($params['proposta_id'], $parametros); }catch(Core_Exception $e){ $this->_helper->flashMessenger(['error' => $e->getMessage()]); } $proposta->fraude($result, $request->getPost()); $this->_helper->flashMessenger(array( 'success' => 'Proposta cadastrada com sucesso e aumento salarial também digitado.' . 'Confira na lista se precisa ajustar alguma informação.' )); $this->_redirect("proposta"); } if( isset($params['cadastrar']) ){ $this->_helper->flashMessenger(array( 'success' => 'Proposta cadastrada com sucesso.')); $this->_helper->flashMessenger(array('alert' => 'Aumento salarial não digitado.')); $this->_redirect("proposta"); } $this->view->id = $params['proposta_id']; } /** * Esteira Anti-Fraude */ public function antiFraudeAction() { $form = new Form_Filtro_AntiFraude(); $request = $this->getRequest(); $ns = new Zend_Session_Namespace('filtro_proposta'); $page = $request->getPost('page', 1); $fields = array( 'status' => 1 ); if( $request->isPost() ){ $ns->unsetAll(); $ns->filtro_proposta = $request->getPost(); } if( isset($ns->filtro_proposta) ){ $fields = $ns->filtro_proposta; unset($fields['btn_filtrar']); unset($fields['page']); } else { $fields['digitado_banco'] = '0'; } $form->populate($fields); $proposta = new Model_Proposta(); $fields['antifraude'] = true; $propostas = $proposta->listar($fields, $page, 50); $propostas->setCurrentPageNumber($this->_getParam('page', 1)); $this->view->paginator = $propostas; $this->view->form = $form; } /** * Enviar Proposta p/ esteira anti-fraude */ public function fraudeAction() { $this->_helper->viewRenderer->setNoRender(); $this->_helper->getHelper('layout')->disableLayout(); $dbtable = new Model_DbTable_Proposta(); $dbtableHistorico = new Model_DbTable_EsteiraAntiFraudeHistorico(); $request = $this->getRequest(); $id = (int) $request->getParam('id'); $dataNow = new Zend_Date(); if( $id ){ $propostaModel = new Model_Proposta(); $data = $propostaModel->exibir($id); $cliente = $data->findParentRow('Model_DbTable_Cliente'); try { $result = $dbtable->update([ 'status' => 1, 'motivo_fraude' => "Enviado manualmente para esteira anti-fraude", 'usuario_fraude' => Yuppie_Auth::getIdentity()->id ], "id = {$id}"); $dados = [ 'cpf_cliente' => $cliente->cpf, 'nome_cliente' => $cliente->nome, 'contrato_id' => $id, 'numero_protocolo' => $data['numero_contrato'], 'status' => 1, 'motivo_fraude' => "Enviado manualmente para esteira anti-fraude", 'data_cadastro' => $dataNow->now()->get('yyyy-MM-dd HH:mm:ss'), 'usuario_fraude' => Yuppie_Auth::getIdentity()->id ]; $dbtableHistorico->insert($dados); if( $result ){ $this->_helper->flashMessenger([ 'error' => 'Proposta enviada p/ esteira anti-fraude.' ]); } else { $this->_helper->flashMessenger([ 'alert' => 'Nenhuma proposta enviada p/ esteira anti-fraude.' ]); } } catch ( Exception $e ) { $this->_helper->flashMessenger([ 'alert' => $e->getMessage() ]); } } $this->_helper->redirector('index'); } public function historicoAntiFraudeAction() { $this->getHelper('Layout')->disableLayout(); $request = $this->getRequest(); $cpf = $request->getParam('cpf'); try{ $model = new Model_EsteiraAntiFraudeHistorico(); $result = $model->listar("cpf_cliente = {$cpf}"); $this->view->result = $result; $this->_helper->json(array( 'alert' => '', 'body' => true, 'content' => $this->view->render('proposta/historico-anti-fraude.phtml'), )); }catch (Exception $e){ $this->_helper->flashMessenger(array( 'alert' => 'Falha ao carregar o histórico.' )); } } /** * Avaliar Fraude */ public function avaliarFraudeAction() { $request = $this->getRequest(); $dados = $request->getPost(); $result = null; if( $request->isPost() && count($dados) > 0 ){ $dbtable = new Model_DbTable_Contrato(); $ajax = $request->isXmlHttpRequest(); try { $result = $dbtable->avaliarFraude($dados, $ajax); } catch ( Exception $ex ) { $this->_helper->flashMessenger(array( 'alert' => $ex->getMessage() )); } if( $ajax ){ $this->_helper->json(array( 'result' => $result )); } if( $result > 0 ){ $this->_helper->flashMessenger(array( 'success' => $result == 1 ? "{$result} Registro foi alterado." : "{$result} Registros foram alterados." )); } else { $this->_helper->flashMessenger(array( 'alert' => 'Nenhum registro foi alterado.' )); } } $this->_helper->redirector('anti-fraude'); } /** * Validar Reanexo da Proposta */ public function validarReanexoAction() { $request = $this->getRequest(); $id = (int) $request->getParam('id'); if( $id ){ $dbtable = new Model_DbTable_Proposta(); $dbtable->retirarReAnexo($id); $this->_helper->flashMessenger(array( 'success' => "Reanexo validado com sucesso." )); } $this->_helper->redirector('index'); } /** * Estatísticas de Digitação */ public function efetivacaoAction() { $form = new Form_Filtro_PropostaEfetivacao(); $ns = new Zend_Session_Namespace('filtro_proposta'); $request = $this->getRequest(); $totalCamposPreenchidos = count(array_filter($request->getPost())); $fields = $tipoEfetivado = $tipoNaoEfetivado = array(); if( $request->isPost() ){ $ns->unsetAll(); $ns->filtro_proposta = $request->getPost(); } if (isset($ns->filtro_proposta) && $totalCamposPreenchidos >= 2) { $fields = $ns->filtro_proposta; unset($fields['btn_filtrar']); unset($fields['page']); $contratos = new Model_Proposta(); $efetivacao = $contratos->efetivadoStatus($fields); } elseif (isset($ns->filtro_proposta) && $totalCamposPreenchidos == 1) { $this->_helper->flashMessenger(array( 'alert' => 'Atenção! Escolha pelo menos uma opção de filtragem.' )); } $form->populate($fields); $this->view->efetivacao = $efetivacao; $this->view->form = $form; } public function downloadAnexosAction() { $propostaId = (int)$this->getRequest()->getParam('id'); if( !$propostaId ){ $this->_helper->flashMessenger(array( 'alert' => 'Atenção! Uma proposta deve ser informada!' )); $this->_helper->redirector('index'); } $proposta = new Model_Proposta(); $dadosProposta = $proposta->exibir($propostaId); if( !$dadosProposta ){ $this->_helper->flashMessenger(array( 'alert' => 'Atenção! Proposta não localizada!' )); $this->_helper->redirector('index'); } $dbtable = new Model_DbTable_ContratoAnexo(); $files = $dbtable->fetchAll("contrato_id = {$propostaId}"); if( count($files) <= 0 ){ $this->_helper->flashMessenger(array( 'alert' => 'Atenção! Proposta não possui anexos!' )); $this->_helper->redirector('index'); } $zip = new ZipArchive(); $filename = UPLOAD_PATH . "/proposta-{$propostaId}.zip"; $tmpFiles = []; if ($zip->open($filename, ZIPARCHIVE::CREATE) !== TRUE) { exit("cannot open <$filename>\n"); } foreach( $files as $value ){ $info = pathinfo($value['arquivo']); $file = UPLOAD_PATH . "/{$info['basename']}"; if (strstr($value['arquivo'], "amazonaws.com")){ $objectBody = Upload::getRawData($value['arquivo'], $this->_bucketFolder); file_put_contents($file, $objectBody); $tmpFiles[] = $file; } if (file_exists($file)) { $zip->addFile($file, $info['basename']); } } $zip->close(); //remove os arquivos temporários baixados do S3 foreach( $tmpFiles as $fRemove ){ unlink($fRemove); } header("Content-Type: application/zip"); header("Content-Disposition: attachment; filename=\"" . basename($filename) . "\""); header("Content-Length: " . filesize($filename)); flush(); readfile($filename); unlink($filename); exit(); } public function digitarPropostaSimulacaoAction() { $this->getHelper('Layout')->disableLayout(); $this->getHelper('ViewRenderer')->setNoRender(true); $propostaDigitada = $this->service->digitarPropostaSimulacao($this->getRequest()); !$propostaDigitada ?: $this->_helper->json($propostaDigitada); } public function enviarCapaContratoAction() { $params = $this->getRequest()->getParams(); try { $this->_helper->json((new Model_Proposta())->enviarCapaContrato($params)); } catch (Throwable $domainException) { $this->_helper->json(['status' => 0, 'msg' => 'Houve um erro, o arquivo não foi enviado.']); } } public function aprovarPropostasAction() { try { $aprovadas = Model_Proposta::aprovarPropostas($this->getRequest()->getParams()); $this->_helper->json(['success' => (bool) $aprovadas]); } catch (Throwable $throwable) { $this->_helper->json(['erro' => $throwable->getMessage()]); } } public function digitacaoCapaAction() { Yuppie_Auth::getIdentity()->grupo == 'Corretor' ? $this->_helper->layout->setLayout('layout_corretor') : $this->_helper->layout->setLayout('layout'); $request = $this->getRequest(); $form = new Form_DigitacaoCapa(); if ($request->isPost() && $form->isValid($request->getPost())) { $modelProposta = new Model_Proposta(); $this->_helper->flashMessenger($modelProposta->digitacaoCapaContrato($request)); } $this->view->form = $form; } public function enviarLinkDocumentacaoAction() { $request = $this->getRequest(); $idProposta = $request->getParam('proposta'); try{ $result = Model_Proposta::enviarLinkDocumentacao($idProposta); } catch (Exception $e) { $this->_helper->json(['msg' => $e->getMessage()]); } $this->_helper->json(['msg' => $result['msg']]); } public function copiarLinkDocumentacaoAction() { $request = $this->getRequest(); $idProposta = $request->getParam('proposta'); try{ $token = Model_Proposta::carregarTokenProposta($idProposta); } catch (Exception $e) { $this->_helper->json(['msg' => $e->getMessage()]); } $front = Zend_Controller_Front::getInstance(); $server = (new Zend_Controller_Request_Http())->getServer(); $this->_helper->json(Core_Link::criaLink("{$server['REQUEST_SCHEME']}://{$_SERVER['HTTP_HOST']}{$front->getBaseUrl()}/proposta-cliente/anexar-documentos", "token_proposta={$token}")); } }
💾 保存文件
← 返回文件管理器