Mar tests.

This commit is contained in:
James Cole
2015-04-05 10:36:28 +02:00
parent 6b40a933e9
commit 9e365d9f80
7 changed files with 348 additions and 45 deletions

View File

@@ -2,11 +2,13 @@
namespace FireflyIII\Repositories\Budget;
use Auth;
use Carbon\Carbon;
use FireflyIII\Models\Budget;
use FireflyIII\Models\BudgetLimit;
use FireflyIII\Models\LimitRepetition;
use Illuminate\Pagination\LengthAwarePaginator;
use Illuminate\Support\Collection;
/**
* Class BudgetRepository
@@ -37,7 +39,7 @@ class BudgetRepository implements BudgetRepositoryInterface
}
// delete limits with amount 0:
BudgetLimit::where('amount',0)->delete();
BudgetLimit::where('amount', 0)->delete();
}
@@ -53,6 +55,33 @@ class BudgetRepository implements BudgetRepositoryInterface
return true;
}
/**
* @return Collection
*/
public function getActiveBudgets()
{
return Auth::user()->budgets()->where('active', 1)->get();
}
/**
* @param Budget $budget
* @param Carbon $date
*
* @return LimitRepetition|null
*/
public function getCurrentRepetition(Budget $budget, Carbon $date)
{
return $budget->limitrepetitions()->where('limit_repetitions.startdate', $date)->first(['limit_repetitions.*']);
}
/**
* @return Collection
*/
public function getInactiveBudgets()
{
return Auth::user()->budgets()->where('active', 1)->get();
}
/**
* Returns all the transaction journals for a limit, possibly limited by a limit repetition.
*
@@ -86,6 +115,26 @@ class BudgetRepository implements BudgetRepositoryInterface
return new LengthAwarePaginator($set, $count, $take, $offset);
}
/**
* @param Carbon $start
* @param Carbon $end
*
* @return Collection
*/
public function getWithoutBudget(Carbon $start, Carbon $end)
{
return Auth::user()
->transactionjournals()
->leftJoin('budget_transaction_journal', 'budget_transaction_journal.transaction_journal_id', '=', 'transaction_journals.id')
->whereNull('budget_transaction_journal.id')
->before($end)
->after($start)
->orderBy('transaction_journals.date', 'DESC')
->orderBy('transaction_journals.order', 'ASC')
->orderBy('transaction_journals.id', 'DESC')
->get(['transaction_journals.*']);
}
/**
* @param Budget $budget
* @param Carbon $date
@@ -175,4 +224,14 @@ class BudgetRepository implements BudgetRepositoryInterface
}
/**
* @param Budget $budget
*
* @return Collection
*/
public function getBudgetLimits(Budget $budget)
{
return $budget->budgetLimits()->orderBy('startdate', 'DESC')->get();
}
}

View File

@@ -5,6 +5,7 @@ namespace FireflyIII\Repositories\Budget;
use Carbon\Carbon;
use FireflyIII\Models\Budget;
use FireflyIII\Models\LimitRepetition;
use Illuminate\Support\Collection;
/**
* Interface BudgetRepositoryInterface
@@ -20,6 +21,16 @@ interface BudgetRepositoryInterface
*/
public function destroy(Budget $budget);
/**
* @return Collection
*/
public function getActiveBudgets();
/**
* @return Collection
*/
public function getInactiveBudgets();
/**
* @return void
*/
@@ -33,6 +44,29 @@ interface BudgetRepositoryInterface
*/
public function spentInMonth(Budget $budget, Carbon $date);
/**
* @param Carbon $start
* @param Carbon $end
*
* @return Collection
*/
public function getWithoutBudget(Carbon $start, Carbon $end);
/**
* @param Budget $budget
*
* @return Collection
*/
public function getBudgetLimits(Budget $budget);
/**
* @param Budget $budget
* @param Carbon $date
*
* @return LimitRepetition|null
*/
public function getCurrentRepetition(Budget $budget, Carbon $date);
/**
* @param Budget $budget
* @param Carbon $date