mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2026-01-06 14:12:15 +00:00
Offload stuff to repositories for rules and rule groups, see issue #185
This commit is contained in:
@@ -11,6 +11,7 @@ declare(strict_types = 1);
|
||||
namespace FireflyIII\Repositories\Rule;
|
||||
|
||||
use Auth;
|
||||
use FireflyIII\Exceptions\FireflyException;
|
||||
use FireflyIII\Models\Rule;
|
||||
use FireflyIII\Models\RuleAction;
|
||||
use FireflyIII\Models\RuleGroup;
|
||||
@@ -68,6 +69,22 @@ class RuleRepository implements RuleRepositoryInterface
|
||||
return intval($ruleGroup->rules()->max('order'));
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Rule $rule
|
||||
*
|
||||
* @return string
|
||||
* @throws FireflyException
|
||||
*/
|
||||
public function getPrimaryTrigger(Rule $rule): string
|
||||
{
|
||||
$count = $rule->ruleTriggers()->count();
|
||||
if ($count === 0) {
|
||||
throw new FireflyException('Rules should have more than zero triggers, rule #' . $rule->id . ' has none!');
|
||||
}
|
||||
|
||||
return $rule->ruleTriggers()->where('trigger_type', 'user_action')->first()->trigger_value;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Rule $rule
|
||||
*
|
||||
|
||||
@@ -22,6 +22,7 @@ use FireflyIII\Models\RuleTrigger;
|
||||
*/
|
||||
interface RuleRepositoryInterface
|
||||
{
|
||||
|
||||
/**
|
||||
* @return int
|
||||
*/
|
||||
@@ -46,6 +47,13 @@ interface RuleRepositoryInterface
|
||||
*/
|
||||
public function getHighestOrderInRuleGroup(RuleGroup $ruleGroup);
|
||||
|
||||
/**
|
||||
* @param Rule $rule
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getPrimaryTrigger(Rule $rule): string;
|
||||
|
||||
/**
|
||||
* @param Rule $rule
|
||||
*
|
||||
|
||||
@@ -7,6 +7,8 @@ namespace FireflyIII\Repositories\RuleGroup;
|
||||
use Auth;
|
||||
use FireflyIII\Models\Rule;
|
||||
use FireflyIII\Models\RuleGroup;
|
||||
use FireflyIII\User;
|
||||
use Illuminate\Database\Eloquent\Relations\HasMany;
|
||||
use Illuminate\Support\Collection;
|
||||
|
||||
/**
|
||||
@@ -73,6 +75,33 @@ class RuleGroupRepository implements RuleGroupRepositoryInterface
|
||||
return intval($entry);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param User $user
|
||||
*
|
||||
* @return Collection
|
||||
*/
|
||||
public function getRuleGroupsWithRules(User $user): Collection
|
||||
{
|
||||
return $user->ruleGroups()
|
||||
->orderBy('active', 'DESC')
|
||||
->orderBy('order', 'ASC')
|
||||
->with(
|
||||
[
|
||||
'rules' => function (HasMany $query) {
|
||||
$query->orderBy('active', 'DESC');
|
||||
$query->orderBy('order', 'ASC');
|
||||
|
||||
},
|
||||
'rules.ruleTriggers' => function (HasMany $query) {
|
||||
$query->orderBy('order', 'ASC');
|
||||
},
|
||||
'rules.ruleActions' => function (HasMany $query) {
|
||||
$query->orderBy('order', 'ASC');
|
||||
},
|
||||
]
|
||||
)->get();
|
||||
}
|
||||
|
||||
/**
|
||||
* @param RuleGroup $ruleGroup
|
||||
*
|
||||
@@ -203,5 +232,4 @@ class RuleGroupRepository implements RuleGroupRepositoryInterface
|
||||
|
||||
return $ruleGroup;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@ namespace FireflyIII\Repositories\RuleGroup;
|
||||
|
||||
|
||||
use FireflyIII\Models\RuleGroup;
|
||||
use FireflyIII\User;
|
||||
use Illuminate\Support\Collection;
|
||||
|
||||
/**
|
||||
@@ -14,6 +15,8 @@ use Illuminate\Support\Collection;
|
||||
*/
|
||||
interface RuleGroupRepositoryInterface
|
||||
{
|
||||
|
||||
|
||||
/**
|
||||
* @return int
|
||||
*/
|
||||
@@ -37,6 +40,13 @@ interface RuleGroupRepositoryInterface
|
||||
*/
|
||||
public function getHighestOrderRuleGroup();
|
||||
|
||||
/**
|
||||
* @param User $user
|
||||
*
|
||||
* @return Collection
|
||||
*/
|
||||
public function getRuleGroupsWithRules(User $user): Collection;
|
||||
|
||||
/**
|
||||
* @param RuleGroup $ruleGroup
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user