/**
  * @param Category $category
  *
  * @return Carbon|null
  */
 public function getLatestActivity(Category $category)
 {
     $latest = $category->transactionjournals()->orderBy('transaction_journals.date', 'DESC')->orderBy('transaction_journals.order', 'ASC')->orderBy('transaction_journals.id', 'DESC')->first();
     if ($latest) {
         return $latest->date;
     }
     return null;
 }
 /**
  * Calculate how much is earned in this period.
  *
  * @param Category   $category
  * @param Collection $accounts
  * @param Carbon     $start
  * @param Carbon     $end
  *
  * @return string
  */
 public function earnedInPeriodForAccounts(Category $category, Collection $accounts, Carbon $start, Carbon $end)
 {
     $accountIds = [];
     foreach ($accounts as $account) {
         $accountIds[] = $account->id;
     }
     $sum = $category->transactionjournals()->leftJoin('transactions', 'transactions.transaction_journal_id', '=', 'transaction_journals.id')->before($end)->whereIn('transactions.account_id', $accountIds)->transactionTypes([TransactionType::DEPOSIT])->after($start)->get(['transaction_journals.*'])->sum('amount');
     return $sum;
 }
 /**
  *
  * Corrected for tags.
  *
  * @param Category $category
  * @param Carbon   $date
  *
  * @return float
  */
 public function earnedOnDaySumCorrected(Category $category, Carbon $date)
 {
     return $category->transactionjournals()->transactionTypes(['Deposit'])->onDate($date)->get(['transaction_journals.*'])->sum('amount');
 }
 /**
  * Corrected for tags
  *
  * @param Category $category
  * @param Carbon   $date
  *
  * @return string
  */
 public function spentOnDaySumCorrected(Category $category, Carbon $date)
 {
     return $category->transactionjournals()->onDate($date)->get(['transaction_journals.*'])->sum('correct_amount');
 }