/**
  * @param Category   $category
  * @param Collection $accounts
  *
  * @return Carbon
  */
 public function lastUseDate(Category $category, Collection $accounts) : Carbon
 {
     $last = null;
     /** @var TransactionJournal $first */
     $lastJournalQuery = $category->transactionJournals()->orderBy('date', 'DESC');
     if ($accounts->count() > 0) {
         // filter journals:
         $ids = $accounts->pluck('id')->toArray();
         $lastJournalQuery->leftJoin('transactions as t', 't.transaction_journal_id', '=', 'transaction_journals.id');
         $lastJournalQuery->whereIn('t.account_id', $ids);
     }
     $lastJournal = $lastJournalQuery->first(['transaction_journals.*']);
     if ($lastJournal) {
         $last = $lastJournal->date;
     }
     // check transactions:
     $lastTransactionQuery = $category->transactions()->leftJoin('transaction_journals', 'transaction_journals.id', '=', 'transactions.transaction_journal_id')->orderBy('transaction_journals.date', 'DESC');
     if ($accounts->count() > 0) {
         // filter journals:
         $ids = $accounts->pluck('id')->toArray();
         $lastTransactionQuery->whereIn('transactions.account_id', $ids);
     }
     $lastTransaction = $lastTransactionQuery->first(['transaction_journals.*']);
     if (!is_null($lastTransaction) && (!is_null($last) && $lastTransaction->date < $last || is_null($last))) {
         $last = new Carbon($lastTransaction->date);
     }
     if (is_null($last)) {
         return new Carbon('1900-01-01');
     }
     return $last;
 }