✏️ 正在编辑: CallcenterAtendimento.php
路径:
/srv/systems_dir/yuppiecred-bkp/application/models/DbTable/CallcenterAtendimento.php
提示:
您可以编辑任何文件(包括二进制文件),但请注意不当修改可能导致文件损坏。
<?php class Model_DbTable_CallcenterAtendimento extends Core_DbTable { protected $_name = 'tb_callcenter_atendimentos'; protected $_referenceMap = array( 'Campanha' => array( 'columns' => array( 'campanha_id' ), 'refTableClass' => 'Model_DbTable_CallcenterCampanha', 'refColumns' => array( 'id' ) ), 'Cliente' => array( 'columns' => array( 'cliente_id' ), 'refTableClass' => 'Model_DbTable_CallcenterBase', 'refColumns' => array( 'id' ) ), 'Usuario' => array( 'columns' => array( 'usuario' ), 'refTableClass' => 'Model_DbTable_Usuario', 'refColumns' => array( 'id' ) ), ); public function insert(array $data) { $data['usuario'] = Yuppie_Auth::getIdentity()->id; if (Yuppie_Auth::getIdentity()->grupo == "Corretor") { $data['corretor_id'] = Yuppie_Auth::getIdentity()->id; $data['usuario'] = 0; } return parent::insert($data); } public function taxaConversao() { $convertidos = $this->getAdapter()->select() ->from(['atendimentos' => 'tb_callcenter_atendimentos'], [ 'campanha_id', 'total_convertido' => 'COUNT(atendimentos.id)' ]) ->join(['tabulacao' => "tb_callcenter_status"], 'atendimentos.status_atendimento = tabulacao.descricao',[]) ->where('atendimentos.excluido <> 1') ->where('tabulacao.excluido <> 1') ->where('tabulacao.negocio_fechado <> 0') ->where('campanha_id > 0') ->group('campanha_id'); $select = $this->getAdapter()->select() ->from(['atendimentos' => 'tb_callcenter_atendimentos'], [ 'campanha_id', 'total_clientes' => 'COUNT(distinct atendimentos.cliente_id)' ]) ->joinInner(['campanhas' => "tb_callcenter_campanhas"], 'atendimentos.campanha_id = campanhas.id', ['campanha' => 'nome']) ->joinLeft(['convertidos' => $convertidos], 'convertidos.campanha_id = campanhas.id', ['total_convertido']) ->where("campanhas.situacao IN ('ATIVA','LIBERADA')") ->group('atendimentos.campanha_id') ->columns(['ordem' => '(convertidos.total_convertido*100/COUNT(distinct atendimentos.cliente_id))']) ->order('ordem DESC'); return $this->getAdapter()->fetchAll($select); } public function contatoPessoaCerta() { $totalClientesSucesso = $this->getAdapter()->select() ->from(['atendimentos' => "tb_callcenter_atendimentos"], [ 'campanha_id', 'total_atendimento_sucesso' => 'COUNT(distinct atendimentos.cliente_id)' ]) ->joinInner(['status_tabulacao' => 'tb_callcenter_status'],'status_tabulacao.descricao = atendimentos.status_atendimento and tipo_tabulacao = "Positiva"', []) ->group('atendimentos.campanha_id'); $totalClientesCampanha = $this->getAdapter()->select() ->from(['atendimentos' => 'tb_callcenter_atendimentos'], [ 'campanha_id' => 'campanha.id', 'campanha.situacao', 'total_geral' => new Zend_Db_Expr('(total_atendimento_sucesso/if(COUNT(atendimentos.id) <= 0, 1, COUNT(atendimentos.id)))*100') ]) ->joinInner(['campanha' => "tb_callcenter_campanhas"], 'campanha.id = atendimentos.campanha_id', ['campanha' => 'nome']) ->joinLeft(['atendimento_sucesso' => $totalClientesSucesso],'campanha.id = atendimento_sucesso.campanha_id', ['total_atendimento_sucesso']) ->where('campanha.excluido = 0') ->where("campanha.situacao IN ('ATIVA','LIBERADA')") ->group('campanha.id') ->order('total_geral DESC'); return $this->getAdapter()->fetchAll($totalClientesCampanha); } public function selectTaxaContato() { $select = $this->getAdapter()->select()->from(['campanhas' => 'tb_callcenter_campanhas'], ['id', 'campanha' => 'nome']) ->joinInner(['clientes' => 'tb_callcenter_base'], 'campanhas.id = clientes.campanha_id', ['total_clientes' => 'COUNT(distinct clientes.id)']) ->joinLeft(["clientes_atendidos" => "tb_callcenter_atendimentos"], "campanhas.id = clientes_atendidos.campanha_id AND clientes.id = clientes_atendidos.cliente_id", ['total_atendidos' => 'COUNT(distinct clientes_atendidos.cliente_id)']) ->columns(['ordem' => '(COUNT(distinct clientes_atendidos.cliente_id) / COUNT(distinct clientes.id)*100)']) ->where('clientes.ativo = 1') ->where("campanhas.situacao IN ('ATIVA','LIBERADA')") ->where('campanhas.excluido = 0') ->group('campanhas.id') ->order('ordem DESC'); return $this->getAdapter()->fetchAll($select); } public function selectQuantidadePorHorario($campanhaId) { $select = $this->getAdapter()->select()->from(['campanha' => 'tb_callcenter_campanhas'],['id', 'campanha' => 'nome']) ->joinLeft(['atendimentos' => 'tb_callcenter_atendimentos'], 'campanha.id = atendimentos.campanha_id', [ 'dia_semana' => 'DAYOFWEEK(data_atendimento)', 'hora' => 'HOUR(data_atendimento)', 'total_recebida' => 'COUNT(atendimentos.id)' ]) ->joinInner(['status_tabulacao' => 'tb_callcenter_status'],'status_tabulacao.descricao = atendimentos.status_atendimento and tipo_tabulacao = "Positiva"', []) ->where('campanha.excluido <> 1 AND campanha.situacao IN("ATIVA", "LIBERADA")') ->where('campanha.id = ?', $campanhaId) ->group(['id', 'dia_semana', 'hora']) ->order('dia_semana'); return $this->getAdapter()->fetchAll($select); } public function selectTempoMedioOperacional() { $select = $this->getAdapter()->select()->from(['campanha' => 'tb_callcenter_campanhas'],['id', 'campanha' => 'nome']) ->joinLeft(['atendimento' => 'tb_callcenter_atendimentos'], 'campanha.id = atendimento.campanha_id AND atendimento.tempo_atendimento IS NOT NULL', []) ->columns([ 'media_tempo' => 'SEC_TO_TIME(SUM(tempo_atendimento) / COUNT(atendimento.id))' ]) ->where('campanha.excluido <> 1 AND campanha.situacao IN("ATIVA", "LIBERADA")') ->group('campanha.id') ->order('media_tempo DESC'); return $this->getAdapter()->fetchAll($select); } }
💾 保存文件
← 返回文件管理器