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; }
public function timesheet(Project $project) { $activities = $this->GetFeed($project->activities()->where('type', Activity::TYPE_ACTIVITY), $onlyData); return view('manage/timesheet', ['project' => $project, 'activities' => $activities, 'only_data' => $onlyData]); }