/** * Adiciona uma nova senha na fila de chamada do painel de senhas. * * @param Unidade $unidade * @param Atendimento $atendimento */ public function chamarSenha(Unidade $unidade, Atendimento $atendimento) { $senha = new PainelSenha(); $senha->setUnidade($unidade); $senha->setServico($atendimento->getServicoUnidade()->getServico()); $senha->setNumeroSenha($atendimento->getSenha()->getNumero()); $senha->setSiglaSenha($atendimento->getSenha()->getSigla()); $senha->setMensagem($atendimento->getSenha()->getLegenda()); // local $senha->setLocal($atendimento->getServicoUnidade()->getLocal()->getNome()); $senha->setNumeroLocal($atendimento->getLocal()); // prioridade $senha->setPeso($atendimento->getSenha()->getPrioridade()->getPeso()); $senha->setPrioridade($atendimento->getSenha()->getPrioridade()->getNome()); // cliente $senha->setNomeCliente($atendimento->getCliente()->getNome()); $senha->setDocumentoCliente($atendimento->getCliente()->getDocumento()); AppConfig::getInstance()->hook('panel.pre-call', array($atendimento, $senha)); $this->em->persist($senha); $this->em->flush(); AppConfig::getInstance()->hook('panel.call', array($atendimento, $senha)); }
public function chamar(Atendimento $atendimento, Usuario $usuario, $local) { AppConfig::getInstance()->hook("attending.pre-call", array($atendimento, $usuario, $local)); $atendimento->setUsuario($usuario); $atendimento->setLocal($local); $atendimento->setStatus(AtendimentoService::CHAMADO_PELA_MESA); $atendimento->setDataChamada(new DateTime()); // atualiza o proximo da fila $query = $this->em->createQuery("\n UPDATE \n Novosga\\Model\\Atendimento e \n SET \n e.usuario = :usuario, e.local = :local, e.status = :novoStatus, e.dataChamada = :data\n WHERE \n e.id = :id AND e.status = :statusAtual\n "); $query->setParameter('usuario', $atendimento->getUsuario()->getId()); $query->setParameter('local', $atendimento->getLocal()); $query->setParameter('novoStatus', $atendimento->getStatus()); $query->setParameter('data', $atendimento->getDataChamada()); $query->setParameter('id', $atendimento->getId()); $query->setParameter('statusAtual', AtendimentoService::SENHA_EMITIDA); /* * caso entre o intervalo do select e o update, o proximo ja tiver sido chamado * a consulta retornara 0, entao tenta pegar o proximo novamente (outro) */ $success = $query->execute() > 0; if ($success) { AppConfig::getInstance()->hook("attending.call", array($atendimento, $usuario)); } return $success; }
/** * {@inheritDoc} */ public function getLocal() { $this->__initializer__ && $this->__initializer__->__invoke($this, 'getLocal', array()); return parent::getLocal(); }