userModel = new UserModel(); $this->interactionDetailsModel = new InteractionDetailsModel(); } public function __invoke(ServerRequestInterface $request) { $userId = (int) ($request->getAttribute('user_id') ?? 0); $conversationId = (int) (($request->getQueryParams()['conversation_id'] ?? 0)); if ($userId <= 0) { return ResponseLib::sendFail('Unauthorized: Missing authenticated user', [], 'E_VALIDATE')->withStatus(401); } if ($conversationId <= 0) { return ResponseLib::sendFail('Missing or invalid conversation_id', [], 'E_VALIDATE')->withStatus(400); } try { $companyId = $this->userModel->getCompanyIdByUserId($userId); if ($companyId === null) { return ResponseLib::sendFail('User not found', [], 'E_NOT_FOUND')->withStatus(404); } $data = $this->interactionDetailsModel->getInteractionDetails($companyId, $conversationId); if ($data === null) { return ResponseLib::sendFail('Conversation not found', [], 'E_NOT_FOUND')->withStatus(404); } return ResponseLib::sendOk($data); } catch (\Throwable $e) { return ResponseLib::sendFail('Failed to load interaction details', [], 'E_GENERIC')->withStatus(500); } } }