New code.

This commit is contained in:
James Cole
2015-02-22 15:40:13 +01:00
parent 182fe170fd
commit fcbe10f5ec
26 changed files with 708 additions and 180 deletions

View File

@@ -6,6 +6,7 @@ use Carbon\Carbon;
use FireflyIII\Models\Budget;
use FireflyIII\Models\BudgetLimit;
use FireflyIII\Models\LimitRepetition;
use Illuminate\Pagination\LengthAwarePaginator;
/**
* Class BudgetRepository
@@ -15,6 +16,51 @@ use FireflyIII\Models\LimitRepetition;
class BudgetRepository implements BudgetRepositoryInterface
{
/**
* @param Budget $budget
*
* @return boolean
*/
public function destroy(Budget $budget)
{
$budget->delete();
return true;
}
/**
* Returns all the transaction journals for a limit, possibly limited by a limit repetition.
*
* @param Budget $budget
* @param LimitRepetition $repetition
* @param int $take
*
* @return \Illuminate\Pagination\Paginator
*/
public function getJournals(Budget $budget, LimitRepetition $repetition = null, $take = 50)
{
$offset = intval(\Input::get('page')) > 0 ? intval(\Input::get('page')) * $take : 0;
$setQuery = $budget->transactionJournals()->withRelevantData()->take($take)->offset($offset)->orderBy('date', 'DESC');
$countQuery = $budget->transactionJournals();
if (!is_null($repetition->id)) {
$setQuery->after($repetition->startdate)->before($repetition->enddate);
$countQuery->after($repetition->startdate)->before($repetition->enddate);
}
$set = $setQuery->get(['transaction_journals.*']);
$count = $countQuery->count();
$items = [];
foreach ($set as $entry) {
$items[] = $entry;
}
return new LengthAwarePaginator($items, $count, $take, $offset);
}
/**
* @param Budget $budget
* @param Carbon $date
@@ -31,6 +77,39 @@ class BudgetRepository implements BudgetRepositoryInterface
return $sum;
}
/**
* @param array $data
*
* @return Budget
*/
public function store(array $data)
{
$newBudget = new Budget(
[
'user_id' => $data['user'],
'name' => $data['name'],
]
);
$newBudget->save();
return $newBudget;
}
/**
* @param Budget $budget
* @param array $data
*
* @return Budget
*/
public function update(Budget $budget, array $data)
{
// update the account:
$budget->name = $data['name'];
$budget->save();
return $budget;
}
/**
* @param Budget $budget
* @param Carbon $date
@@ -59,6 +138,7 @@ class BudgetRepository implements BudgetRepositoryInterface
$limit->delete();
}
}
return $limit;

View File

@@ -2,6 +2,7 @@
namespace FireflyIII\Repositories\Budget;
use FireflyIII\Models\Budget;
use FireflyIII\Models\LimitRepetition;
use Carbon\Carbon;
/**
* Interface BudgetRepositoryInterface
@@ -10,6 +11,12 @@ use Carbon\Carbon;
*/
interface BudgetRepositoryInterface
{
/**
* @param Budget $budget
*
* @return boolean
*/
public function destroy(Budget $budget);
/**
* @param Budget $budget
@@ -28,4 +35,30 @@ interface BudgetRepositoryInterface
*/
public function updateLimitAmount(Budget $budget, Carbon $date, $amount);
/**
* @param array $data
*
* @return Budget
*/
public function store(array $data);
/**
* @param Budget $budget
* @param array $data
*
* @return Budget
*/
public function update(Budget $budget, array $data);
/**
* Returns all the transaction journals for a limit, possibly limited by a limit repetition.
*
* @param Budget $budget
* @param LimitRepetition $repetition
* @param int $take
*
* @return \Illuminate\Pagination\Paginator
*/
public function getJournals(Budget $budget, LimitRepetition $repetition = null, $take = 50);
}