hasMany(Goal::class); } /** * Get the User's journal entries. */ public function journalEntries(): HasMany { return $this->hasMany(JournalEntry::class); } /** * Get User's past, present, and future goals. * * @return \App\Models\Goal[] */ public function getGoalsByTime(?Carbon $date = null): array { $now = $date ?? Carbon::now(); $goals = ['past' => new Collection(), 'present' => new Collection(), 'future' => new Collection()]; Goal::all()->where('user_id', Auth::user()->id) ->each(function ($item) use(&$goals, $now) { if ($item->to && $now->isAfter($item->to)) { $goals['past'][$item->id] = $item; } elseif ($item->from && $now->isBefore($item->from)) { $goals['future'][$item->id] = $item; } elseif ( empty($item->from) || empty($item->to) || $now->isBetween($item->from, $item->to) ) { $goals['present'][$item->id] = $item; } }); return $goals; } }