gdias преди 2 седмици
родител
ревизия
5f6d257f0c

+ 7 - 7
controllers/AgentEscalationController.php

@@ -3,7 +3,7 @@
 namespace Controllers;
 
 use Libs\Logger;
-use Libs\ResponseLib;
+use Libs\Payload;
 use Models\AgentsModel;
 use Models\UserModel;
 use Psr\Http\Message\ServerRequestInterface;
@@ -26,28 +26,28 @@ class AgentEscalationController
         $agentId = (int) ($body['id'] ?? 0);
 
         if ($userId <= 0) {
-            return ResponseLib::sendFail('Unauthorized: Missing authenticated user', [], 'E_VALIDATE')->withStatus(401);
+            return Payload::fail('Unauthorized: Missing authenticated user', [], 'E_VALIDATE', 401);
         }
 
         if ($agentId <= 0) {
-            return ResponseLib::sendFail('Missing or invalid id', [], 'E_VALIDATE')->withStatus(400);
+            return Payload::fail('Missing or invalid id', [], 'E_VALIDATE', 400);
         }
 
         try {
             $companyId = $this->userModel->getCompanyIdByUserId($userId);
             if ($companyId === null) {
-                return ResponseLib::sendFail('User not found', [], 'E_NOT_FOUND')->withStatus(404);
+                return Payload::fail('User not found', [], 'E_NOT_FOUND', 404);
             }
 
             $agent = $this->agentsModel->toggleAgentEscalation($companyId, $agentId);
             if ($agent === null) {
-                return ResponseLib::sendFail('Agent not found', [], 'E_NOT_FOUND')->withStatus(404);
+                return Payload::fail('Agent not found', [], 'E_NOT_FOUND', 404);
             }
 
-            return ResponseLib::sendOk($agent);
+            return Payload::ok($agent);
         } catch (\Throwable $e) {
             Logger::error('Failed to update agent escalation', ['error' => $e->getMessage()]);
-            return ResponseLib::sendFail('Failed to update agent escalation', [], 'E_GENERIC')->withStatus(500);
+            return Payload::fail('Failed to update agent escalation', [], 'E_GENERIC', 500);
         }
     }
 }

+ 6 - 6
controllers/AgentSaveController.php

@@ -3,7 +3,7 @@
 namespace Controllers;
 
 use Libs\Logger;
-use Libs\ResponseLib;
+use Libs\Payload;
 use Models\AgentsModel;
 use Models\UserModel;
 use Psr\Http\Message\ServerRequestInterface;
@@ -25,24 +25,24 @@ class AgentSaveController
         $body = json_decode((string) $request->getBody(), true) ?: [];
 
         if ($userId <= 0) {
-            return ResponseLib::sendFail('Unauthorized: Missing authenticated user', [], 'E_VALIDATE')->withStatus(401);
+            return Payload::fail('Unauthorized: Missing authenticated user', [], 'E_VALIDATE', 401);
         }
 
         try {
             $companyId = $this->userModel->getCompanyIdByUserId($userId);
             if ($companyId === null) {
-                return ResponseLib::sendFail('User not found', [], 'E_NOT_FOUND')->withStatus(404);
+                return Payload::fail('User not found', [], 'E_NOT_FOUND', 404);
             }
 
             $agent = $this->agentsModel->saveAgent($companyId, $body);
             if ($agent === null) {
-                return ResponseLib::sendFail('Invalid payload, duplicated email, or agent not found', [], 'E_VALIDATE')->withStatus(400);
+                return Payload::fail('Invalid payload, duplicated email, or agent not found', [], 'E_VALIDATE', 400);
             }
 
-            return ResponseLib::sendOk($agent, 'S_CREATED');
+            return Payload::ok($agent, 'S_CREATED');
         } catch (\Throwable $e) {
             Logger::error('Failed to save agent', ['error' => $e->getMessage()]);
-            return ResponseLib::sendFail('Failed to save agent', [], 'E_GENERIC')->withStatus(500);
+            return Payload::fail('Failed to save agent', [], 'E_GENERIC', 500);
         }
     }
 }

+ 7 - 7
controllers/AgentStatusController.php

@@ -3,7 +3,7 @@
 namespace Controllers;
 
 use Libs\Logger;
-use Libs\ResponseLib;
+use Libs\Payload;
 use Models\AgentsModel;
 use Models\UserModel;
 use Psr\Http\Message\ServerRequestInterface;
@@ -26,28 +26,28 @@ class AgentStatusController
         $agentId = (int) ($body['id'] ?? 0);
 
         if ($userId <= 0) {
-            return ResponseLib::sendFail('Unauthorized: Missing authenticated user', [], 'E_VALIDATE')->withStatus(401);
+            return Payload::fail('Unauthorized: Missing authenticated user', [], 'E_VALIDATE', 401);
         }
 
         if ($agentId <= 0) {
-            return ResponseLib::sendFail('Missing or invalid id', [], 'E_VALIDATE')->withStatus(400);
+            return Payload::fail('Missing or invalid id', [], 'E_VALIDATE', 400);
         }
 
         try {
             $companyId = $this->userModel->getCompanyIdByUserId($userId);
             if ($companyId === null) {
-                return ResponseLib::sendFail('User not found', [], 'E_NOT_FOUND')->withStatus(404);
+                return Payload::fail('User not found', [], 'E_NOT_FOUND', 404);
             }
 
             $agent = $this->agentsModel->toggleAgentStatus($companyId, $agentId);
             if ($agent === null) {
-                return ResponseLib::sendFail('Agent not found', [], 'E_NOT_FOUND')->withStatus(404);
+                return Payload::fail('Agent not found', [], 'E_NOT_FOUND', 404);
             }
 
-            return ResponseLib::sendOk($agent);
+            return Payload::ok($agent);
         } catch (\Throwable $e) {
             Logger::error('Failed to update agent status', ['error' => $e->getMessage()]);
-            return ResponseLib::sendFail('Failed to update agent status', [], 'E_GENERIC')->withStatus(500);
+            return Payload::fail('Failed to update agent status', [], 'E_GENERIC', 500);
         }
     }
 }

+ 5 - 5
controllers/AgentsController.php

@@ -3,7 +3,7 @@
 namespace Controllers;
 
 use Libs\Logger;
-use Libs\ResponseLib;
+use Libs\Payload;
 use Models\AgentsModel;
 use Models\UserModel;
 use Psr\Http\Message\ServerRequestInterface;
@@ -24,21 +24,21 @@ class AgentsController
         $userId = (int) ($request->getAttribute('user_id') ?? 0);
 
         if ($userId <= 0) {
-            return ResponseLib::sendFail('Unauthorized: Missing authenticated user', [], 'E_VALIDATE')->withStatus(401);
+            return Payload::fail('Unauthorized: Missing authenticated user', [], 'E_VALIDATE', 401);
         }
 
         try {
             $companyId = $this->userModel->getCompanyIdByUserId($userId);
             if ($companyId === null) {
-                return ResponseLib::sendFail('User not found', [], 'E_NOT_FOUND')->withStatus(404);
+                return Payload::fail('User not found', [], 'E_NOT_FOUND', 404);
             }
 
-            return ResponseLib::sendOk(
+            return Payload::ok(
                 $this->agentsModel->getAgentsData($companyId, $request->getQueryParams())
             );
         } catch (\Throwable $e) {
             Logger::error('Failed to load agents', ['error' => $e->getMessage()]);
-            return ResponseLib::sendFail('Failed to load agents', [], 'E_GENERIC')->withStatus(500);
+            return Payload::fail('Failed to load agents', [], 'E_GENERIC', 500);
         }
     }
 }

+ 5 - 5
controllers/AnalyticsSentimentDashboardController.php

@@ -3,7 +3,7 @@
 namespace Controllers;
 
 use Libs\Logger;
-use Libs\ResponseLib;
+use Libs\Payload;
 use Models\AnalyticsSentimentDashboardModel;
 use Models\UserModel;
 use Psr\Http\Message\ServerRequestInterface;
@@ -24,21 +24,21 @@ class AnalyticsSentimentDashboardController
         $userId = (int) ($request->getAttribute('user_id') ?? 0);
 
         if ($userId <= 0) {
-            return ResponseLib::sendFail('Unauthorized: Missing authenticated user', [], 'E_VALIDATE')->withStatus(401);
+            return Payload::fail('Unauthorized: Missing authenticated user', [], 'E_VALIDATE', 401);
         }
 
         try {
             $companyId = $this->userModel->getCompanyIdByUserId($userId);
             if ($companyId === null) {
-                return ResponseLib::sendFail('User not found', [], 'E_NOT_FOUND')->withStatus(404);
+                return Payload::fail('User not found', [], 'E_NOT_FOUND', 404);
             }
 
-            return ResponseLib::sendOk(
+            return Payload::ok(
                 $this->analyticsSentimentDashboardModel->getDashboardData($companyId, $request->getQueryParams())
             );
         } catch (\Throwable $e) {
             Logger::error('Failed to load sentiment dashboard', ['error' => $e->getMessage()]);
-            return ResponseLib::sendFail('Failed to load sentiment dashboard', [], 'E_GENERIC')->withStatus(500);
+            return Payload::fail('Failed to load sentiment dashboard', [], 'E_GENERIC', 500);
         }
     }
 }

+ 5 - 5
controllers/DashboardOverviewController.php

@@ -3,7 +3,7 @@
 namespace Controllers;
 
 use Libs\Logger;
-use Libs\ResponseLib;
+use Libs\Payload;
 use Models\DashboardOverviewModel;
 use Models\UserModel;
 use Psr\Http\Message\ServerRequestInterface;
@@ -24,22 +24,22 @@ class DashboardOverviewController
         $userId = (int) ($request->getAttribute('user_id') ?? 0);
 
         if ($userId <= 0) {
-            return ResponseLib::sendFail('Unauthorized: Missing authenticated user', [], 'E_VALIDATE')->withStatus(401);
+            return Payload::fail('Unauthorized: Missing authenticated user', [], 'E_VALIDATE', 401);
         }
 
         try {
             $companyId = $this->userModel->getCompanyIdByUserId($userId);
 
             if ($companyId === null) {
-                return ResponseLib::sendFail('User not found', [], 'E_NOT_FOUND')->withStatus(404);
+                return Payload::fail('User not found', [], 'E_NOT_FOUND', 404);
             }
 
-            return ResponseLib::sendOk(
+            return Payload::ok(
                 $this->dashboardOverviewModel->getOverviewData($companyId, $request->getQueryParams())
             );
         } catch (\Throwable $e) {
             Logger::error('Failed to load dashboard overview', ['error' => $e->getMessage()]);
-            return ResponseLib::sendFail('Failed to load dashboard overview', [], 'E_GENERIC')->withStatus(500);
+            return Payload::fail('Failed to load dashboard overview', [], 'E_GENERIC', 500);
         }
     }
 }

+ 5 - 5
controllers/EvolutionOverviewController.php

@@ -3,7 +3,7 @@
 namespace Controllers;
 
 use Libs\Logger;
-use Libs\ResponseLib;
+use Libs\Payload;
 use Models\EvolutionOverviewModel;
 use Models\UserModel;
 use Psr\Http\Message\ServerRequestInterface;
@@ -24,21 +24,21 @@ class EvolutionOverviewController
         $userId = (int) ($request->getAttribute('user_id') ?? 0);
 
         if ($userId <= 0) {
-            return ResponseLib::sendFail('Unauthorized: Missing authenticated user', [], 'E_VALIDATE')->withStatus(401);
+            return Payload::fail('Unauthorized: Missing authenticated user', [], 'E_VALIDATE', 401);
         }
 
         try {
             $companyId = $this->userModel->getCompanyIdByUserId($userId);
             if ($companyId === null) {
-                return ResponseLib::sendFail('User not found', [], 'E_NOT_FOUND')->withStatus(404);
+                return Payload::fail('User not found', [], 'E_NOT_FOUND', 404);
             }
 
-            return ResponseLib::sendOk(
+            return Payload::ok(
                 $this->evolutionOverviewModel->getOverviewData($companyId, $request->getQueryParams())
             );
         } catch (\Throwable $e) {
             Logger::error('Failed to load evolution overview', ['error' => $e->getMessage()]);
-            return ResponseLib::sendFail('Failed to load evolution overview', [], 'E_GENERIC')->withStatus(500);
+            return Payload::fail('Failed to load evolution overview', [], 'E_GENERIC', 500);
         }
     }
 }

+ 5 - 5
controllers/ExecutiveDashboardController.php

@@ -3,7 +3,7 @@
 namespace Controllers;
 
 use Libs\Logger;
-use Libs\ResponseLib;
+use Libs\Payload;
 use Models\ExecutiveDashboardModel;
 use Models\UserModel;
 use Psr\Http\Message\ServerRequestInterface;
@@ -24,21 +24,21 @@ class ExecutiveDashboardController
         $userId = (int) ($request->getAttribute('user_id') ?? 0);
 
         if ($userId <= 0) {
-            return ResponseLib::sendFail('Unauthorized: Missing authenticated user', [], 'E_VALIDATE')->withStatus(401);
+            return Payload::fail('Unauthorized: Missing authenticated user', [], 'E_VALIDATE', 401);
         }
 
         try {
             $companyId = $this->userModel->getCompanyIdByUserId($userId);
             if ($companyId === null) {
-                return ResponseLib::sendFail('User not found', [], 'E_NOT_FOUND')->withStatus(404);
+                return Payload::fail('User not found', [], 'E_NOT_FOUND', 404);
             }
 
-            return ResponseLib::sendOk(
+            return Payload::ok(
                 $this->executiveDashboardModel->getDashboardData($companyId, $request->getQueryParams())
             );
         } catch (\Throwable $e) {
             Logger::error('Failed to load executive dashboard', ['error' => $e->getMessage()]);
-            return ResponseLib::sendFail('Failed to load executive dashboard', [], 'E_GENERIC')->withStatus(500);
+            return Payload::fail('Failed to load executive dashboard', [], 'E_GENERIC', 500);
         }
     }
 }

+ 7 - 7
controllers/InteractionDetailsController.php

@@ -3,7 +3,7 @@
 namespace Controllers;
 
 use Libs\Logger;
-use Libs\ResponseLib;
+use Libs\Payload;
 use Models\InteractionDetailsModel;
 use Models\UserModel;
 use Psr\Http\Message\ServerRequestInterface;
@@ -25,28 +25,28 @@ class InteractionDetailsController
         $conversationId = (int) (($request->getQueryParams()['conversation_id'] ?? 0));
 
         if ($userId <= 0) {
-            return ResponseLib::sendFail('Unauthorized: Missing authenticated user', [], 'E_VALIDATE')->withStatus(401);
+            return Payload::fail('Unauthorized: Missing authenticated user', [], 'E_VALIDATE', 401);
         }
 
         if ($conversationId <= 0) {
-            return ResponseLib::sendFail('Missing or invalid conversation_id', [], 'E_VALIDATE')->withStatus(400);
+            return Payload::fail('Missing or invalid conversation_id', [], 'E_VALIDATE', 400);
         }
 
         try {
             $companyId = $this->userModel->getCompanyIdByUserId($userId);
             if ($companyId === null) {
-                return ResponseLib::sendFail('User not found', [], 'E_NOT_FOUND')->withStatus(404);
+                return Payload::fail('User not found', [], 'E_NOT_FOUND', 404);
             }
 
             $data = $this->interactionDetailsModel->getInteractionDetails($companyId, $conversationId);
             if ($data === null) {
-                return ResponseLib::sendFail('Conversation not found', [], 'E_NOT_FOUND')->withStatus(404);
+                return Payload::fail('Conversation not found', [], 'E_NOT_FOUND', 404);
             }
 
-            return ResponseLib::sendOk($data);
+            return Payload::ok($data);
         } catch (\Throwable $e) {
             Logger::error('Failed to load interaction details', ['error' => $e->getMessage()]);
-            return ResponseLib::sendFail('Failed to load interaction details', [], 'E_GENERIC')->withStatus(500);
+            return Payload::fail('Failed to load interaction details', [], 'E_GENERIC', 500);
         }
     }
 }

+ 5 - 5
controllers/InteractionsController.php

@@ -3,7 +3,7 @@
 namespace Controllers;
 
 use Libs\Logger;
-use Libs\ResponseLib;
+use Libs\Payload;
 use Models\InteractionsModel;
 use Models\UserModel;
 use Psr\Http\Message\ServerRequestInterface;
@@ -25,21 +25,21 @@ class InteractionsController
         $userEmail = (string) ($request->getAttribute('user_email') ?? '');
 
         if ($userId <= 0) {
-            return ResponseLib::sendFail('Unauthorized: Missing authenticated user', [], 'E_VALIDATE')->withStatus(401);
+            return Payload::fail('Unauthorized: Missing authenticated user', [], 'E_VALIDATE', 401);
         }
 
         try {
             $companyId = $this->userModel->getCompanyIdByUserId($userId);
             if ($companyId === null) {
-                return ResponseLib::sendFail('User not found', [], 'E_NOT_FOUND')->withStatus(404);
+                return Payload::fail('User not found', [], 'E_NOT_FOUND', 404);
             }
 
-            return ResponseLib::sendOk(
+            return Payload::ok(
                 $this->interactionsModel->getInteractionsData($companyId, $userEmail, $request->getQueryParams())
             );
         } catch (\Throwable $e) {
             Logger::error('Failed to load interactions', ['error' => $e->getMessage()]);
-            return ResponseLib::sendFail('Failed to load interactions', [], 'E_GENERIC')->withStatus(500);
+            return Payload::fail('Failed to load interactions', [], 'E_GENERIC', 500);
         }
     }
 }

+ 5 - 5
controllers/LoginController.php

@@ -4,7 +4,7 @@ namespace Controllers;
 
 use Firebase\JWT\JWT;
 use Libs\Logger;
-use Libs\ResponseLib;
+use Libs\Payload;
 use Libs\Validator;
 use Models\UserModel;
 use Psr\Http\Message\ServerRequestInterface;
@@ -23,20 +23,20 @@ class LoginController
             ->required('password');
 
         if ($validator->fails()) {
-            return ResponseLib::sendFail($validator->firstError(), [], "E_VALIDATE")->withStatus(400);
+            return Payload::fail($validator->firstError(), [], 'E_VALIDATE', 400);
         }
 
         $secret = $_ENV['JWT_SECRET'] ?? '';
         if ($secret === '') {
             Logger::error('JWT_SECRET is not configured; cannot issue tokens');
-            return ResponseLib::sendFail("Internal server error", [], "E_GENERIC")->withStatus(500);
+            return Payload::fail('Internal server error', [], 'E_GENERIC', 500);
         }
 
         $userModel = new UserModel();
         $user = $userModel->validateLogin($email, $password);
 
         if (!$user) {
-            return ResponseLib::sendFail("Invalid credentials", [], "E_VALIDATE")->withStatus(401);
+            return Payload::fail('Invalid credentials', [], 'E_VALIDATE', 401);
         }
 
         $payload = [
@@ -49,7 +49,7 @@ class LoginController
         ];
         $jwt = JWT::encode($payload, $secret, 'HS256');
 
-        return ResponseLib::sendOk([
+        return Payload::ok([
             'token' => $jwt,
             'user' => $user,
         ]);

+ 4 - 4
controllers/MeController.php

@@ -2,7 +2,7 @@
 
 namespace Controllers;
 
-use Libs\ResponseLib;
+use Libs\Payload;
 use Models\UserModel;
 use Psr\Http\Message\ServerRequestInterface;
 
@@ -20,14 +20,14 @@ class MeController
         $userId = (int) ($request->getAttribute('user_id') ?? 0);
 
         if ($userId <= 0) {
-            return ResponseLib::sendFail("Unauthorized: Missing authenticated user", [], "E_VALIDATE")->withStatus(401);
+            return Payload::fail('Unauthorized: Missing authenticated user', [], 'E_VALIDATE', 401);
         }
 
         $profile = $this->userModel->getAuthenticatedProfile($userId);
         if (!$profile) {
-            return ResponseLib::sendFail("User not found", [], "E_NOT_FOUND")->withStatus(404);
+            return Payload::fail('User not found', [], 'E_NOT_FOUND', 404);
         }
 
-        return ResponseLib::sendOk($profile);
+        return Payload::ok($profile);
     }
 }

+ 5 - 5
controllers/PersonasOverviewController.php

@@ -3,7 +3,7 @@
 namespace Controllers;
 
 use Libs\Logger;
-use Libs\ResponseLib;
+use Libs\Payload;
 use Models\PersonasModel;
 use Models\UserModel;
 use Psr\Http\Message\ServerRequestInterface;
@@ -24,21 +24,21 @@ class PersonasOverviewController
         $userId = (int) ($request->getAttribute('user_id') ?? 0);
 
         if ($userId <= 0) {
-            return ResponseLib::sendFail('Unauthorized: Missing authenticated user', [], 'E_VALIDATE')->withStatus(401);
+            return Payload::fail('Unauthorized: Missing authenticated user', [], 'E_VALIDATE', 401);
         }
 
         try {
             $companyId = $this->userModel->getCompanyIdByUserId($userId);
             if ($companyId === null) {
-                return ResponseLib::sendFail('User not found', [], 'E_NOT_FOUND')->withStatus(404);
+                return Payload::fail('User not found', [], 'E_NOT_FOUND', 404);
             }
 
-            return ResponseLib::sendOk(
+            return Payload::ok(
                 $this->personasModel->getOverviewData($companyId, $request->getQueryParams())
             );
         } catch (\Throwable $e) {
             Logger::error('Failed to load personas overview', ['error' => $e->getMessage()]);
-            return ResponseLib::sendFail('Failed to load personas overview', [], 'E_GENERIC')->withStatus(500);
+            return Payload::fail('Failed to load personas overview', [], 'E_GENERIC', 500);
         }
     }
 }

+ 7 - 7
controllers/RegisterController.php

@@ -3,7 +3,7 @@
 namespace Controllers;
 
 use Libs\Logger;
-use Libs\ResponseLib;
+use Libs\Payload;
 use Libs\Validator;
 use Models\UserModel;
 use Psr\Http\Message\ServerRequestInterface;
@@ -23,7 +23,7 @@ class RegisterController
         // Isso impede que alguém se registre sob uma empresa arbitrária.
         $userId = (int) ($request->getAttribute('user_id') ?? 0);
         if ($userId <= 0) {
-            return ResponseLib::sendFail("Unauthorized: Missing authenticated user", [], "E_VALIDATE")->withStatus(401);
+            return Payload::fail('Unauthorized: Missing authenticated user', [], 'E_VALIDATE', 401);
         }
 
         $body = json_decode((string) $request->getBody(), true) ?: [];
@@ -48,25 +48,25 @@ class RegisterController
             ->required('password')->minLength('password', 8)->maxLength('password', 255);
 
         if ($validator->fails()) {
-            return ResponseLib::sendFail($validator->firstError(), [], "E_VALIDATE")->withStatus(400);
+            return Payload::fail($validator->firstError(), [], 'E_VALIDATE', 400);
         }
 
         try {
             $companyId = $this->userModel->getCompanyIdByUserId($userId);
             if ($companyId === null) {
-                return ResponseLib::sendFail("User not found", [], "E_NOT_FOUND")->withStatus(404);
+                return Payload::fail('User not found', [], 'E_NOT_FOUND', 404);
             }
 
             $userData = $this->userModel->createUser($companyId, $email, $password, $phone, $role, $name);
 
             if (!$userData) {
-                return ResponseLib::sendFail("Email already exists or creation failed", [], "E_VALIDATE")->withStatus(400);
+                return Payload::fail('Email already exists or creation failed', [], 'E_VALIDATE', 400);
             }
 
-            return ResponseLib::sendOk($userData, "S_CREATED", "User created.");
+            return Payload::ok($userData, 'S_CREATED', 'User created.');
         } catch (\Throwable $e) {
             Logger::error('Failed to register user', ['error' => $e->getMessage()]);
-            return ResponseLib::sendFail("Failed to register user", [], "E_GENERIC")->withStatus(500);
+            return Payload::fail('Failed to register user', [], 'E_GENERIC', 500);
         }
     }
 }

+ 10 - 0
libs/Payload.php

@@ -45,4 +45,14 @@ final class Payload
     {
         return Response::json(self::build($status, $code, $message, $data))->withStatus($httpStatus);
     }
+
+    public static function ok($data = [], string $code = 'S_OK', string $message = 'Request ok.'): Response
+    {
+        return self::json('ok', $code, $message, $data);
+    }
+
+    public static function fail(string $message, $data = [], string $code = 'E_GENERIC', int $httpStatus = 400): Response
+    {
+        return self::json('failed', $code, $message, $data, $httpStatus);
+    }
 }

+ 0 - 24
libs/ResponseLib.php

@@ -1,24 +0,0 @@
-<?php
-
-namespace Libs;
-
-use React\Http\Message\Response;
-
-/**
- * Wrapper de conveniência para respostas da API.
- *
- * Delega a montagem do envelope para Libs\Payload, garantindo que toda
- * resposta siga o formato padrão (status / code / message / data).
- */
-class ResponseLib
-{
-    public static function sendOk($data = [], $code = "S_OK", $message = "Request ok.")
-    {
-        return Payload::json('ok', $code, $message, $data);
-    }
-
-    public static function sendFail($message, $data = [], $code = "E_GENERIC")
-    {
-        return Payload::json('failed', $code, $message, $data);
-    }
-}

+ 1 - 1
libs/Validator.php

@@ -13,7 +13,7 @@ namespace Libs;
  *       ->required('password')->minLength('password', 8);
  *
  *   if ($validator->fails()) {
- *       return ResponseLib::sendFail($validator->firstError(), [], 'E_VALIDATE')->withStatus(400);
+ *       return Payload::fail($validator->firstError(), [], 'E_VALIDATE', 400);
  *   }
  *
  * Regras só são aplicadas se o campo não já tiver acumulado erro, evitando

+ 6 - 6
middlewares/JwtAuthMiddleware.php

@@ -6,7 +6,7 @@ use Firebase\JWT\JWT;
 use Firebase\JWT\Key;
 use Libs\Database;
 use Libs\Logger;
-use Libs\ResponseLib;
+use Libs\Payload;
 use Psr\Http\Message\ServerRequestInterface;
 
 class JwtAuthMiddleware
@@ -24,12 +24,12 @@ class JwtAuthMiddleware
         if ($this->jwtSecret === '') {
             // Configuração ausente é erro de servidor, não de autenticação.
             Logger::error('JWT_SECRET is not configured; rejecting authenticated request');
-            return ResponseLib::sendFail("Internal server error", [], "E_GENERIC")->withStatus(500);
+            return Payload::fail('Internal server error', [], 'E_GENERIC', 500);
         }
 
         $authHeader = $request->getHeaderLine('Authorization');
         if (empty($authHeader) || !preg_match('/Bearer\s+(.*)/', $authHeader, $matches)) {
-            return ResponseLib::sendFail("Unauthorized", [], "E_VALIDATE")->withStatus(401);
+            return Payload::fail('Unauthorized', [], 'E_VALIDATE', 401);
         }
 
         $token = $matches[1];
@@ -40,7 +40,7 @@ class JwtAuthMiddleware
             $userEmail = $decoded->email ?? $decoded->username ?? null;
 
             if (empty($userId) || empty($userEmail)) {
-                return ResponseLib::sendFail("Unauthorized", [], "E_VALIDATE")->withStatus(401);
+                return Payload::fail('Unauthorized', [], 'E_VALIDATE', 401);
             }
 
             $pdo = Database::pdo();
@@ -50,7 +50,7 @@ class JwtAuthMiddleware
             $user = $stmt->fetch(\PDO::FETCH_ASSOC);
 
             if (!$user) {
-                return ResponseLib::sendFail("Unauthorized", [], "E_VALIDATE")->withStatus(401);
+                return Payload::fail('Unauthorized', [], 'E_VALIDATE', 401);
             }
 
             $request = $request
@@ -64,7 +64,7 @@ class JwtAuthMiddleware
         } catch (\Exception $e) {
             // Detalhe do erro vai só para o log; cliente recebe mensagem genérica.
             Logger::warning('JWT authentication failed', ['error' => $e->getMessage()]);
-            return ResponseLib::sendFail("Unauthorized", [], "E_VALIDATE")->withStatus(401);
+            return Payload::fail('Unauthorized', [], 'E_VALIDATE', 401);
         }
     }
 }