userModel = new UserModel(); $this->agentsModel = new AgentsModel(); } public function __invoke(ServerRequestInterface $request) { $userId = (int) ($request->getAttribute('user_id') ?? 0); $body = json_decode((string) $request->getBody(), true) ?: []; $agentId = (int) ($body['id'] ?? 0); if ($userId <= 0) { return Payload::fail('Unauthorized: Missing authenticated user', [], 'E_VALIDATE', 401); } if ($agentId <= 0) { return Payload::fail('Missing or invalid id', [], 'E_VALIDATE', 400); } try { $companyId = $this->userModel->getCompanyIdByUserId($userId); if ($companyId === null) { return Payload::fail('User not found', [], 'E_NOT_FOUND', 404); } $agent = $this->agentsModel->toggleAgentStatus($companyId, $agentId); if ($agent === null) { return Payload::fail('Agent not found', [], 'E_NOT_FOUND', 404); } return Payload::ok($agent); } catch (\Throwable $e) { Logger::error('Failed to update agent status', ['error' => $e->getMessage()]); return Payload::fail('Failed to update agent status', [], 'E_GENERIC', 500); } } }