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