agent = new Agent(); $this->eventqueue = new EventQueue(); $this->classificacao = new Classificacao(); } public function classificacaoList($queue) { try { $classificacao = $this->classificacao->findClassificacaoByQueue($queue); return $classificacao; } catch (Exception $ex) { $this->message($ex->getMessage()); } return false; } public function classificacaoRegister($matricula, $clas_id, $clit_id, $id_bilhetes, $id_dac) { try { $this->classificacao->begin(); $this->classificacao->addClassificacaoReg($matricula, $clas_id, $clit_id, $id_bilhetes, $id_dac); $agentData = $this->agent->findAgentByMatricula($matricula); $this->agent->updateAgent($matricula, $agentData->ramal, CONF_AGENT_STATUS_LIVRE, null, null, 1, null, 1); $this->classificacao->commit(); return true; } catch (Exception $ex) { $this->classificacao->rollback(); $this->message($ex->getMessage()); } return false; } public function classificacaoRegList($uniqueid) { try { $classificacaoReg = $this->classificacao->findClassificacaoRegByUniqueid($uniqueid); return $classificacaoReg; } catch (Exception $ex) { $this->message($ex->getMessage()); } return false; } /* * Listar classificacoes disponiveis */ public function agentClassificacaoList($queue) { try { $classificacaoLista = $this->classificacaoList($queue); if ($classificacaoLista) { $strmsg = "Informe o número da classificação para o atendimento: \n"; $count = 1; foreach ($classificacaoLista as $classificacao) { $strmsg .= "{$count}. *{$classificacao->clas_descricao}* - _{$classificacao->clit_descricao}_ \n"; $count++; } $this->message($strmsg); return $strmsg; } return false; } catch (Exception $ex) { $this->message($ex->getMessage()); } return false; } /* * Registrar uma classificacao */ public function agentClassificacaoRegister($matricula, $queue, $uniqueid, $option) { try { $classificacaoLista = $this->classificacaoList($queue); if ($classificacaoLista) { $count = 1; foreach ($classificacaoLista as $classificacao) { if ($option == $count || $option == $classificacao->clas_descricao . '-' . $classificacao->clit_descricao) { $registro = $this->classificacaoRegister($matricula, $classificacao->clas_id, $classificacao->clit_id, $uniqueid, $classificacao->id_dac); if (!$registro) { throw new Exception("Não foi possível classificar o atendimento. " . $this->message()); } $this->message("Atendimento classificado com sucesso!"); return true; } $count++; } throw new Exception("Informe uma classificação válida!"); } return true; } catch (Exception $ex) { $this->classificacao->rollback(); $this->message($ex->getMessage()); } return false; } /** * Verificar se o agente esta pendente de classificacao * @return string uniqueid */ public function agentClassificacaoPending($matricula, $queue) { $pendenteClassificacao = null; $classificacaoLista = $this->classificacaoList($queue); //SE NAO EXISTIR CLASSIFICACAO NAO PRECISA CLASSIFICAR if ($classificacaoLista) { $eventQueue = $this->eventqueue->findEventQueueByAgent($matricula, $queue); $uniqueid = null; if ($eventQueue) { $uniqueid = $eventQueue->uid2; $classificacaoReg = $this->classificacao->findClassificacaoRegByUniqueid($uniqueid); if (!$classificacaoReg) { $pendenteClassificacao = $uniqueid; } } } return $pendenteClassificacao; } }