/**
  * Function: subscribeUserToConversation
  *
  * @param \AppBundle\Entity\User         $user
  * @param \AppBundle\Entity\Conversation $conversation
  *
  * @param bool                           $force
  *
  * @return \AppBundle\Entity\UserConversation|object
  * @author Stefanos Bozionelos
  */
 private function subscribeUserToConversation(User $user, Conversation $conversation, $force = false)
 {
     $em = $this->getDoctrine()->getManager();
     $userConversationRepository = $em->getRepository('AppBundle:UserConversation');
     $user_conversation = $userConversationRepository->findOneBy(array('user' => $user->getId(), 'conversation' => $conversation->getId()));
     if (isset($user_conversation)) {
         if ($conversation->getParticipants()->count() == 2 && $user_conversation->getUserId() == $user->getId() || $force) {
             $user_conversation->setRegistered(true);
             $em->persist($user_conversation);
             $em->flush();
         }
         return $user_conversation;
     }
     $user_conversation = new UserConversation();
     $user_conversation->setUser($user);
     $user_conversation->setConversation($conversation);
     $user_conversation->setRegistered(true);
     $conversation->addParticipant($user_conversation);
     $em->persist($user_conversation);
     $em->flush();
     return $user_conversation;
 }