Re-order rule groups.

This commit is contained in:
James Cole 2016-01-14 09:53:59 +01:00
parent 521623797e
commit 97770da619
3 changed files with 80 additions and 2 deletions

View File

@ -184,8 +184,8 @@ class RuleController extends Controller
*/
public function index()
{
$ruleGroups = Auth::user()->ruleGroups()->with(['rules' => function($query) {
$query->orderBy('order','ASC');
$ruleGroups = Auth::user()->ruleGroups()->orderBy('order','ASC') ->with(['rules' => function ($query) {
$query->orderBy('order', 'ASC');
}])->get();
@ -219,4 +219,30 @@ class RuleController extends Controller
}
/**
* @param RuleRepositoryInterface $repository
* @param RuleGroup $ruleGroup
* @return \Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector
*/
public function upRuleGroup(RuleRepositoryInterface $repository, RuleGroup $ruleGroup)
{
$repository->moveRuleGroupUp($ruleGroup);
return redirect(route('rules.index'));
}
/**
* @param RuleRepositoryInterface $repository
* @param RuleGroup $ruleGroup
* @return \Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector
*/
public function downRuleGroup(RuleRepositoryInterface $repository, RuleGroup $ruleGroup)
{
$repository->moveRuleGroupDown($ruleGroup);
return redirect(route('rules.index'));
}
}

View File

@ -175,4 +175,44 @@ class RuleRepository implements RuleRepositoryInterface
}
}
/**
* @param RuleGroup $ruleGroup
* @return bool
*/
public function moveRuleGroupUp(RuleGroup $ruleGroup)
{
$order = $ruleGroup->order;
// find the rule with order-1 and give it order+1
$other = Auth::user()->ruleGroups()->where('order', ($order - 1))->first();
if ($other) {
$other->order = ($other->order + 1);
$other->save();
}
$ruleGroup->order = ($ruleGroup->order - 1);
$ruleGroup->save();
$this->resetRuleGroupOrder();
}
/**
* @param RuleGroup $ruleGroup
* @return bool
*/
public function moveRuleGroupDown(RuleGroup $ruleGroup)
{
$order = $ruleGroup->order;
// find the rule with order+1 and give it order-1
$other = Auth::user()->ruleGroups()->where('order', ($order + 1))->first();
if ($other) {
$other->order = ($other->order - 1);
$other->save();
}
$ruleGroup->order = ($ruleGroup->order + 1);
$ruleGroup->save();
$this->resetRuleGroupOrder();
}
}

View File

@ -70,4 +70,16 @@ interface RuleRepositoryInterface
*/
public function moveRuleDown(Rule $rule);
/**
* @param RuleGroup $ruleGroup
* @return bool
*/
public function moveRuleGroupUp(RuleGroup $ruleGroup);
/**
* @param RuleGroup $ruleGroup
* @return bool
*/
public function moveRuleGroupDown(RuleGroup $ruleGroup);
}