✏️ 正在编辑: CallcenterController.php
路径:
/srv/systems_dir/yuppiecred/application/controllers/CallcenterController.php
提示:
您可以编辑任何文件(包括二进制文件),但请注意不当修改可能导致文件损坏。
<?php use Modules\SimulacaoAberta\Service\SimulacaoAbertaService; /** * @permissao 0 */ class CallcenterController extends Zend_Controller_Action { public function init() { $this->_helper->layout->setLayout('layout_callcenter'); $this->view->tab = (int) $this->getRequest()->getParam('tab'); } private function getCampanhasAlocadas() { $ns = new Zend_Session_Namespace("campanhas_alocadas"); if (!$ns->campanhas_alocadas) { $class = Yuppie_Auth::getIdentity()->grupo == "Supervisor" ? 'Model_CallcenterSupervisor' : 'Model_CallcenterOperador'; $ns->campanhas_alocadas = (new $class())->getCampanhasAlocadas(Yuppie_Auth::getIdentity()->id); } return $ns->campanhas_alocadas; } /** * @permissao 0 */ public function indexAction() { $this->view->inicialize_js = Core_GChart::initializeScript(2); $campanha = new Model_CallcenterCampanha(); $callcenterAtendimento = $campanha->exibirClienteEmAtendimento(Yuppie_Auth::getIdentity()->id); if ($callcenterAtendimento) { $this->_helper->flashMessenger(array( 'error' => 'Cliente pendente de atendimento.' )); $this->_helper->redirector('exibir-cliente', 'callcenter', null, array( 'id' => $callcenterAtendimento->id )); } $this->view->campanhas_alocadas = $this->getCampanhasAlocadas(); //reseta para poder atualizar a lista de campanhas alocadas $ns = new Zend_Session_Namespace("campanhas_alocadas"); $ns->unsetAll(); } /** * Adicionar cliente na base */ public function adicionarClienteBaseAction() { $request = $this->getRequest(); $form = new Form_CallcenterBase(); $form->setAction(''); if ($request->isPost()) { try{ $model = new Model_CallcenterBase($request->getPost()); $id = $model->salvar($model); if ($id) { $this->_helper->flashMessenger(['success' => "Dados salvo com sucesso."]); $this->_helper->redirector('exibir-cliente', 'callcenter', null, ["id" => $id]); } else { $this->_helper->flashMessenger(['alert' => "Não foi possível salvar o cliente."]); $this->_helper->redirector('adicionar-cliente-base', 'callcenter'); } } catch ( Core_Exception $e ) { $this->_helper->flashMessenger([ 'alert' => $e->getMessage() ]); } } $this->view->form = $form; } /** * @permissao 0 */ public function exibirClienteAction() { $request = $this->getRequest(); Model_CallcenterAtendimento::pausarRamalDiscadorPreditivo(); $log = Core_Discador_Log::getInstance()->initDefault(); $log->log("CLIENTE CHAMADO: " . print_r($request->getParams(), true), Zend_Log::DEBUG); $ns = new Zend_Session_Namespace('callcenter_atendimento'); $campanhaId = (int) $request->getParam('campanha_id'); $clienteId = (int) $request->getParam('id', $ns->callcenter_atendimento['id']); $campanha = new Model_CallcenterCampanha(); $formCliente = new Form_CallcenterAtendimento(); if ($request->getParam('popup') == 1) { $this->_helper->layout->setLayout('layout_callcenter_discador'); $formCliente->removeElement('btn_save'); } if ($campanhaId > 0 && !$campanha->verificaOperadorAlocado($this->getCampanhasAlocadas(), $campanhaId)) { $this->_helper->flashMessenger(['error' => "Atenção! Esta campanha não está alocada para você!"]); $this->_helper->redirector('index'); } if ($clienteId > 0 && !isset($ns->callcenter_atendimento)) { try { $atenderCaterizado = $request->getParam('atender_carteira') !== null; $chamadaId = $request->getParam('chamada_id'); $ns->callcenter_atendimento = $campanha->exibirClienteReceptivo($clienteId, $atenderCaterizado, $chamadaId); } catch (Exception $e) { Model_CallcenterAtendimento::removerPausaRamalDiscadorPreditivo(); if( $request->getParam('popup') == 1 ){ $this->_helper->json(['alert' => $e->getMessage()]); } $this->_helper->flashMessenger(['alert' => $e->getMessage()]); $this->_helper->redirector('index'); } } if (empty($ns->callcenter_atendimento)){ //verifica se existe cliente na sessão $ns->callcenter_atendimento = $campanha->exibirCliente($campanhaId, Yuppie_Auth::getIdentity()->id); } if (empty($ns->callcenter_atendimento)) { $this->_helper->flashMessenger(['alert' => 'Atenção! Nenhum cliente encontrado para atendimento.']); $this->_helper->redirector('index'); } $dadosCliente = is_array($ns->callcenter_atendimento) ? $ns->callcenter_atendimento : $ns->callcenter_atendimento->toArray(); $request->setParam('campanha_id', $dadosCliente['campanha_id']); $request->setParam('id', $dadosCliente['id']); if ($request->isPost()){ $formCliente->isValid($request->getPost()); } $formCliente->populate($dadosCliente); $this->view->form_cliente = $formCliente; $this->view->dados_cliente = $dadosCliente; $this->view->dados_campanha = $campanha->exibir((int)$ns->callcenter_atendimento['campanha_id']); } public function getComissaoSimuladorAction() { $request = $this->getRequest(); $fatorModel = new Model_TabelaFator(); $id = $request->getParam('fator_id'); $dados = $fatorModel->exibir($id)->toArray(); $dados['corretor_id'] = Yuppie_Auth::getIdentity()->corretor_id; $dados['data_emissao'] = date('Y-m-d', time()); unset($dados['id'], $dados['excluido']); $banco = new Model_Banco(); $dadosBanco = $banco->exibir($dados['banco_id']); $comissaoDb = new Model_DbTable_Contrato(); $urlSistema = Yuppie_Auth::getSiteKey(); $writer = new Zend_Log_Writer_Stream("/var/log/sistemayuppie/zf_log_{$urlSistema}_" . Zend_Date::now()->get("ddMMyyyy") . ".txt"); $log = new Zend_Log($writer); $dadosComissao = $comissaoDb->getComissaoCorretor($dados, $dadosBanco, $log, true); $this->_helper->json(array('fator' => $dados, 'comissionamento' => $dadosComissao)); } public function adicionarTelefoneAction() { $request = $this->getRequest(); $telefone = new Model_CallcenterTelefone($request->getPost()); try { $id = $telefone->salvar(); if( $id ){ $this->view->telefone = $telefone->exibir($id); $this->_helper->json(array( 'status' => 1, 'content' => $this->view->render('callcenter/telefone-tr.phtml') )); } else { $this->_helper->json(array( 'status' => 0, 'content' => "", 'alert' => "Telefone não adicionado!" )); } } catch ( Core_Exception $e ) { $this->_helper->json(array( 'status' => 0, 'console' => $e->getMessage(), 'alert' => $e->getMessage() )); } } public function saveClienteAction() { $request = $this->getRequest(); $form = new Form_CallcenterAtendimento(); $usuario = Yuppie_Auth::getIdentity(); $ns = new Zend_Session_Namespace('callcenter_atendimento'); $campanhaId = $ns->callcenter_atendimento['campanha_id']; if ($request->isPost() && $form->isValid($request->getPost())) { $base = new Model_CallcenterBase($request->getPost()); $id = $base->getId(); $data = $base->getAgendadoPara(); $hora = $base->getHoraAgendada(); $statusAtendimento = $base->getStatusAtendimento(); $usuarioUltimoAtendimento = $base->getUsuarioUltimoAtendimento(); $agendamento = in_array($statusAtendimento, Model_CallcenterStatusAtendimento::getStatusParaAgendamento()); $atendimento = new Model_CallcenterAtendimento(); if ($agendamento) { if (!$data || !$hora || !$atendimento->usuarioPodeAgendar($id, $data, $hora) || $atendimento->maximoRetornos($usuario->id, $data)) { $mensagem = "Atenção! Você não pode agendar atendimento para este cliente nesta data."; if ($request->isXmlHttpRequest()) { $this->_helper->json(["alert" => $mensagem]); } $this->_helper->flashMessenger(['alert' => $mensagem]); $this->_helper->redirector('exibir-cliente', null, null, ['id' => $id]); } $base->agendarAtendimentoCliente($id, $data, $hora, $statusAtendimento, $usuarioUltimoAtendimento); } $mensagem = "Atendimento finalizado com sucesso."; //se tem chamada_id, é porque veio do discador e deve tabular lá antes if ($request->getParam('chamada_id')) { $discadorModel = new Model_Discador(); $statusTabulado = $discadorModel->tabularChamada($form->getValues()); if( $statusTabulado != '1' ){ $mensagem .= "<br>" . $statusTabulado; } } // $base->setTelefoneChamada('0'); //para limpar o id da chamada da base $resultBase = $base->salvar($base); if ($resultBase != null) { $tempoAtendimento = Model_CallcenterAtendimento::calcularTempoDeAtendimento($id); //grava o atendimento no histórico $callcenterAtendimento = new Model_CallcenterAtendimento(); $callcenterAtendimento->setStatusAtendimento($statusAtendimento); $callcenterAtendimento->setCampanhaId($campanhaId); $callcenterAtendimento->setClienteId($id); $callcenterAtendimento->setComentario($request->getPost('obs')); $callcenterAtendimento->setTelefoneChamada($request->getParam('chamada_id')); $callcenterAtendimento->setTempoAtendimento($tempoAtendimento); $callcenterAtendimento->salvar($callcenterAtendimento); //retira o cliente da sessão if (isset($ns->callcenter_atendimento)) { $ns->unsetAll(); } Model_CallcenterAtendimento::removerPausaRamalDiscadorPreditivo(); $logout = (new Model_CallcenterPausasProgramadas)->verificarPausaProgramada(); if ($logout) { $this->_redirect('/auth/logout'); } if($request->isXmlHttpRequest()){ $this->_helper->json(["success" => $mensagem]); } $this->_helper->flashMessenger(['success' => $mensagem]); } else { $this->_helper->flashMessenger(['alert' => 'Nenhuma informação foi alterada.']); } } else { foreach ($form->getMessages() as $key => $mensagem) { $this->_helper->flashMessenger(['alert' => current($mensagem)]); } Model_CallcenterAtendimento::removerPausaRamalDiscadorPreditivo(); $this->_helper->redirector('exibir-cliente', 'callcenter', null, array( 'campanha_id' => $campanhaId )); } Model_CallcenterAtendimento::removerPausaRamalDiscadorPreditivo(); if ($form->getValue('btn_save2') != null) { $this->_helper->redirector('index'); } else { $this->_helper->redirector('exibir-cliente', null, null, array( 'campanha_id' => $campanhaId )); } } /** * @permissao 0 */ public function agendaAction() { $form = new Form_Filtro_AgendaCallcenter(); $request = $this->getRequest(); $fields = array( 'data_retorno_de' => date('d/m/Y'), 'data_retorno_a' => date('d/m/Y') ); if( $request->isPost() ){ $fields = $request->getPost(); $form->populate($fields); } $contato = new Model_DbTable_ProspectoContato(); $this->view->contatos = $contato->getContatos($fields); $this->view->form = $form; } /** * @permissao 0 */ public function listaOperadoresAction() { $request = $this->getRequest(); $form = new Form_Filtro_CallcenterOperadores(); $busca = new Zend_Session_Namespace('filtro_operadores'); if ($request->isPost()) { $fields = $request->getPost(); $busca->unsetAll(); $busca->filtro_operadores = array_filter($fields); } if (!empty($busca->filtro_operadores)) { $form->populate($busca->filtro_operadores); $grupos = Model_GrupoUsuario::getIdCallcenter(); if (count($grupos) > 0) { $busca->filtro_operadores['grupos'] = $grupos; $usuario = new Model_CallcenterOperador(); $this->view->usuarios = $usuario->listar($busca->filtro_operadores, 'login ASC'); } else { $this->_helper->flashMessenger(['alert' => 'Atenção! Grupo de usuário do callcenter não encontrado.']); } } $this->view->form = $form; } /** * @permissao 0 */ public function savePropostaAction() { $request = $this->getRequest(); $campanhaId = (int) $request->getParam('campanha_id'); $clienteId = (int) $request->getParam('cliente_id'); $form = new Form_CallcenterProposta(); if( $request->isPost() && $campanhaId > 0 && $form->isValid($request->getPost()) ){ $proposta = new Model_CallcenterProposta($request->getPost()); $proposta->setCorretorId(Yuppie_Auth::getIdentity()->corretor_id); $proposta->setCampanhaId($campanhaId); $ns = new Zend_Session_Namespace('callcenter_atendimento'); if( isset($ns->callcenter_atendimento) ){ $proposta->setClienteId($ns->callcenter_atendimento['id']); } $result = $proposta->salvar($proposta); if( $result != null ){ $this->_helper->flashMessenger(array( 'success' => 'Proposta salva com sucesso.' )); } else { $this->_helper->flashMessenger(array( 'alert' => 'Atenção! A proposta não foi salva.' )); } }else{ $this->_helper->flashMessenger(array( 'alert' => 'Atenção! Preencha os campos corretamente!' )); } $this->_helper->redirector('exibir-cliente', null, null, array( 'campanha_id' => $campanhaId, 'id' => $clienteId,'tab' => 4 )); } /** * @permissao 0 */ public function efetivarPropostaAction() { $request = $this->getRequest(); $id = (int) $request->getParam('id'); $campanhaId = (int) $request->getParam('campanha_id'); $form = new Form_Proposta(); $form->setAction($this->_request->getBaseUrl() . "/proposta/save"); if( $campanhaId > 0 && $id > 0 ){ $callcenterProposta = new Model_CallcenterProposta(); $dados = $callcenterProposta->getProposta($id, $campanhaId); $callcenterBase = new Model_CallcenterBase(); $dadosCliente = $callcenterBase->exibir($id); $status = new Model_Proposta; if( $dadosCliente != null ){ $dadosCliente = $dadosCliente->toArray(); unset($dados['id']); unset($dadosCliente['id']); unset($dadosCliente['obs']); $dadosCliente['status_atendimento'] = null; //vd($dadosCliente); $tipoProduto = new Model_Produto(); if(isset($dados['produto'])){ $arrayTipoProduto = $tipoProduto->getTipoProdutoById($dados['produto']); } if( $dados != null ){ foreach ($arrayTipoProduto as $tipo){ if(isset($tipo['tipo'])){ $dados['tipo'] = $tipo['tipo']; } } $dados['empresa_id'] = $callcenterBase->getLojaFinalizar() > 0 ? $callcenterBase->getLojaFinalizar() : Yuppie_Auth::getIdentity()->empresa_id; $dados['data_emissao'] = $dados['data_emissao'] != '0000-00-00' && $dados['data_emissao'] != null ? date('d/m/Y', strtotime($dados['data_emissao'])) : ''; $dadosCliente['data_nascimento'] = $dadosCliente['data_nascimento'] != '0000-00-00' && $dadosCliente['data_nascimento'] != null ? date('d/m/Y', strtotime($dadosCliente['data_nascimento'])) : ''; $dados['valor_bruto'] = number_format($dados['valor_bruto'], 2, ',', '.'); $dados['valor_liquido'] = number_format($dados['valor_liquido'], 2, ',', '.'); $dados['valor_prestacao'] = number_format($dados['valor_parcela'], 2, ',', '.'); } else { $this->_helper->flashMessenger(array( 'alert' => 'Atenção! Dados da proposta não foram ' . 'preenchidos pelo callcenter.' )); } if( $dados != null ){ $populate = array_merge($dados, $dadosCliente); } else { $populate = $dadosCliente; } $updateStatus = new Model_CallcenterBase(); $updateStatus->updateStatus($id); $form->populate($populate); } else { $this->_helper->flashMessenger(array( 'alert' => 'Atenção! O cliente não foi efetivado pelo callcenter.' )); $this->_helper->redirector('listar-para-digitacao'); } } $this->view->form = $form; } /** * @permissao 0 */ public function deleteTelefoneAction() { $request = $this->getRequest(); $id = (int) $request->getParam('id'); if( $id > 0 ){ $telefone = new Model_CallcenterTelefone(); if( $telefone->excluir($id) ){ $this->_helper->json(array( 'status' => 1, 'alert' => "Telefone removido com sucesso." )); } } $this->_helper->json(array( 'status' => 0, 'alert' => "Não foi possível remover o telefone." )); } /** * @permissao 0 */ public function finalizarFilialAction() { $request = $this->getRequest(); $id = (int) $request->getParam('id'); if( $id > 0 ){ $callcenterBase = new Model_CallcenterBase(); $result = $callcenterBase->finalizarFilial($id); if( $result != null ){ $this->_helper->flashMessenger(array( 'success' => 'Finalizado com sucesso.' )); } else { $this->_helper->flashMessenger(array( 'alert' => 'Atenção! Nenhum atendimento foi finalizado.' )); } } $this->_redirect("/index"); } /** * @permissao 0 */ public function listarParaDigitacaoAction() { $callcenter = new Model_CallcenterBase(); $this->view->propostas_para_digitacao = $callcenter->getPropostasDigitar(); } /** * @permissao 0 */ public function receptivosAgendadosAction() { $request = $this->getRequest(); $form = new Form_Filtro_Receptivo(); $nsFilter = new Zend_Session_Namespace('filtro_agenda'); $nsFilter->filtro_agenda = [ 'data_agendada_de' => Zend_Date::now()->subMonth(1)->get('dd/MM/yyyy'), 'data_agendada_a' => Zend_Date::now()->addDay(7)->get('dd/MM/yyyy'), 'status_atendimento' => Model_CallcenterStatusAtendimento::getStatusParaAgendamento() ]; if ($request->isPost() && $form->isValid($request->getPost())) { $nsFilter->unsetAll(); $nsFilter->filtro_agenda = $request->getPost(); } $form->populate($nsFilter->filtro_agenda); $base = new Model_CallcenterBase(); $ns = new Zend_Session_Namespace(); //caso não tenha a permissao de visualizar-corretores-callcenter exibira apenas os clientes do usuario logado //criado para o usuario do grupo digitador poder fazer a parte administrativa e atendimento callcenter if (substr(Yuppie_Auth::getIdentity()->grupo, 0, 10) == "Callcenter" || !$ns->acl->isAllowed(Yuppie_Auth::getIdentity()->grupo, 'visualizar-corretores-callcenter')) { $nsFilter->filtro_agenda['usuario_ultimo_atendimento'] = Yuppie_Auth::getIdentity()->id; } /** * @todo trocar para um método específico de exibir a agenda * */ $receptivos = null; try{ $receptivos = $base->listar($nsFilter->filtro_agenda, array( "agendado_para ASC", "hora_agendada" )); }catch (Core_Exception $e){ $this->_helper->flashMessenger(['alert' => $e->getMessage()]); } $this->view->receptivos = $receptivos; $this->view->form = $form; } /** * @permissao 0 */ public function configAction() { $request = $this->getRequest(); $form = new Form_CallcenterConfig(); if ($request->isPost() && $form->isValid($request->getPost())) { try { $form->persistData(); $this->_helper->flashMessenger([ 'success' => 'Configurações salvas com sucesso.' ]); } catch ( Zend_Exception $e ) { $this->_helper->flashMessenger(['error' => $e->getMessage()]); } } $this->view->form = $form; } public function telefoneObsAction() { $request = $this->getRequest(); $id = (int) $request->getParam('id'); $cont = 0; if( $request->isPost() ){ $telefone = new Model_DbTable_CallcenterTelefone(); $itens = $request->getPost(); foreach ( $itens as $chave => $item ) { foreach( $item as $foneId => $value ){ $result = $telefone->update([ $chave => $value ], "id = {$foneId}"); if( $result ){ $cont++; } } } } if( $cont > 0 ){ $plural = $cont > 1 ? "s" : ""; $this->_helper->json([ "alert" => "{$cont} registro{$plural} alterado{$plural}." ]); } $this->_helper->json([ "alert" => "Nenhum registro foi alterado." ]); } public function atualizarBeneficiosAction() { $request = $this->getRequest(); $result = 0; if( !$request->isXmlHttpRequest() ){ $this->_helper->redirector('index', 'callcenter'); } if( $request->isPost() ){ try{ $beneficio = new Model_CallcenterBeneficio($request->getPost()); $beneficio->setOrigem("CADASTRO"); $result = $beneficio->salvar($beneficio); }catch(Exception $e){ $result = 0; $this->_helper->json(array("error" => $e->getMessage())); } } if($result > 0){ $dadosBenecifio = $beneficio->exibir($result); $this->view->dados_beneficio = $dadosBenecifio; $this->_helper->json(array( "status" => 1, "alert" => "Registro alterado.", 'content' => $this->view->render('callcenter/_beneficio.phtml') )); } else{ $this->_helper->json(array("error" => "Os dados não foram alterados")); } } public function clientesAction() { $form = new Form_Filtro_ClienteCallcenter(); $request = $this->getRequest(); $contatos = null; $page = $request->getParam('page', 1); $ns = new Zend_Session_Namespace('clientes'); Zend_Paginator::setDefaultItemCountPerPage(20); $base = new Model_CallcenterBase(); if ($request->isPost() && $form->isValid($request->getPost())) { $ns->unsetAll(); $ns->clientes = $request->getPost(); } if( isset($ns->clientes) && count(array_filter($ns->clientes)) > 0 ){ $form->populate($ns->clientes); $contatos = $base->listar($ns->clientes, 'base.nome ASC', $page); } $this->view->receptivos = $contatos; $this->view->form = $form; } public function verClienteAction() { $this->_helper->layout->setLayout('layout_popup'); $request = $this->getRequest(); $idCliente = (int) $request->getParam('id'); $campanha = new Model_CallcenterCampanha(); //verifica se existe cliente na sessão if( $idCliente > 0 ){ $callcenterBase = new Model_DbTable_CallcenterBase(); $cliente = $callcenterBase->fetchRow('id = ' . $idCliente); } //preenche o formulário para exibição if( $cliente != null ){ $this->view->dados_cliente = $cliente; $formCliente = new Form_CallcenterAtendimento(); if( Zend_Date::isDate($cliente['data_nascimento'], 'yyyy-MM-dd') ){ $dataNasc = new Zend_Date($cliente['data_nascimento'], 'yyyy-MM-dd'); $cliente['data_nascimento'] = $dataNasc->get('dd/MM/yyyy'); } $populate = $cliente->toArray(); $formCliente->populate($populate); $formCliente->callcenterVerCliente(); $this->view->form_cliente = $formCliente; $this->view->emprestimos = $campanha->getEmprestimosCliente($cliente['cpf']); //localiza o histórico de atendimentos $callcenterAtendimento = new Model_CallcenterAtendimento(); $this->view->atendimentos = $callcenterAtendimento->getAtendimentosCliente($cliente['id']); //exibe os telefones do cliente $telefone = new Model_CallcenterTelefone(); $telefones = $telefone->listar(array( 'cliente_id' => $cliente['id'] )); if( count($telefones) == 0 ){ if( !is_object($telefones) ){ $formCliente->getElement('btn_consulta_beneficios')->setAttrib('disabled', 'disabled'); } } $this->view->telefones = $telefones; //exibe os beneficios do cliente $beneficio = new Model_CallcenterBeneficio(); $this->view->beneficios = $beneficio->getBeneficios($cliente['cpf']); if(!empty($cliente['campanha_id'])){ //exibe os dados da campanha $campanha = new Model_CallcenterCampanha(); $this->view->dados_campanha = $campanha->exibir( $cliente['campanha_id']); } } else { $this->_helper->flashMessenger(array( 'alert' => 'Atenção! Nenhum cliente encontrado.' )); } $this->view->ocultarBotoes = true; } public function carteiraAction() { $form = new Form_Filtro_ClienteCallcenter(); $request = $this->getRequest(); $page = $request->getParam('page', 1); $ns = new Zend_Session_Namespace('clientes'); if( $request->isPost() ){ $ns->unsetAll(); $ns->clientes = $request->getPost(); } if( $ns->clientes ){ $form->populate($ns->clientes); } Zend_Paginator::setDefaultItemCountPerPage(20); $base = new Model_CallcenterBase(); if( empty($ns->clientes['campanha_id']) ){ /* Campanhas que o usuário tem permissão de visualização */ $campanhas = array_flip(array_filter($form->getElement('campanha_id')->options)); $ns->clientes['campanha_id'] = $campanhas; } $ns->clientes['apenas_carteirizados'] = true; $ns->clientes['usuario_carteirizacao'] = Yuppie_Auth::getIdentity()->id; /** * @todo trocar por um método específico que exiba a carteira */ $contatos = $base->listar($ns->clientes, 'base.nome ASC', $page); $this->view->receptivos = $contatos; $this->view->form = $form; } public function rankingVendasAction() { $this->getHelper('Layout')->disableLayout(); $request = $this->getRequest(); if( $request->isXmlHttpRequest() ){ $tbCallcenterBase = new Model_DbTable_CallcenterBase(); $rankingVendas = $tbCallcenterBase->rankingVendas(); $this->view->ranking_vendas = $rankingVendas; } } /** * Exibir DashBoards no Callcenter */ public function dashBoardCallcenterAction() { $this->getHelper('Layout')->disableLayout(); $request = $this->getRequest(); if( $request->isXmlHttpRequest() ){ $condicao = $request->getParam('condicao'); switch ( $condicao ) { case 'painel_atendimento': $this->view->campanhas_alocadas = $this->getCampanhasAlocadas(); break; case 'aniversariantes': $aniversariantes = array(); $ns = new Zend_Session_Namespace(); $acl = $ns->acl; $visualizarAniversariantes = $acl->isAllowed(Yuppie_Auth::getIdentity()->grupo, 'visualizar-aniversariantes-do-dia'); if( $visualizarAniversariantes ){ $tbCallcenterBase = new Model_DbTable_CallcenterBase(); $aniversariantes = $tbCallcenterBase->getAniversariantesDoDia(); } $this->view->aniversariantes = $aniversariantes; break; // case 'ranking_vendas': // $tbCallcenterBase = new Model_DbTable_CallcenterBase(); // $rankingVendas = $tbCallcenterBase->rankingVendas(); // $this->view->ranking_vendas = $rankingVendas; // break; case 'agenda': $this->view->agenda = (new Model_CallcenterBase())->getAgendaDashboard(); break; case 'metas_operadores': $tbCorretorMetaOperador = new Model_DbTable_CorretorMetaOperador(); $metasOperadores = $tbCorretorMetaOperador->metaPorOperador(); $dtInicial = new Zend_Date($metasOperadores['data_inicial']); $dtFinal = new Zend_date($metasOperadores['data_final']); $this->view->periodo_venda = $dtInicial->get('dd/MM/yyyy') . " a " . $dtFinal->get('dd/MM/yyyy'); $this->view->metas_operadores = $metasOperadores; break; case 'grafico_meta_operador': $tbCorretorMetaOperador = new Model_DbTable_CorretorMetaOperador(); $json = $tbCorretorMetaOperador->metasOperadores(); $this->_helper->json($json); break; } } } public function viewDetalhamentoAction(){ $this->getHelper('Layout')->disableLayout(); // $this->_helper->viewRenderer->setNoRender(); $beneficioId = $this->getRequest()->getParam('beneficio', 0); $beneficio = new Model_CallcenterBeneficio(); $dadosBenecifio = $beneficio->exibir($beneficioId); $detalhamento = str_replace('${URL}', '', $dadosBenecifio->detalhamento); if( $dadosBenecifio ){ $this->view->detalhamento = $detalhamento; } } public function deleteEnderecoAction() { $request = $this->getRequest(); $id = (int) $request->getParam('id'); if( $id > 0 ){ $endereco = new Model_CallcenterEndereco(); if( $endereco->excluir($id) ){ $this->_helper->json(array( 'status' => 1, 'alert' => "Endereço removido com sucesso." )); } } $this->_helper->json(array( 'status' => 0, 'alert' => "Não foi possível remover o endereço." )); } public function printHistoricoEmprestimosAction(){ $this->_helper->layout->setLayout('layout_impressao'); $campanha = new Model_CallcenterCampanha(); $request = $this->getRequest(); $clienteCpf = $request->getParam('cpf'); $this->view->emprestimos = $campanha->getEmprestimosCliente($clienteCpf); } public function enviarOportunidadeAction() { $this->getHelper('Layout')->disableLayout(); $request = $this->getRequest(); $form = new Form_CallcenterEnviarOportunidade(); if ($request->isPost()) { $modelAtendimento = new Model_CallcenterAtendimento(); $result = $modelAtendimento->enviarOportunidade($request->getParams()); if ($result) { $this->_helper->json([ 'msg' => $result ]); } else { $this->_helper->json([ 'msg' => "Erro ao enviar proposta." ]); } } $this->view->form = $form; } public function baixarGravacaoAction() { $this->getHelper('Layout')->disableLayout(); $this->_helper->viewRenderer->setNoRender(); $chamadaId = $this->getRequest()->getParam('chamada_id'); $urlGravacao = Model_CallcenterAtendimento::baixarGravacaoDiscadorPreditivo($chamadaId); header('Content-Description: File Transfer'); header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename=gravacao-' . $chamadaId . '.wav'); header('Content-Transfer-Encoding: binary'); header('Expires: 0'); header('Cache-Control: must-revalidate'); header('Pragma: public'); ob_clean(); flush(); echo file_get_contents($urlGravacao); exit(); } /** * Leads Capturados */ public function simulacoesAbertasAction() { $request = $this->getRequest(); $form = new Form_Filtro_CallcenterSimulacoesAbertas(); $ns = new Zend_Session_Namespace('filtro_simulacoes_abertas'); $fields = $form->getValues(); if ($request->isPost()) { $fields = $request->getPost(); $ns->unsetAll(); $ns->filtro_simulacoes_abertas = $fields; } if (!empty($ns->filtro_simulacoes_abertas)) { $fields = $ns->filtro_simulacoes_abertas; } try { $service = new SimulacaoAbertaService(); $dados = $service->getSimulacoesRelatorio($fields); } catch (Zend_Db_Exception $exception) { $this->_helper->flashMessenger(['error' => "Erro na consulta ao banco de dados"]); } catch (Exception $exception) { $this->_helper->flashMessenger(['error' => $exception->getMessage()]); } $this->view->simulacoes = $dados; $this->view->form = $form->populate($fields); } public function atenderClienteSimulacaoAbertaAction() { $params = $this->getRequest()->getParams(); try { $this->_helper->redirector('exibir-cliente', 'callcenter', null, ['id' => $params['cliente_id']]); } catch (Exception $exception) { $this->_helper->flashMessenger(['alert' => $exception->getMessage()]); } } public function deleteSimulacaoAbertaAction() { $simulacoes = $this->getRequest()->getPost(); try { $service = new SimulacaoAbertaService(); $result = $service->excluirSimulacoes($simulacoes); if ($result) { $mensagem = $result > 1 ? "Foram excluídas {$result} simulações" : "Foi excluída {$result} simulação"; $this->_helper->flashMessenger(['success' => $mensagem]); } } catch (Exception $e) { $this->_helper->flashMessenger(['alert' => $e->getMessage()]); } $this->_redirect('/callcenter/simulacoes-abertas'); } }
💾 保存文件
← 返回文件管理器