public function run(ServerRequestInterface $request, ResponseBuilder $responseBuilder) : ResponseInterface
 {
     $bodyJson = json_decode($request->getBody()->getContents(), true);
     $seek = new Seek(MessageRepository::MAX_MESSAGES_LIMIT, $bodyJson['offset'], $bodyJson['limit']);
     $sourceProfile = $this->currentAccountService->getCurrentAccount()->getCurrentProfile();
     $targetProfileId = $request->getAttribute('profileId');
     try {
         $targetProfile = $this->profileService->getProfileById($targetProfileId);
         $messages = $this->messageService->getMessagesToProfile($sourceProfile, $targetProfile, $seek);
         return $responseBuilder->setStatusSuccess()->setJson(['success' => true, 'total' => count($messages), 'entities' => array_map(function (Message $message) {
             return $message->toJSON();
         }, $messages)])->build();
     } catch (ProfileNotFoundException $e) {
         return $responseBuilder->setStatusNotFound()->setError($e->getMessage())->setJson(['success' => false])->build();
     } catch (\Exception $e) {
         return $responseBuilder->setStatusInternalError()->setError($e->getMessage())->setJson(['success' => false])->build();
     }
 }
 public function run(ServerRequestInterface $request, ResponseBuilder $responseBuilder) : ResponseInterface
 {
     $body = json_decode($request->getBody()->getContents(), true);
     $content = $body['content'];
     $sourceProfile = $this->currentAccountService->getCurrentAccount()->getCurrentProfile();
     $roomId = $request->getAttribute('roomId');
     try {
         $message = new Message();
         $message->setSourceType(Message::SOURCE_TYPE_PROFILE)->setSourceId($sourceProfile->getId())->setTargetType(Message::TARGET_TYPE_ROOM)->setTargetId($roomId)->setContent($content);
         $message2 = $this->messageService->createMessage($message);
         if ($message) {
             return $responseBuilder->setStatusSuccess()->setJson(['success' => true, 'entity' => $message2->toJSON()])->build();
         }
     } catch (ProfileNotFoundException $e) {
         return $responseBuilder->setStatusNotFound()->setError($e->getMessage())->setJson(['success' => false])->build();
     } catch (\Exception $e) {
         return $responseBuilder->setStatusInternalError()->setError($e)->setJson(['success' => false])->build();
     }
 }