✏️ 正在编辑: CallcenterBaseController.php
路径:
/srv/systems_dir/yuppiecred-bkp/application/controllers/CallcenterBaseController.php
提示:
您可以编辑任何文件(包括二进制文件),但请注意不当修改可能导致文件损坏。
<?php use Carbon\Carbon; use Modules\Callcenter\Dto\AtendimentosResetadosDto; use Modules\Callcenter\Model\DbTable\AtendimentosResetadosTable; /** * @permissao 0 */ class CallcenterBaseController extends Zend_Controller_Action { public function init() { $this->view->tab = (int) $this->getRequest()->getParam('tab'); $this->_helper->layout->setLayout('layout_callcenter'); } /** * @permissao 0 */ public function indexAction() { $this->_helper->layout->setLayout('layout_callcenter'); $request = $this->getRequest(); $page = $request->getParam('page', 1); $form = new Form_Filtro_CallcenterConsultaBase(); $ns = new Zend_Session_Namespace('filtro_base'); if( $request->isPost() && $form->isValid($request->getPost()) ){ $ns->unsetAll(); $ns->filtro_base = $request->getPost(); } if( !empty($ns->filtro_base) ){ $fields = array_filter($ns->filtro_base); try { $form->populate($fields); $base = new Model_CallcenterBase(); Zend_Paginator::setDefaultItemCountPerPage(100); $this->view->base = $base->listar($fields, 'nome ASC', $page); $configFile = CLIENT_PATH . '/configs/callcenter.php'; if( file_exists($configFile) ){ $cfg = include $configFile; $this->view->maximo_retornos = $cfg['retornos']; } } catch ( Exception $e ) { $this->_helper->flashMessenger(array( 'alert' => $e->getMessage() )); } } $this->view->form = $form; $this->view->formFiltro = new Form_Filtro_FiltrosDinamicos(); $this->view->formAlteracao = new Form_CallcenterAlteraBase(); } /** * @permissao 0 */ public function saveAction() { $request = $this->getRequest(); $id = (int) $request->getParam('id', 0); $form = new Form_CallcenterBase(); $formTelefone = new Form_CallcenterTelefone(); $formEmprestimo = new Form_CallcenterBaseEmprestimo(); if($id){ $model = new Model_CallcenterBase(); $cliente = $model->exibir($id); $form->populate($cliente->toArray()); $formTelefone->populate(array("cliente_id" => $id, "cpf_cliente" => $cliente->cpf)); $formEmprestimo->populate(array("cpf_cliente" => $cliente->cpf)); //exibe os telefones do cliente $telefone = new Model_CallcenterTelefone(); $telefones = $telefone->listar(array('cliente_id' => $id )); $this->view->telefones = $telefones; //exibe os emprestimos do cliente $campanha = new Model_CallcenterCampanha(); $this->view->emprestimos = $campanha->getEmprestimosCliente($cliente->cpf); //exibe os endereços do cliente $endereco = new Model_CallcenterEndereco(); $this->view->enderecos = $endereco->listar(array( 'cpf_cliente' => $cliente->cpf )); //exibe os benefícios $beneficio = new Model_CallcenterBeneficio(); $this->view->beneficios = $beneficio->getBeneficios($cliente->cpf); //localiza o histórico de atendimentos $callcenterAtendimento = new Model_CallcenterAtendimento(); $this->view->atendimentos = $callcenterAtendimento->getAtendimentosCliente($id, $cliente->data_ultimo_reset); $historicoMsg = new Model_DbTable_CallcenterMensagemHistorico(); $this->view->historico = $historicoMsg->fetchAll("base_id = $id", 'data_envio DESC'); $this->view->fgts = (new Model_DbTable_CallcenterFgts())->fetchAll(["base_id = ?" => $id]); $this->view->cliente = $cliente; } if( $request->isXmlHttpRequest()){ $telefone = $request->getPost('telefones'); $emprestimo = $request->getPost('emprestimos'); if ($telefone){ try { $model = new Model_CallcenterTelefone($telefone); $telefone['id'] = $model->salvar(); $this->view->telefone = $model->exibir($telefone['id']); $this->_helper->json(array( 'status' => 1, 'content' => $this->view->render('callcenter-base/telefone.phtml') )); } catch ( Core_Exception $e ) { $this->_helper->json(array( 'alert' => $e->getMessage() )); } } elseif($emprestimo){ $febraban = new Model_DbTable_BancoFebraban(); $banco = $febraban->fetchRow("nome LIKE '{$emprestimo['banco']}'"); $emprestimo['numero_banco'] = $banco['codigo']; try { $dates = array("data_inclusao", "inicio_contrato", "termino_contrato"); foreach($dates as $date){ if(isset($emprestimo[$date]) && trim($emprestimo[$date])){ $dt = new Zend_Date($emprestimo[$date]); $emprestimo[$date] = $dt->get("yyyy-mm-dd"); } } $values = array('valor_emprestimo', 'valor_parcela', 'quitacao', 'valor_atual_beneficio'); foreach($values as $value){ if(isset($emprestimo[$value]) && trim($emprestimo[$value])){ $emprestimo[$value] = Zend_Locale_Format::getFloat($emprestimo[$value], array( 'precision' => 2 )); } } $dbtable = new Model_DbTable_CallcenterEmprestimoCliente(); $emprestimo['id'] = $dbtable->insert($emprestimo); $this->view->emprestimo = $dbtable->fetchRow("id = {$emprestimo['id']}"); $this->_helper->json(array( 'status' => 1, 'content' => $this->view->render('callcenter-base/_emprestimo.phtml') )); } catch ( Core_Exception $e ) { $this->_helper->json(array('alert' => $e->getMessage())); } } $this->_helper->json(array('alert' => "Nenhum registro foi alterado")); } elseif( $request->isPost() ){ try{ $model = new Model_CallcenterBase($request->getPost()); $id = $model->salvar($model); if($id){ $this->_helper->flashMessenger(array('success' => "Dados salvo com sucesso.")); $this->_helper->redirector('save', 'callcenter-base', null, array("id" => $id)); } else { $this->_helper->flashMessenger(array('alert' => "Cliente já cadastrado!")); } } catch ( Core_Exception $e ) { $this->_helper->flashMessenger(array( 'alert' => $e->getMessage() )); } } $this->view->formCliente = $form; $this->view->formTelefone = $formTelefone; $this->view->formEmprestimo = $formEmprestimo; } /** * @permissao 0 */ public function deleteAction() { } /** * @permissao 0 */ public function consultaPorCpfAction() { $this->_helper->viewRenderer->setNoRender(); $this->_helper->getHelper('layout')->disableLayout(); $request = $this->getRequest(); $consultaBeneficio = $request->getParam('consulta_beneficio'); try { if( !$consultaBeneficio ){ $configs = include CLIENT_PATH . '/configs/callcenter.php'; if( !isset($configs['consulta_beneficio']) ){ $this->_helper->json(array( 'alert' => 'Selecione um serviço ' . 'para consulta de benefício nas configurações' )); } $consultaBeneficio = $configs['consulta_beneficio']; } $serviceClass = 'Core_Service_' . $consultaBeneficio; $consulta = new $serviceClass; $result = $consulta->getConsignadoPorCpf($request->getParam('cpf')); $cont = 0; if( $result != '' ){ $callcenterBase = new Model_CallcenterBase(); $cont = $callcenterBase->consultaBeneficios( $request->getParam('cpf'), $result, $consulta->getTipoConsulta() ); } } catch ( Exception $e ) { Yuppie_Log::write("Exception: consulta por cpf. CPF: {$request->getParam('cpf')}. Serviço $consultaBeneficio. Mensagem: {$e->getMessage()}", $this); $this->_helper->json(array( 'alert' => $e->getMessage() )); } echo Zend_Json::encode(array( 'result' => $cont )); } /** * @permissao 0 */ public function configBuscaTelefonesAction() { $request = $this->getRequest(); if( $request->isXmlHttpRequest() ){ $sistemasTelefones = $request->getPost('sistemas_telefones'); if( $sistemasTelefones ){ try { Core_Factory_ConsultaTelefones::alterarOrdemSistemasTelefones($sistemasTelefones); $this->_helper->json(array( 'status' => 1 )); } catch ( Exception $e ) { $this->_helper->json(array( 'status' => 0, 'msg' => 'Erro ao tentar alterar o arquivo de configuração', 'console' => $e->getMessage() )); } } } $this->view->sistemasTelefones = Core_Factory_ConsultaTelefones::getSistemasAtivos(); } /** * @permissao 0 */ public function buscarTelefonesAction() { $request = $this->getRequest(); $cpf = $request->getParam('cpf'); $result = null; if( $cpf != null ){ try { $model = new Model_CallcenterBase(); $dados = $model->localizaTelefone(String_Refatorar::formatarCpf($cpf)); $result = $model->salvarConsultaTelefone($dados, $cpf); $this->_helper->json(array( 'result' => $result )); } catch ( Core_Exception $e ) { $this->_helper->json(array( 'alert' => $e->getMessage() )); } } $this->_helper->json(array( 'alert' => "O CPF deve ser informado!" )); } /** * @permissao 0 */ public function resetClienteAction() { $request = $this->getRequest(); $clienteId = (int) $request->getParam('cliente_id'); if( $clienteId > 0 ){ $callcenterBase = new Model_CallcenterBase(); $result = $callcenterBase->resetarAtendimentoCliente($clienteId); if( $result != null ){ $this->_helper->flashMessenger(array( 'success' => 'Cliente resetado com sucesso.' )); } else { $this->_helper->flashMessenger(array( 'alert' => 'Atenção! O cliente não foi resetado.' )); } } $this->_helper->redirector('painel', 'callcenter-relatorios', null, array( 'campanha_id' => $request->getParam('campanha_id') )); } /** * @permissao 0 */ public function agendarReceptivoAction() { $this->_helper->layout->setLayout('layout_popup'); $request = $this->getRequest(); $id = (int) $request->getParam('id'); $form = new Form_CallcenterAgendarReceptivo(); $base = new Model_CallcenterBase(); $dados = $base->exibir($id)->toArray(); if( $request->isPost() ){ $dados['status_atendimento'] = 'RECEPTIVO'; $dados = array_merge($dados, $request->getPost()); if( $form->isValid($dados) ){ $base->setOptions($dados); try { $id = $base->agendarAtendimentoCliente( $base->getId(), $base->getAgendadoPara(), $base->getHoraAgendada(), $base->getStatusAtendimento(), $form->getValue('operador_id') ); if( $id != null ){ $this->_helper->flashMessenger(array( 'success' => 'Dados salvos com sucesso.' )); } else { $this->_helper->flashMessenger(array( 'alert' => 'Atenção! Nenhuma informação foi alterada.' )); } } catch ( Zend_Exception $e ) { $this->_helper->flashMessenger($e->getMessage()); } } } if( $id > 0 ){ $dados['agendado_para'] = Zend_Date::now()->get('dd/MM/yyyy'); } else { $date = new Zend_Date($dados['agendado_para'], 'yyyy-MM-dd'); $dados['agendado_para'] = $date->get('dd/MM/yyyy'); } $form->populate($dados); $this->view->form = $form; } /** * @permissao 0 */ public function associarCampanhaAction() { $dados = $this->_request->getPost(); if( $dados ){ if( empty($dados['campanha_id'])){ $this->_helper->flashMessenger(array( 'alert' => 'Nenhuma campanha selecionada.' )); $this->_helper->redirector('index'); } if( !empty($dados['base']) && is_array($dados['base'])){ $success = 0; foreach ( $dados['base'] as $id ) { $tbCallcenterBase = new Model_DbTable_CallcenterBase(); $result = $tbCallcenterBase->update( array( 'campanha_id' => $dados['campanha_id'] ), array( 'id = ?' => $id )); $success++; } if($result > 0){ $this->_helper->flashMessenger(array( 'success' => 'Registros atualizados com sucesso.' )); } else { $this->_helper->flashMessenger(array( 'alert' => 'Nenhum registro modificado.' )); } } } $this->_forward('index'); } /** * @permissao 0 */ public function deleteEmprestimoAction() { $request = $this->getRequest(); $id = (int) $request->getParam('id'); if( $id > 0 ){ $emprestimo = new Model_DbTable_CallcenterEmprestimoCliente(); $emprestimo->delete("id = $id"); } if($request->isXmlHttpRequest()){ $this->_helper->json(array("success" => "Emprestimo excluído!")); } else { $this->_redirect("/callcenter-base/{$request->getParam('action')}/id/{$request->getParam('cliente_id')}/tab/1"); } } /** * @permissao 0 */ public function resetarAction() { $request = $this->getRequest(); if( $request->isPost() ){ $ids = $request->getPost('base'); if(empty($ids)){ $this->_helper->flashMessenger(array( 'alert' => "Nenhum registro selecionado" )); $this->_helper->redirector('index'); } $model = new Model_CallcenterBase(); try { $model->resetarClientes($ids); $this->_helper->flashMessenger(array( 'success' => 'Clientes resetados com sucesso.' )); } catch ( Exception $ex ) { $this->_helper->flashMessenger(array( 'error' => $ex->getMessage() )); } } $this->_helper->redirector('index'); } /** * @permissao 0 */ public function resetarVariosAction() { $request = $this->getRequest(); $form = new Form_CallcenterReset(); $atendimentosDto = new AtendimentosResetadosDto([]); if( $request->isPost() ){ $fields = $request->getPost(); unset($fields['btn_resetar']); $valido = false; foreach ( $fields as $field ) { if( $field ){ $valido = true; break; } } if( isset($fields['status_atendimento']) && $fields['status_atendimento'] ){ foreach ( $fields['status_atendimento'] as $k => $status ) { if( $status == 'sem_status' ){ unset($fields['status_atendimento'][$k]); } } if( count($fields['status_atendimento']) == 0 ){ $this->_helper->flashMessenger(array( 'alert' => 'Status inválido.' )); } } elseif( !$valido ){ $this->_helper->flashMessenger(array( 'alert' => 'Selecione pelo menos um dos filtros.' )); } if( $form->isValid($fields) ){ $callcenterBase = new Model_CallcenterBase(); try { $atendimentosDto->setValue('campanhas', $fields['campanha_id']); $atendimentosDto->setValue('filtros_usados', json_encode($fields)); $atendimentosDto->setValue('data_processo', Carbon::now()->format('Y-m-d H:i:s')); $atendimentosDto->setValue('clientes_resetados', $callcenterBase->resetarVariosClientes($fields)); } catch (Throwable $throwable) { $atendimentosDto->setValue('erro', $throwable->getMessage()); $this->_helper->flashMessenger(['error' => $throwable->getMessage()]); } $resetadosLog = (new AtendimentosResetadosTable())->createRow($atendimentosDto->toArray(true)); $resetadosLog->save(); if ($atendimentosDto->getClientesResetados()) { $resetados = 'Número de clientes resetados: ' . $atendimentosDto->getClientesResetados(); $retorno = ['success' => $resetados]; $this->_helper->flashMessenger($retorno); } else { $this->_helper->flashMessenger(['alert' => 'Nenhum cliente foi resetado.']); } } } $this->view->form = $form; } /** * @permissao 0 */ public function consultaSiapeAction() { $this->_helper->viewRenderer->setNoRender(); $this->_helper->getHelper('layout')->disableLayout(); $request = $this->getRequest(); $matricula = $request->getParam('matricula'); $cpf = $request->getParam('cpf'); $consultaBeneficio = $request->getParam('consulta_beneficio'); try { $configs = include CLIENT_PATH . '/configs/callcenter.php'; if( !isset($configs['consulta_beneficio']) ){ $this->_helper->json(array( 'alert' => 'Selecione um serviço ' . 'para consulta de benefício nas configurações' )); } if( !$consultaBeneficio ){ $consultaBeneficio = $configs['consulta_beneficio']; } $serviceClass = 'Core_Service_' . $consultaBeneficio; $consulta = new $serviceClass; $result = $consulta->getSiape($matricula, $cpf); $cont = 0; if( count($result) > 0 ){ $callcenterBase = new Model_CallcenterBase(); $cont = $callcenterBase->registraConsultaSiape( $request->getParam('cpf'), null, $result, $consulta->getTipoConsulta() ); } } catch ( Exception $e ) { $this->_helper->json(array( 'alert' => $e->getMessage() )); } echo Zend_Json::encode(array( 'result' => $cont )); } public function transferirClientesAction() { $request = $this->getRequest(); $params = $request->getParams(); $limite = (int)$request->getParam('limite_transferencia'); $form = new Form_CallcenterTransferirClientes(); if($request->isPost() && $form->isValid($params)){ $callcenterBase = new Model_CallcenterBase(); try { $update = $callcenterBase->transferirClientes($params, $limite); if($update['transferidos'] > 0 ){ $this->_helper->flashMessenger(array( 'success' => $update['transferidos'].' Clientes transferidos' )); } if($update['naoTransferidos'] > 0 ){ $this->_helper->flashMessenger(array( 'alert' => $update['naoTransferidos'].' Clientes não transferidos' )); } $this->view->clientes = $update; } catch ( Exception $ex ) { $this->_helper->flashMessenger(array( 'alert' => $ex->getMessage() )); } } $this->view->form = $form; } public function transferirCarterizadosAction() { $request = $this->getRequest(); $params = $request->getParams(); $form = new Form_CallcenterTransferirCarterizados(); $form_atribuir = new Form_CallcenterAtribuirNaoCarteirizados(); if($request->isPost() && $form->isValid($params)){ if(!$request->getPost('usuario_carteirizacao_de')){ $this->_helper->flashMessenger(array('error' => 'Selecione ao menos um operador de origem')); $this->_helper->redirector('transferir-carterizados'); } try { $callcenterBase = new Model_CallcenterBase(); $retorno = $callcenterBase->transferirCarterizados($params); $this->_helper->flashMessenger(array( $retorno['tipo'] => $retorno['msg'] )); } catch ( Exception $exc ) { $this->_helper->flashMessenger(array( 'alert'=> $exc->getMessage() )); } } $this->view->form_atribuir = $form_atribuir; $this->view->form = $form; } public function atribuirNaoCarterizadosAction() { $request = $this->getRequest(); $params = $request->getParams(); if($request->isPost()){ $campanha = $request->getPost('campanha_id'); $usuarioDestino = $request->getPost('usuario_carteirizacao_para'); if($campanha && $usuarioDestino){ $modelCallcenterBase = new Model_DbTable_CallcenterBase(); $data = array('usuario_carteirizacao' => $usuarioDestino); $where = "campanha_id = $campanha AND (usuario_carteirizacao IS NULL OR usuario_carteirizacao < 1)"; try { $callCenterBase = $modelCallcenterBase->update($data, $where); } catch ( Exception $ex ) { $this->_helper->flashMessenger(array('error' => $ex->getMessage())); $this->_helper->redirector('transferir-carterizados'); } if($callCenterBase > 1){ $this->_helper->flashMessenger(array('success ' => "$callCenterBase clientes carteirizados com sucesso.")); } else{ $this->_helper->flashMessenger(array('alert' => "Esta campanha não possui clientes não carteirizados")); } } } $this->_helper->redirector('transferir-carterizados'); } public function consultaBmgAction() { $this->_helper->viewRenderer->setNoRender(); $this->_helper->getHelper('layout')->disableLayout(); $request = $this->getRequest(); try { $service = new Core_Banco_Service_Bmg(); $service->setCodEntidade($request->getParam('entidade')); $dadosConsulta = $service->buscarPorCpf($request->getParam('cpf')); if( is_string($dadosConsulta) ){ $this->_helper->json(array( 'alert' => $dadosConsulta )); return; } $callcenterBase = new Model_CallcenterBase(); $result = $callcenterBase->gravarConsultaBmg($dadosConsulta); } catch ( Exception $e ) { $this->_helper->json(array( 'alert' => $e->getMessage() )); } $this->_helper->json(array( 'alert' => $result )); } public function marcarTelefoneComoNaoAtendeAction() { return $this->_helper->json(Model_CallcenterTelefone::attDiscadorDescartar( $this->_getParam('telefone_id'), $this->_getParam('acao') )); } public function marcarTelefoneWhatsappAction() { return $this->_helper->json(Model_CallcenterTelefone::setarWhatsapp( $this->_getParam('telefone_id'), $this->_getParam('acao') )); } public function marcarTelefoneComoNaoPerturbeAction() { return $this->_helper->json(Model_CallcenterTelefone::atualizarNaoPerturbe( $this->_getParam('telefone_id'), $this->_getParam('acao') )); } public function consultaPanFgtsAction() { set_time_limit(0); $request = $this->getRequest(); $cpf = $request->getParam('cpf', 0); if ($cpf <= 0) { $this->_helper->json([ 'error' => 'Um CPF deve ser informado!' ]); return; } try { $service = new Core_Banco_Service_Pan(); } catch (Exception $e) { $this->_helper->json([ 'error' => $e->getMessage() ]); return; } try { $response = $service->consultaFgts($cpf); $callcenterBase = new Model_CallcenterBase(); $result = $callcenterBase->gravarConsultaPanFgts($response, $cpf); } catch (Core_Exception $e) { $this->_helper->json([ 'alert' => $e->getMessage() ]); } catch (Exception $e) { Yuppie_Log::write("Falha na consulta durante atendimento de cliente: " . $e->getMessage(), $this); $this->_helper->json([ 'alert' => "Um problema ocorreu na sua consulta. Favor tente novamente mais tarde!" ]); return; } if ($result) { $this->_helper->json([ 'alert' => "Consulta gravada com sucesso" ]); return; } $this->_helper->json([ 'alert' => "Consulta realizada com sucesso" ]); } }
💾 保存文件
← 返回文件管理器