Browse Source

Add AuthController

main
lucas cardoso 2 years ago
parent
commit
f2eeb14b90
  1. 85
      app/Controllers/AuthController.php

85
app/Controllers/AuthController.php

@ -0,0 +1,85 @@
<?php
namespace app\Controllers;
use app\Core\Controller;
use app\Models\EventosUsuarioModel;
use app\Models\QueueModel;
use app\Models\SupervisorModel;
use app\Models\UsuarioModel;
use Exception;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Throwable;
class AuthController extends Controller
{
private SupervisorModel $supervisorModel;
private QueueModel $queueModel;
private UsuarioModel $usuarioModel;
private EventosUsuarioModel $eventosUsuarioModel;
function __construct()
{
$this->queueModel = new QueueModel;
$this->usuarioModel = new UsuarioModel;
$this->supervisorModel = new SupervisorModel;
$this->eventosUsuarioModel = new EventosUsuarioModel;
}
public function login(ServerRequestInterface $request, ResponseInterface $response, array $args): ResponseInterface
{
try {
$this->supervisorModel->db->begin();
$body = json_decode($request->getBody()->getContents(), true);
$usuarios = $this->usuarioModel->list(['matricula' => $body['matricula']]);
//verifica se existe agente
if (empty($usuarios)) {
throw new Exception("Usuário não encontrado");
}
$usuario = $usuarios[0];
//verifica se existe a fila
$fila = $this->queueModel->list(['id' => $body['id_fila']])[0];
if (empty($fila)) {
throw new Exception("Fila não encontrada ou não está ativa");
}
$agentes = $this->supervisorModel->list(['matricula' => $body['matricula']]);
if (!empty($agentes)) {
throw new Exception('Agente já autenticado!');
}
if (!$this->supervisorModel->create(
[
'matricula' => $usuario->matricula,
'fila' => $fila->nome,
'nome' => $usuario->nome
]
)) {
throw new Exception('Não foi possével inserir o agente!');
}
if (!$this->eventosUsuarioModel->create(
[
'matricula' => $usuario->matricula,
'id_dac' => $fila->id
]
)) {
throw new Exception('Não foi possível inserir as informações de autenticação do login!');
}
$this->supervisorModel->db->commit();
$response->getBody()->write(
$this->retorno(
"Logado com sucesso",
true
)
);
} catch (Throwable $th) {
$this->supervisorModel->db->rollback();
$response->getBody()->write(
$this->retorno($th->getMessage())
);
}
return $response;
}
}
Loading…
Cancel
Save