/** * @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'); }