. */ declare(strict_types=1); namespace FireflyIII\Repositories\Rule; use FireflyIII\Enums\UserRoleEnum; use FireflyIII\Models\Rule; use FireflyIII\Models\RuleAction; use FireflyIII\Models\RuleGroup; use FireflyIII\Models\RuleTrigger; use FireflyIII\Models\UserGroup; use FireflyIII\User; use Illuminate\Contracts\Auth\Authenticatable; use Illuminate\Support\Collection; /** * Interface RuleRepositoryInterface. * * @method setUserGroup(UserGroup $group) * @method getUserGroup() * @method getUser() * @method checkUserGroupAccess(UserRoleEnum $role) * @method setUser(null|Authenticatable|User $user) * @method setUserGroupById(int $userGroupId) */ interface RuleRepositoryInterface { public function count(): int; public function destroy(Rule $rule): bool; public function duplicate(Rule $rule): Rule; public function find(int $ruleId): ?Rule; /** * Get all the users rules. */ public function getAll(): Collection; public function getFirstRuleGroup(): RuleGroup; public function getHighestOrderInRuleGroup(RuleGroup $ruleGroup): int; public function getPrimaryTrigger(Rule $rule): string; public function getRuleActions(Rule $rule): Collection; public function getRuleTriggers(Rule $rule): Collection; /** * Return search query for rule. */ public function getSearchQuery(Rule $rule): string; /** * Get all the users rules that trigger on storage. */ public function getStoreRules(): Collection; /** * Get all the users rules that trigger on update. */ public function getUpdateRules(): Collection; public function maxOrder(RuleGroup $ruleGroup): int; public function moveRule(Rule $rule, RuleGroup $ruleGroup, int $order): Rule; public function resetRuleOrder(RuleGroup $ruleGroup): bool; public function searchRule(string $query, int $limit): Collection; public function setOrder(Rule $rule, int $newOrder): void; public function store(array $data): Rule; public function storeAction(Rule $rule, array $values): RuleAction; public function storeTrigger(Rule $rule, array $values): RuleTrigger; public function update(Rule $rule, array $data): Rule; }