Simplified some methods.

This commit is contained in:
James Cole
2016-01-22 07:35:28 +01:00
parent 8743b49a17
commit 59fff8928b
2 changed files with 116 additions and 80 deletions

View File

@@ -41,16 +41,6 @@ class RuleRepository implements RuleRepositoryInterface
return true; return true;
} }
/**
* @param RuleGroup $ruleGroup
*
* @return int
*/
public function getHighestOrderInRuleGroup(RuleGroup $ruleGroup)
{
return intval($ruleGroup->rules()->max('order'));
}
/** /**
* @param Rule $rule * @param Rule $rule
* *
@@ -73,6 +63,31 @@ class RuleRepository implements RuleRepositoryInterface
$this->resetRulesInGroupOrder($rule->ruleGroup); $this->resetRulesInGroupOrder($rule->ruleGroup);
} }
/**
* @param RuleGroup $ruleGroup
*
* @return bool
*/
public function resetRulesInGroupOrder(RuleGroup $ruleGroup)
{
$ruleGroup->rules()->whereNotNull('deleted_at')->update(['order' => 0]);
$set = $ruleGroup->rules()
->orderBy('order', 'ASC')
->orderBy('updated_at', 'DESC')
->get();
$count = 1;
/** @var Rule $entry */
foreach ($set as $entry) {
$entry->order = $count;
$entry->save();
$count++;
}
return true;
}
/** /**
* @param Rule $rule * @param Rule $rule
* *
@@ -138,31 +153,6 @@ class RuleRepository implements RuleRepositoryInterface
return true; return true;
} }
/**
* @param RuleGroup $ruleGroup
*
* @return bool
*/
public function resetRulesInGroupOrder(RuleGroup $ruleGroup)
{
$ruleGroup->rules()->whereNotNull('deleted_at')->update(['order' => 0]);
$set = $ruleGroup->rules()
->orderBy('order', 'ASC')
->orderBy('updated_at', 'DESC')
->get();
$count = 1;
/** @var Rule $entry */
foreach ($set as $entry) {
$entry->order = $count;
$entry->save();
$count++;
}
return true;
}
/** /**
* @param array $data * @param array $data
* *
@@ -192,10 +182,26 @@ class RuleRepository implements RuleRepositoryInterface
// start storing triggers: // start storing triggers:
$order = 1; $order = 1;
$stopProcessing = false; $stopProcessing = false;
$triggerValues = [
'action' => 'user_action',
'value' => $data['trigger'],
'stopProcessing' => $stopProcessing,
'order' => $order,
];
$this->storeTrigger($rule, 'user_action', $data['trigger'], $stopProcessing, $order); $this->storeTrigger($rule, 'user_action', $data['trigger'], $stopProcessing, $order);
foreach ($data['rule-triggers'] as $index => $trigger) { foreach ($data['rule-triggers'] as $index => $trigger) {
$value = $data['rule-trigger-values'][$index]; $value = $data['rule-trigger-values'][$index];
$stopProcessing = isset($data['rule-trigger-stop'][$index]) ? true : false; $stopProcessing = isset($data['rule-trigger-stop'][$index]) ? true : false;
$triggerValues = [
'action' => $trigger,
'value' => $value,
'stopProcessing' => $stopProcessing,
'order' => $order,
];
$this->storeTrigger($rule, $trigger, $value, $stopProcessing, $order); $this->storeTrigger($rule, $trigger, $value, $stopProcessing, $order);
$order++; $order++;
} }
@@ -205,6 +211,14 @@ class RuleRepository implements RuleRepositoryInterface
foreach ($data['rule-actions'] as $index => $action) { foreach ($data['rule-actions'] as $index => $action) {
$value = $data['rule-action-values'][$index]; $value = $data['rule-action-values'][$index];
$stopProcessing = isset($data['rule-action-stop'][$index]) ? true : false; $stopProcessing = isset($data['rule-action-stop'][$index]) ? true : false;
$actionValues = [
'action' => $action,
'value' => $value,
'stopProcessing' => $stopProcessing,
'order' => $order,
];
$this->storeAction($rule, $action, $value, $stopProcessing, $order); $this->storeAction($rule, $action, $value, $stopProcessing, $order);
} }
@@ -212,52 +226,56 @@ class RuleRepository implements RuleRepositoryInterface
} }
/** /**
* @param Rule $rule * @param RuleGroup $ruleGroup
* @param string $action *
* @param string $value * @return int
* @param bool $stopProcessing */
* @param int $order public function getHighestOrderInRuleGroup(RuleGroup $ruleGroup)
{
return intval($ruleGroup->rules()->max('order'));
}
/**
* @param Rule $rule
* @param array $values
*
* @return RuleTrigger
*/
public function storeTrigger(Rule $rule, array $values)
{
$ruleTrigger = new RuleTrigger;
$ruleTrigger->rule()->associate($rule);
$ruleTrigger->order = $values['order'];
$ruleTrigger->active = 1;
$ruleTrigger->stop_processing = $values['stopProcessing'];
$ruleTrigger->trigger_type = $values['action'];
$ruleTrigger->trigger_value = $values['value'];
$ruleTrigger->save();
return $ruleTrigger;
}
/**
* @param Rule $rule
* @param array $values
* *
* @return RuleAction * @return RuleAction
*/ */
public function storeAction(Rule $rule, $action, $value, $stopProcessing, $order) public function storeAction(Rule $rule, array $values)
{ {
$ruleAction = new RuleAction; $ruleAction = new RuleAction;
$ruleAction->rule()->associate($rule); $ruleAction->rule()->associate($rule);
$ruleAction->order = $order; $ruleAction->order = $values['order'];
$ruleAction->active = 1; $ruleAction->active = 1;
$ruleAction->stop_processing = $stopProcessing; $ruleAction->stop_processing = $values['stopProcessing'];
$ruleAction->action_type = $action; $ruleAction->action_type = $values['action'];
$ruleAction->action_value = $value; $ruleAction->action_value = $values['value'];
$ruleAction->save(); $ruleAction->save();
return $ruleAction; 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 Rule $rule
* @param array $data * @param array $data
@@ -282,10 +300,26 @@ class RuleRepository implements RuleRepositoryInterface
// recreate triggers: // recreate triggers:
$order = 1; $order = 1;
$stopProcessing = false; $stopProcessing = false;
$triggerValues = [
'action' => 'user_action',
'value' => $data['trigger'],
'stopProcessing' => $stopProcessing,
'order' => $order,
];
$this->storeTrigger($rule, 'user_action', $data['trigger'], $stopProcessing, $order); $this->storeTrigger($rule, 'user_action', $data['trigger'], $stopProcessing, $order);
foreach ($data['rule-triggers'] as $index => $trigger) { foreach ($data['rule-triggers'] as $index => $trigger) {
$value = $data['rule-trigger-values'][$index]; $value = $data['rule-trigger-values'][$index];
$stopProcessing = isset($data['rule-trigger-stop'][$index]) ? true : false; $stopProcessing = isset($data['rule-trigger-stop'][$index]) ? true : false;
$triggerValues = [
'action' => $trigger,
'value' => $value,
'stopProcessing' => $stopProcessing,
'order' => $order,
];
$this->storeTrigger($rule, $trigger, $value, $stopProcessing, $order); $this->storeTrigger($rule, $trigger, $value, $stopProcessing, $order);
$order++; $order++;
} }
@@ -295,10 +329,18 @@ class RuleRepository implements RuleRepositoryInterface
foreach ($data['rule-actions'] as $index => $action) { foreach ($data['rule-actions'] as $index => $action) {
$value = $data['rule-action-values'][$index]; $value = $data['rule-action-values'][$index];
$stopProcessing = isset($data['rule-action-stop'][$index]) ? true : false; $stopProcessing = isset($data['rule-action-stop'][$index]) ? true : false;
$actionValues = [
'action' => $action,
'value' => $value,
'stopProcessing' => $stopProcessing,
'order' => $order,
];
$this->storeAction($rule, $action, $value, $stopProcessing, $order); $this->storeAction($rule, $action, $value, $stopProcessing, $order);
} }
return $rule; return $rule;
} }
} }

View File

@@ -81,25 +81,19 @@ interface RuleRepositoryInterface
/** /**
* @param Rule $rule * @param Rule $rule
* @param string $action * @param array $values
* @param string $value
* @param bool $stopProcessing
* @param int $order
* *
* @return RuleAction * @return RuleAction
*/ */
public function storeAction(Rule $rule, $action, $value, $stopProcessing, $order); public function storeAction(Rule $rule, array $values);
/** /**
* @param Rule $rule * @param Rule $rule
* @param string $action * @param array $values
* @param string $value
* @param bool $stopProcessing
* @param int $order
* *
* @return RuleTrigger * @return RuleTrigger
*/ */
public function storeTrigger(Rule $rule, $action, $value, $stopProcessing, $order); public function storeTrigger(Rule $rule, array $values);
/** /**
* @param Rule $rule * @param Rule $rule
@@ -109,4 +103,4 @@ interface RuleRepositoryInterface
*/ */
public function update(Rule $rule, array $data); public function update(Rule $rule, array $data);
} }