Sort by alphabet.

This commit is contained in:
James Cole
2016-01-20 15:23:36 +01:00
parent c84f4e2bc0
commit c9e4a09da6
11 changed files with 713 additions and 720 deletions

View File

@@ -23,6 +23,99 @@ use FireflyIII\Models\RuleTrigger;
class RuleRepository implements RuleRepositoryInterface
{
/**
* @param Rule $rule
*
* @return bool
*/
public function destroy(Rule $rule)
{
foreach ($rule->ruleTriggers as $trigger) {
$trigger->delete();
}
foreach ($rule->ruleActions as $action) {
$action->delete();
}
$rule->delete();
return true;
}
/**
* @param RuleGroup $ruleGroup
*
* @return int
*/
public function getHighestOrderInRuleGroup(RuleGroup $ruleGroup)
{
return intval($ruleGroup->rules()->max('order'));
}
/**
* @param Rule $rule
*
* @return bool
*/
public function moveDown(Rule $rule)
{
$order = $rule->order;
// find the rule with order+1 and give it order-1
$other = $rule->ruleGroup->rules()->where('order', ($order + 1))->first();
if ($other) {
$other->order = $other->order - 1;
$other->save();
}
$rule->order = ($rule->order + 1);
$rule->save();
$this->resetRulesInGroupOrder($rule->ruleGroup);
}
/**
* @param Rule $rule
*
* @return bool
*/
public function moveUp(Rule $rule)
{
$order = $rule->order;
// find the rule with order-1 and give it order+1
$other = $rule->ruleGroup->rules()->where('order', ($order - 1))->first();
if ($other) {
$other->order = ($other->order + 1);
$other->save();
}
$rule->order = ($rule->order - 1);
$rule->save();
$this->resetRulesInGroupOrder($rule->ruleGroup);
}
/**
* @param Rule $rule
* @param array $ids
*
* @return bool
*/
public function reorderRuleActions(Rule $rule, array $ids)
{
$order = 1;
foreach ($ids as $actionId) {
/** @var RuleTrigger $trigger */
$action = $rule->ruleActions()->find($actionId);
if (!is_null($action)) {
$action->order = $order;
$action->save();
$order++;
}
}
return true;
}
/**
* @param Rule $rule
* @param array $ids
@@ -70,73 +163,6 @@ class RuleRepository implements RuleRepositoryInterface
}
/**
* @param Rule $rule
* @param array $ids
*
* @return bool
*/
public function reorderRuleActions(Rule $rule, array $ids)
{
$order = 1;
foreach ($ids as $actionId) {
/** @var RuleTrigger $trigger */
$action = $rule->ruleActions()->find($actionId);
if (!is_null($action)) {
$action->order = $order;
$action->save();
$order++;
}
}
return true;
}
/**
* @param Rule $rule
*
* @return bool
*/
public function moveUp(Rule $rule)
{
$order = $rule->order;
// find the rule with order-1 and give it order+1
$other = $rule->ruleGroup->rules()->where('order', ($order - 1))->first();
if ($other) {
$other->order = ($other->order + 1);
$other->save();
}
$rule->order = ($rule->order - 1);
$rule->save();
$this->resetRulesInGroupOrder($rule->ruleGroup);
}
/**
* @param Rule $rule
*
* @return bool
*/
public function moveDown(Rule $rule)
{
$order = $rule->order;
// find the rule with order+1 and give it order-1
$other = $rule->ruleGroup->rules()->where('order', ($order + 1))->first();
if ($other) {
$other->order = $other->order - 1;
$other->save();
}
$rule->order = ($rule->order + 1);
$rule->save();
$this->resetRulesInGroupOrder($rule->ruleGroup);
}
/**
* @param array $data
*
@@ -185,58 +211,6 @@ class RuleRepository implements RuleRepositoryInterface
return $rule;
}
/**
* @param Rule $rule
* @param string $action
* @param string $value
* @param bool $stopProcessing
* @param int $order
*
* @return RuleTrigger
*/
public function storeTrigger(Rule $rule, $action, $value, $stopProcessing, $order)
{
$ruleTrigger = new RuleTrigger;
$ruleTrigger->rule()->associate($rule);
$ruleTrigger->order = $order;
$ruleTrigger->active = 1;
$ruleTrigger->stop_processing = $stopProcessing;
$ruleTrigger->trigger_type = $action;
$ruleTrigger->trigger_value = $value;
$ruleTrigger->save();
return $ruleTrigger;
}
/**
* @param Rule $rule
*
* @return bool
*/
public function destroy(Rule $rule)
{
foreach ($rule->ruleTriggers as $trigger) {
$trigger->delete();
}
foreach ($rule->ruleActions as $action) {
$action->delete();
}
$rule->delete();
return true;
}
/**
* @param RuleGroup $ruleGroup
*
* @return int
*/
public function getHighestOrderInRuleGroup(RuleGroup $ruleGroup)
{
return intval($ruleGroup->rules()->max('order'));
}
/**
* @param Rule $rule
* @param string $action
@@ -261,6 +235,29 @@ class RuleRepository implements RuleRepositoryInterface
return $ruleAction;
}
/**
* @param Rule $rule
* @param string $action
* @param string $value
* @param bool $stopProcessing
* @param int $order
*
* @return RuleTrigger
*/
public function storeTrigger(Rule $rule, $action, $value, $stopProcessing, $order)
{
$ruleTrigger = new RuleTrigger;
$ruleTrigger->rule()->associate($rule);
$ruleTrigger->order = $order;
$ruleTrigger->active = 1;
$ruleTrigger->stop_processing = $stopProcessing;
$ruleTrigger->trigger_type = $action;
$ruleTrigger->trigger_value = $value;
$ruleTrigger->save();
return $ruleTrigger;
}
/**
* @param Rule $rule
* @param array $data

View File

@@ -36,27 +36,11 @@ interface RuleRepositoryInterface
public function getHighestOrderInRuleGroup(RuleGroup $ruleGroup);
/**
* @param Rule $rule
* @param array $ids
* @param Rule $rule
*
* @return bool
*/
public function reorderRuleTriggers(Rule $rule, array $ids);
/**
* @param Rule $rule
* @param array $ids
*
* @return bool
*/
public function reorderRuleActions(Rule $rule, array $ids);
/**
* @param RuleGroup $ruleGroup
*
* @return bool
*/
public function resetRulesInGroupOrder(RuleGroup $ruleGroup);
public function moveDown(Rule $rule);
/**
* @param Rule $rule
@@ -67,18 +51,26 @@ interface RuleRepositoryInterface
/**
* @param Rule $rule
* @param array $data
*
* @return Rule
*/
public function update(Rule $rule, array $data);
/**
* @param Rule $rule
* @param array $ids
*
* @return bool
*/
public function moveDown(Rule $rule);
public function reorderRuleActions(Rule $rule, array $ids);
/**
* @param Rule $rule
* @param array $ids
*
* @return bool
*/
public function reorderRuleTriggers(Rule $rule, array $ids);
/**
* @param RuleGroup $ruleGroup
*
* @return bool
*/
public function resetRulesInGroupOrder(RuleGroup $ruleGroup);
/**
* @param array $data
@@ -94,9 +86,9 @@ interface RuleRepositoryInterface
* @param bool $stopProcessing
* @param int $order
*
* @return RuleTrigger
* @return RuleAction
*/
public function storeTrigger(Rule $rule, $action, $value, $stopProcessing, $order);
public function storeAction(Rule $rule, $action, $value, $stopProcessing, $order);
/**
* @param Rule $rule
@@ -105,8 +97,16 @@ interface RuleRepositoryInterface
* @param bool $stopProcessing
* @param int $order
*
* @return RuleAction
* @return RuleTrigger
*/
public function storeAction(Rule $rule, $action, $value, $stopProcessing, $order);
public function storeTrigger(Rule $rule, $action, $value, $stopProcessing, $order);
/**
* @param Rule $rule
* @param array $data
*
* @return Rule
*/
public function update(Rule $rule, array $data);
}