Example #1
0
 public static function ofProject(Project $project, $time = null, $direction = self::BEFORE)
 {
     $activities = self::feed($project->activities(), $time, $direction, 8);
     $comments = self::feed($project->comments(), $time, $direction, 8);
     if ($activities->count() && $comments->count()) {
         $last_activity = $activities->last()->created_at;
         $last_comment = $comments->last()->created_at;
         $condition = $direction == self::BEFORE ? $last_activity > $last_comment : $last_activity < $last_comment;
         $interval = [$last_comment, $last_activity];
         if ($direction != self::BEFORE) {
             $interval = array_reverse($interval);
         }
         if ($condition) {
             $activities = $activities->merge($project->activities()->whereBetween('created_at', $interval)->get());
         } else {
             $comments = $comments->merge($project->comments()->whereBetween('created_at', array_reverse($interval))->get());
         }
     }
     $feed = (new Collection($activities))->merge($comments);
     $feed = $feed->sort(function ($a, $b) {
         return $a->created_at < $b->created_at;
     });
     return $feed;
 }