Add two methods that have a different way of collecting information #524

This commit is contained in:
James Cole 2017-01-05 08:33:04 +01:00
parent dbebfe7c07
commit b9599d3aa1
No known key found for this signature in database
GPG Key ID: C16961E655E74B5E
2 changed files with 66 additions and 0 deletions

View File

@ -414,6 +414,25 @@ class CategoryRepository implements CategoryRepositoryInterface
return $sum;
}
/**
* @param Collection $categories
* @param Collection $accounts
* @param Carbon $start
* @param Carbon $end
*
* @return string
*/
public function spentInPeriodCollector(Collection $categories, Collection $accounts, Carbon $start, Carbon $end): string
{
/** @var JournalCollectorInterface $collector */
$collector = app(JournalCollectorInterface::class, [$this->user]);
$collector->setRange($start, $end)->setTypes([TransactionType::WITHDRAWAL])->setAccounts($accounts)->setCategories($categories);
$set = $collector->getJournals();
$sum = strval($set->sum('transaction_amount'));
return $sum;
}
/**
* @param Collection $accounts
* @param Carbon $start
@ -429,6 +448,34 @@ class CategoryRepository implements CategoryRepositoryInterface
return $sum;
}
/**
* @param Collection $accounts
* @param Carbon $start
* @param Carbon $end
*
* @return string
*/
public function spentInPeriodWithoutCategoryCollector(Collection $accounts, Carbon $start, Carbon $end): string
{
/** @var JournalCollectorInterface $collector */
$collector = app(JournalCollectorInterface::class, [$this->user]);
$collector->setRange($start, $end)->setAccounts($accounts)->setTypes([TransactionType::WITHDRAWAL])->withoutCategory();
$set = $collector->getJournals();
$set = $set->filter(
function (Transaction $transaction) {
if (bccomp($transaction->transaction_amount, '0') === -1) {
return $transaction;
}
return null;
}
);
$sum = strval($set->sum('transaction_amount'));
return $sum;
}
/**
* @param array $data
*

View File

@ -140,6 +140,16 @@ interface CategoryRepositoryInterface
*/
public function spentInPeriod(Collection $categories, Collection $accounts, Carbon $start, Carbon $end): string;
/**
* @param Collection $categories
* @param Collection $accounts
* @param Carbon $start
* @param Carbon $end
*
* @return string
*/
public function spentInPeriodCollector(Collection $categories, Collection $accounts, Carbon $start, Carbon $end): string;
/**
* @param Collection $accounts
* @param Carbon $start
@ -149,6 +159,15 @@ interface CategoryRepositoryInterface
*/
public function spentInPeriodWithoutCategory(Collection $accounts, Carbon $start, Carbon $end): string;
/**
* @param Collection $accounts
* @param Carbon $start
* @param Carbon $end
*
* @return string
*/
public function spentInPeriodWithoutCategoryCollector(Collection $accounts, Carbon $start, Carbon $end): string;
/**
* @param array $data
*