lucas cardoso
2 years ago
1 changed files with 85 additions and 0 deletions
@ -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…
Reference in new issue