This commit is contained in:
James Cole 2017-03-01 20:49:16 +01:00
parent d313b50e39
commit 311020ff2e
No known key found for this signature in database
GPG Key ID: C16961E655E74B5E

View File

@ -109,30 +109,28 @@ class CategoryRepository implements CategoryRepositoryInterface
*/
public function firstUseDate(Category $category): Carbon
{
$first = null;
$first = new Carbon;
/** @var TransactionJournal $firstJournal */
$firstJournal = $category->transactionJournals()->orderBy('date', 'ASC')->first(['transaction_journals.date']);
if ($firstJournal) {
// if transaction journal exists and date is before $first, then
// new date:
if (!is_null($firstJournal) && $firstJournal->date->lessThanOrEqualTo($first)) {
$first = $firstJournal->date;
}
// check transactions:
$firstTransaction = $category->transactions()
->leftJoin('transaction_journals', 'transaction_journals.id', '=', 'transactions.transaction_journal_id')
->orderBy('transaction_journals.date', 'ASC')->first(['transaction_journals.date']);
// both exist, the one that is earliest "wins".
if (!is_null($firstTransaction) && !is_null($first) && Carbon::parse($firstTransaction->date)->lt($first)) {
$first = $firstTransaction->date;
// transaction exists, and date is before $first, this date becomes first.
if (!is_null($firstTransaction) && Carbon::parse($firstTransaction->date)->lessThanOrEqualTo($first)) {
$first = new Carbon($firstTransaction->date);
}
if (is_null($first)) {
return new Carbon('1900-01-01');
}
return $first;
}