✏️ 正在编辑: Discador.php
路径:
/srv/systems_dir/yuppiecred-lidernegocios/application/models/Discador.php
提示:
您可以编辑任何文件(包括二进制文件),但请注意不当修改可能导致文件损坏。
<?php use Model_DbTable_CallcenterCampanha as CallcenterCampanha; use Model_DbTable_CallcenterTelefone as CallcenterTelefone; class Model_Discador { /** * Quando uma chamada é enviada do discador para o yuppie * e atende os criterios da campanha, atualizamos o campo data e hora * Serve como "log" para o cliente saber se o discador esta enviando para o yuppie * @param Model_DbTable_CallcenterBase $callcenterBase * @return Model_Discador */ public function atualizarUltimaChamadaCampanha($callcenterBase) { (new CallcenterCampanha)->update([ 'discador_ultima_chamada' => Zend_Date::now()->get("yyyy-MM-dd hh:mm:ss") ], "id = {$callcenterBase['campanha_id']}"); return $this; } public function atualizarStatusFalando($chamadaDiscadorId) { return $this->_atualizarStatusChamadaDiscador($chamadaDiscadorId, 'falando'); } public function atualizarStatusDesligada($chamadaDiscadorId) { return $this->_atualizarStatusChamadaDiscador($chamadaDiscadorId, 'desligada'); } private function _atualizarStatusChamadaDiscador($chamadaDiscadorId, $status) { (new CallcenterTelefone())->update([ 'discador_status' => $status ], ["discador_chamada_id = ?" => $chamadaDiscadorId]); return $this; } public function tabularChamada($parametros) { $discador = Core_Discador_Factory::load(); $clienteId = $parametros['id']; $chamadaId = $parametros['chamada_id']; $status = $parametros['status_atendimento']; $log = Core_Discador_Log::getInstance()->initDefault(); if ($discador && $clienteId > 0 && !empty($status)) { $informacoesChamada = (new Model_DbTable_CallcenterTelefone) ->selectDiscadorChamadaIdFalando($clienteId, $chamadaId); if (!$informacoesChamada) { $log->log("Tabulação sem informações de chamada: " . print_r($parametros, true) , Zend_Log::DEBUG); return "ID de chamada não localizado."; } $statusChamada = $discador->consultarUnicaChamada($informacoesChamada['contato_id']); $tabulacoes = $discador->listarTabulacao(); if (in_array($statusChamada, $discador->statusNaoTabular) || empty($tabulacoes)) { $log->log("Status não tabular: " . print_r($statusChamada, true) , Zend_Log::DEBUG); (new Model_DbTable_CallcenterTelefone)->update([ 'discador_tabulacao_pendente' => 1 ], "discador_chamada_id = {$informacoesChamada['contato_id']}"); return "Atendente ainda em ligação ou tabulação não cadastrada no discador."; } $tabulacoesArray = preg_split('/<br[^>]*>/i', $tabulacoes); foreach ($tabulacoesArray as $tabulacao) { $bloco = explode('|', $tabulacao); if (isset($bloco[1]) && $bloco[1] == $status) { $statusTabulado = $discador->tabularChamada( $informacoesChamada['campanha_codigo'], $informacoesChamada['contato_id'], current($bloco)); if ($statusTabulado != '1') { $log->log("Tabulação não efetuada.", Zend_Log::DEBUG); (new Model_DbTable_CallcenterTelefone)->update([ 'discador_tabulacao_pendente' => 1 ], "discador_chamada_id = {$informacoesChamada['contato_id']}"); } return $statusTabulado; } } } } public static function consultarStatusOperador() { $operadorId = Yuppie_Auth::getIdentity()->id; $dbtable = new Model_DbTable_Usuario; $operador = $dbtable->fetchRow(['id = ?' => $operadorId]); $discador = Core_Discador_Factory::load(); if( $discador !== false ) return $discador->consultarStatusOperador($operador->discador_id); } }
💾 保存文件
← 返回文件管理器