More CSV related updates.

This commit is contained in:
James Cole
2016-07-23 21:37:06 +02:00
parent a4a723cfc6
commit 87c0f1d86e
31 changed files with 684 additions and 263 deletions

View File

@@ -72,6 +72,27 @@ class BillRepository implements BillRepositoryInterface
return $bill;
}
/**
* Find a bill by name.
*
* @param string $name
*
* @return Bill
*/
public function findByName(string $name) : Bill
{
$bills = $this->user->bills()->get();
/** @var Bill $bill */
foreach ($bills as $bill) {
if ($bill->name === $name) {
return $bill;
}
}
return new Bill;
}
/**
* @return Collection
*/
@@ -293,6 +314,28 @@ class BillRepository implements BillRepositoryInterface
return $bill->transactionjournals()->before($end)->after($start)->get();
}
/**
* @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;
}
/**
* @param Bill $bill
*
@@ -358,6 +401,32 @@ class BillRepository implements BillRepositoryInterface
return $validRanges;
}
/**
* @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 $bill
*
@@ -557,52 +626,4 @@ 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,21 +32,6 @@ 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.
*
@@ -56,6 +41,15 @@ interface BillRepositoryInterface
*/
public function find(int $billId) : Bill;
/**
* Find a bill by name.
*
* @param string $name
*
* @return Bill
*/
public function findByName(string $name) : Bill;
/**
* @return Collection
*/
@@ -128,6 +122,13 @@ interface BillRepositoryInterface
*/
public function getJournalsInRange(Bill $bill, Carbon $start, Carbon $end): Collection;
/**
* @param $bill
*
* @return string
*/
public function getOverallAverage($bill): string;
/**
* @param Bill $bill
*
@@ -148,6 +149,14 @@ interface BillRepositoryInterface
*/
public function getRanges(Bill $bill, Carbon $start, Carbon $end): array;
/**
* @param Bill $bill
* @param Carbon $date
*
* @return string
*/
public function getYearAverage(Bill $bill, Carbon $date): string;
/**
* @param Bill $bill
*