/**
  * @VirtualProperty
  * @Groups({"Device", "Message","Conversation"})
  * @SerializedName("Participants")
  * @XmlList(inline = false, entry = "Participant")
  * @Type("ArrayCollection<AppBundle\Entity\Contracts\UserConversationUserContract>")
  *
  * @return Collection
  */
 public function getParticipants()
 {
     return parent::getParticipants();
 }
 /**
  * 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;
 }
 /**
  * @VirtualProperty
  * @Groups({"Device", "Message", "Conversation"})
  * @SerializedName("last_update")
  * @Type("DateTime<'Y-m-d\TH:i:sO'>")
  * @XmlAttribute
  * @return \DateTime
  */
 public function getLastupdate()
 {
     return parent::getLastupdate();
 }