/** * Imprime a senha informada pelo atendimento. * * @param \Novosga\Model\Atendimento $atendimento * * @throws Exception * * @return string */ public function printTicket(\Novosga\Model\Atendimento $atendimento) { // custom view parameters $params = AppConfig::getInstance()->get('ticket.print.params'); if (is_callable($params)) { $params = $params($atendimento); } if (is_array($params)) { foreach ($params as $k => $v) { $this->app()->view()->set($k, $v); } } $this->app()->view()->set('atendimento', $atendimento); $this->app()->view()->set('now', new DateTime()); // custom print template $template = AppConfig::getInstance()->get('ticket.print.template'); if (empty($template)) { $template = 'print.html.twig'; } return $template; }
public function set_local(Context $context) { $response = new JsonResponse(); try { $unidade = $context->getUnidade(); $usuario = $context->getUser(); $numero = (int) $context->request()->post('local'); $tipo = (int) $context->request()->post('tipo'); AppConfig::getInstance()->hook('sga.atendimento.pre-setlocal', [$unidade, $usuario, $numero, $tipo]); $this->usuarioService->meta($usuario->getWrapped(), UsuarioService::ATTR_ATENDIMENTO_LOCAL, $numero); $this->usuarioService->meta($usuario->getWrapped(), UsuarioService::ATTR_ATENDIMENTO_TIPO, $tipo); $usuario->setLocal($numero); $usuario->setTipoAtendimento($tipo); $context->setUser($context->getUser()); AppConfig::getInstance()->hook('sga.atendimento.setlocal', [$unidade, $usuario, $numero, $tipo]); $response->success = true; } catch (\Exception $e) { $response->message = $e->getMessage(); $response->success = false; } return $response; }
/** * Reativa o atendimento para o mesmo serviço e mesma prioridade. * Só pode reativar atendimentos que foram: Cancelados ou Não Compareceu. * * @param Atendimento $atendimento * @param Unidade $unidade * * @return bool */ public function reativar(Atendimento $atendimento, Unidade $unidade) { AppConfig::getInstance()->hook('attending.pre-reactivate', $atendimento); // reativa apenas se estiver finalizada (data fim diferente de nulo) $success = $this->em->createQuery(' UPDATE Novosga\\Model\\Atendimento e SET e.status = :status, e.dataFim = NULL WHERE e.id = :id AND e.unidade = :unidade AND e.status IN (:statuses) ')->setParameter('status', self::SENHA_EMITIDA)->setParameter('statuses', array(self::SENHA_CANCELADA, self::NAO_COMPARECEU))->setParameter('id', $atendimento)->setParameter('unidade', $unidade)->execute() > 0; if ($success) { $this->em->refresh($atendimento); AppConfig::getInstance()->hook('attending.reactivate', $atendimento); } return $success; }
/** * Aplica a ordenação na QueryBuilder * @param QueryBuilder $builder */ public function applyOrders(QueryBuilder $builder, Unidade $unidade) { $ordering = AppConfig::getInstance()->get("queue.ordering"); if (is_callable($ordering)) { $ordering = $ordering($unidade); } if (!$ordering || empty($ordering)) { $ordering = self::$ordering; } foreach ($ordering as $item) { if (!isset($item['exp'])) { break; } $exp = $item['exp']; $order = isset($item['order']) ? $item['order'] : 'ASC'; $builder->addOrderBy($exp, $order); } }
/** * @return \Novosga\Auth\AuthProviderFactory */ public static function authenticationFactory() { $factory = null; $factoryClass = AppConfig::getInstance()->get('auth.factory'); if (!empty($factoryClass) && class_exists($factoryClass)) { $factory = new $factoryClass(); } if (!$factory || !$factory instanceof \Novosga\Auth\AuthProviderFactory) { $factory = new \Novosga\Auth\DefaultAuthProviderFactory(); } return $factory; }