Show bill average.

This commit is contained in:
James Cole
2016-07-05 08:57:45 +02:00
parent e8e7ab01d2
commit f1e8d1cf1e
5 changed files with 83 additions and 4 deletions

View File

@@ -557,4 +557,52 @@ class BillRepository implements BillRepositoryInterface
return $wordMatch;
}
/**
* @param Bill $bill
* @param Carbon $date
*
* @return string
*/
public function getYearAverage(Bill $bill, Carbon $date): string
{
$journals = $bill->transactionjournals()
->where('date', '>=', $date->year . '-01-01')
->where('date', '<=', $date->year . '-12-31')
->get();
$sum = '0';
$count = strval($journals->count());
/** @var TransactionJournal $journal */
foreach ($journals as $journal) {
$sum = bcadd($sum, TransactionJournal::amountPositive($journal));
}
$avg = '0';
if ($journals->count() > 0) {
$avg = bcdiv($sum, $count);
}
return $avg;
}
/**
* @param $bill
*
* @return string
*/
public function getOverallAverage($bill): string
{
$journals = $bill->transactionjournals()->get();
$sum = '0';
$count = strval($journals->count());
/** @var TransactionJournal $journal */
foreach ($journals as $journal) {
$sum = bcadd($sum, TransactionJournal::amountPositive($journal));
}
$avg = '0';
if ($journals->count() > 0) {
$avg = bcdiv($sum, $count);
}
return $avg;
}
}

View File

@@ -32,6 +32,21 @@ interface BillRepositoryInterface
*/
public function destroy(Bill $bill): bool;
/**
* @param Bill $bill
* @param Carbon $date
*
* @return string
*/
public function getYearAverage(Bill $bill, Carbon $date): string;
/**
* @param $bill
*
* @return string
*/
public function getOverallAverage($bill): string;
/**
* Find a bill by ID.
*