Improve code quality in budget methods.

This commit is contained in:
James Cole
2018-07-14 16:40:46 +02:00
parent 89834baf01
commit ff403dfa2e
4 changed files with 91 additions and 94 deletions

View File

@@ -439,6 +439,37 @@ class BudgetRepository implements BudgetRepositoryInterface
return $this->user->availableBudgets()->get();
}
/**
* Calculate the average amount in the budgets available in this period.
* Grouped by day.
*
* @param Carbon $start
* @param Carbon $end
*
* @return string
*/
public function getAverageAvailable(Carbon $start, Carbon $end): string
{
/** @var Collection $list */
$list = $this->user->availableBudgets()
->where('start_date', '>=', $start->format('Y-m-d 00:00:00'))
->where('end_date', '<=', $end->format('Y-m-d 00:00:00'))
->get();
if (0 === $list->count()) {
return '0';
}
$total = '0';
$days = 0;
/** @var AvailableBudget $availableBudget */
foreach ($list as $availableBudget) {
$total = bcadd($availableBudget->amount, $total);
$days += $availableBudget->start_date->diffInDays($availableBudget->end_date);
}
$avg = bcdiv($total, (string)$days);
return $avg;
}
/**
* @param Budget $budget
* @param Carbon $start