public function isValidSession(Context $context) { $user = $context->getUser(); if (!$user || !$user->isAtivo()) { return false; } // verificando session id $em = $context->database()->createEntityManager(); $query = $em->createQuery("SELECT u.sessionId FROM Novosga\\Model\\Usuario u WHERE u.id = :id"); $query->setParameter('id', $user->getId()); $rs = $query->getSingleResult(); return $user->getSessionId() == $rs['sessionId']; }
protected function preDelete(Context $context, SequencialModel $model) { if ($context->getUser()->getId() === $model->getId()) { throw new \Exception(_('Não é possível excluir si próprio.')); } // verificando a quantidade de atendimentos do usuario $total = 0; $models = array('Atendimento', 'ViewAtendimento'); foreach ($models as $atendimentoModel) { $query = $this->em()->createQuery("SELECT COUNT(e) as total FROM Novosga\\Model\\{$atendimentoModel} e WHERE e.usuario = :usuario"); $query->setParameter('usuario', $model->getId()); $rs = $query->getSingleResult(); $total += $rs['total']; } if ($total > 0) { throw new \Exception(_('Não é possível excluir esse usuário pois o mesmo já realizou atendimentos.')); } // excluindo vinculos do usuario (servicos e lotacoes) $models = array('ServicoUsuario', 'Lotacao'); foreach ($models as $vinculoModel) { $query = $this->em()->createQuery("DELETE FROM Novosga\\Model\\{$vinculoModel} e WHERE e.usuario = :usuario"); $query->setParameter('usuario', $model->getId()); $query->execute(); } }
/** * Busca os atendimentos a partir do número da senha. * * @param Novosga\Context $context */ public function consulta_senha(Context $context) { $response = new JsonResponse(); $unidade = $context->getUser()->getUnidade(); if ($unidade) { $numero = $context->request()->get('numero'); $atendimentos = $this->atendimentoService->buscaAtendimentos($unidade, $numero); $response->data['total'] = count($atendimentos); foreach ($atendimentos as $atendimento) { $response->data['atendimentos'][] = $atendimento->jsonSerialize(); } $response->success = true; } else { $response->message = _('Nenhuma unidade selecionada'); } return $response; }
public function update_servico(Context $context) { $response = new JsonResponse(); try { if (!$context->request()->isPost()) { throw new \Exception(_('Somente via POST')); } $id = (int) $context->request()->post('id'); $service = new ServicoService($this->em()); $su = $service->servicoUnidade($context->getUser()->getUnidade(), $id); $sigla = $context->request()->post('sigla'); $peso = (int) $context->request()->post('peso'); $peso = max(1, $peso); $local = $this->em()->find("Novosga\\Model\\Local", (int) $context->request()->post('local')); $su->setSigla($sigla); $su->setPeso($peso); if ($local) { $su->setLocal($local); } $this->em()->merge($su); $this->em()->flush(); $response->success = true; } catch (Exception $e) { $response->message = $e->getMessage(); } return $response; }
public function desativar_sessao(Context $context) { $response = new JsonResponse(true); $usuario = $context->getUser(); $usuario->setAtivo(false); $context->setUser($usuario); return $response; }
/** * Atualiza o status da senha para cancelado. * * @param Novosga\Context $context */ public function cancelar(Context $context) { $response = new JsonResponse(); try { $unidade = $context->getUser()->getUnidade(); if (!$unidade) { throw new Exception(_('Nenhuma unidade selecionada')); } $id = (int) $context->request()->post('id'); $atendimento = $this->getAtendimento($unidade, $id); $service = new AtendimentoService($this->em()); $response->success = $service->cancelar($atendimento, $unidade); } catch (Exception $e) { $response->message = $e->getMessage(); } return $response; }