✏️ 正在编辑: CallcenterIndicadores.php
路径:
/srv/systems_dir/yuppiecred/application/models/CallcenterIndicadores.php
提示:
您可以编辑任何文件(包括二进制文件),但请注意不当修改可能导致文件损坏。
<?php class Model_CallcenterIndicadores { public static $indicadoresAtivos = []; public static function habilitados() { $ns = new Zend_Session_Namespace(); $acl = $ns->acl; foreach (get_class_methods(self::class) as $metodo) { if (strstr($metodo, 'indicador')) { $metodoNome = substr($metodo, 9, strlen($metodo)); $permissao = ltrim(strtolower(preg_replace('/[A-Z]([A-Z](?![a-z]))*/', '-$0', $metodoNome)), '-'); if ($acl->isAllowed(Yuppie_Auth::getIdentity()->grupo, 'callcenter-indicadores', $permissao)) { $reflector = new ReflectionClass(self::class); $anotacao = $reflector->getMethod($metodo)->getDocComment(); $anotacao = explode('|', $anotacao); self::$indicadoresAtivos[$permissao] = [ 'title' => $anotacao[1], 'jquery' => $anotacao[2] ]; } } } return self::$indicadoresAtivos; } /** * |Taxa de Conversão por Campanha|getDadosTaxaConversao()| */ public static function indicadorTaxaConversao() { return (new Model_DbTable_CallcenterAtendimento())->taxaConversao(); } /** * |Contato Pessoa Certa (CPC)|getDadosContatoPessoaCerta()| */ public static function indicadorContatoPessoaCerta() { return (new Model_DbTable_CallcenterAtendimento())->contatoPessoaCerta(); } /** * |Taxa de Contato|getDadosTaxaContato()| */ public static function indicadorTaxaDeContato() { return (new Model_DbTable_CallcenterAtendimento())->selectTaxaContato(); } /** * |Best Time to Call|getDadosBestTimeCall()| */ public static function indicadorBestTimeCall($campanhaId) { return (new Model_DbTable_CallcenterAtendimento())->selectQuantidadePorHorario($campanhaId); } /** * |Absenteísmo|getDadosAbsenteismo()| */ public static function indicadorAbsenteismo() { $presencasMes = (new Model_DbTable_FolhaPonto())->selectPresencasAgentesCallcenter(); $agentes = []; foreach ($presencasMes as $key => $agente) { $diasUteisAgente = Model_FolhaPontoFolgas::contarDiasUteis($agente['dias'], $agente['agente_id']); $percentual = self::calcularAbsenteismo($diasUteisAgente, $agente); $agentes[] = [ 'agente' => $agente['agente'], 'percentual' => $percentual, 'diasTrabalhados' => $agente['dias_trabalhados'], 'diasUteis' => $diasUteisAgente ]; $ordem[$key] = $percentual; } array_multisort($ordem, SORT_DESC, $agentes); return $agentes; } /** * |Tempo Médio Operacional (TMO)|getDadosTempoMedioOperacional()| */ public static function indicadorTempoMedioOperacional() { return (new Model_DbTable_CallcenterAtendimento())->selectTempoMedioOperacional(); } /** * @param int|null $diasUteis * @param array $agente * @return float * @throws Zend_Db_Table_Exception */ public static function calcularAbsenteismo(?int $diasUteis, array $agente): float { $mes = Zend_Date::now()->get('MM/yyyy'); $diasFolgados = (new Model_FolhaPontoFolgas())->getDiasFolgados($mes, $agente['agente_id']); if (!$diasUteis) { return 0; } $diasObrigatorios = $diasUteis - $diasFolgados; $diasFaltas = $diasObrigatorios - $agente['dias_trabalhados']; return (100 / $diasObrigatorios) * $diasFaltas; } }
💾 保存文件
← 返回文件管理器