Ejemplo n.º 1
0
 /**
  * {@inheritdoc}
  */
 public function getUnreadForUser(User $user)
 {
     // TODO: this is a big query, should probably be cached (at least for the request)
     /** @var Collection $conversations */
     $conversations = $this->conversationModel->join('conversation_users', function ($join) use($user) {
         $join->on('conversation_users.conversation_id', '=', 'conversations.id');
         $join->where('conversation_users.user_id', '=', $user->id);
     })->join('conversation_messages', 'conversation_messages.id', '=', 'conversations.last_message_id')->where('conversation_users.ignores', false)->orderBy('conversation_messages.created_at', 'desc')->get(['conversations.*', 'conversation_messages.created_at', 'conversation_users.last_read']);
     return $conversations->filter(function ($conversation) {
         if ($conversation->last_read == null) {
             return true;
         }
         return $conversation->created_at > $conversation->last_read;
     });
 }