private function updateMessageReceived(Message $message, User $receiver) { $em = $this->getDoctrine()->getManager(); $userMessageRepository = $em->getRepository('AppBundle:UserMessage'); $userMessage = $userMessageRepository->findOneBy(array('receiver' => $receiver->getId(), 'message' => $message->getId())); if (isset($userMessage)) { $unreceivedMessageId = -1; if ($userMessage->getDeliveredTimestamp() == null) { $userMessage->setDeliveredTimestamp((new DateTime())->setTimezone(new \DateTimeZone('UTC'))); $unreceivedMessageId = $userMessage->getMessage()->getId(); } if ($message->getSenderId() == $receiver->getId()) { $userMessage->setReadByReceiver(true); if ($userMessage->getReadTimestamp() == null) { $userMessage->setReadTimestamp((new DateTime())->setTimezone(new \DateTimeZone('UTC'))); } } $em->persist($userMessage); $em->flush(); return $unreceivedMessageId; } return -1; }