. */ declare(strict_types=1); namespace FireflyIII\Support\Binder; use FireflyIII\Models\Account; use Illuminate\Routing\Route; use Illuminate\Support\Collection; use Log; use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; /** * Class AccountList. */ class AccountList implements BinderInterface { /** * @param string $value * @param Route $route * * @return Collection * @throws \Symfony\Component\HttpKernel\Exception\NotFoundHttpException */ public static function routeBinder(string $value, Route $route): Collection { if (auth()->check()) { $list = []; $incoming = explode(',', $value); foreach ($incoming as $entry) { $list[] = (int)$entry; } $list = array_unique($list); if (count($list) === 0) { Log::error('Account list is empty.'); throw new NotFoundHttpException; // @codeCoverageIgnore } /** @var \Illuminate\Support\Collection $collection */ $collection = auth()->user()->accounts() ->leftJoin('account_types', 'account_types.id', '=', 'accounts.account_type_id') ->whereIn('accounts.id', $list) ->get(['accounts.*']); if ($collection->count() > 0) { $collection = $collection->sortBy( function (Account $account) { return $account->name; } ); return $collection; } } Log::error('User is not logged in.'); throw new NotFoundHttpException; } }