/**
  * @param ARI                  $repository
  * @param AccountCrudInterface $crud
  *
  * @return \Illuminate\Contracts\View\Factory|\Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector|\Illuminate\View\View
  */
 public function index(ARI $repository, AccountCrudInterface $crud)
 {
     $types = config('firefly.accountTypesByIdentifier.asset');
     $count = $repository->countAccounts($types);
     if ($count == 0) {
         return redirect(route('new-user.index'));
     }
     $title = 'Firefly';
     $subTitle = trans('firefly.welcomeBack');
     $mainTitleIcon = 'fa-fire';
     $transactions = [];
     $frontPage = Preferences::get('frontPageAccounts', $crud->getAccountsByType([AccountType::DEFAULT, AccountType::ASSET])->pluck('id')->toArray());
     /** @var Carbon $start */
     $start = session('start', Carbon::now()->startOfMonth());
     /** @var Carbon $end */
     $end = session('end', Carbon::now()->endOfMonth());
     $showTour = Preferences::get('tour', true)->data;
     $accounts = $crud->getAccountsById($frontPage->data);
     $savings = $repository->getSavingsAccounts($start, $end);
     $piggyBankAccounts = $repository->getPiggyBankAccounts($start, $end);
     $savingsTotal = '0';
     foreach ($savings as $savingAccount) {
         $savingsTotal = bcadd($savingsTotal, Steam::balance($savingAccount, $end));
     }
     foreach ($accounts as $account) {
         $set = $repository->journalsInPeriod(new Collection([$account]), [], $start, $end);
         $set = $set->splice(0, 10);
         if (count($set) > 0) {
             $transactions[] = [$set, $account];
         }
     }
     return view('index', compact('count', 'showTour', 'title', 'savings', 'subTitle', 'mainTitleIcon', 'transactions', 'savingsTotal', 'piggyBankAccounts'));
 }
 /**
  * @param ARI     $repository
  * @param Account $account
  * @param string  $date
  *
  * @return View
  */
 public function showWithDate(ARI $repository, Account $account, string $date)
 {
     $carbon = new Carbon($date);
     $range = Preferences::get('viewRange', '1M')->data;
     $start = Navigation::startOfPeriod($carbon, $range);
     $end = Navigation::endOfPeriod($carbon, $range);
     $subTitle = $account->name . ' (' . Navigation::periodShow($start, $range) . ')';
     $page = intval(Input::get('page'));
     $page = $page === 0 ? 1 : $page;
     $pageSize = Preferences::get('transactionPageSize', 50)->data;
     $offset = ($page - 1) * $pageSize;
     $set = $repository->journalsInPeriod(new Collection([$account]), [], $start, $end);
     $count = $set->count();
     $subSet = $set->splice($offset, $pageSize);
     $journals = new LengthAwarePaginator($subSet, $count, $pageSize, $page);
     $journals->setPath('accounts/show/' . $account->id . '/' . $date);
     return view('accounts.show_with_date', compact('category', 'date', 'account', 'journals', 'subTitle', 'carbon'));
 }