. */ declare(strict_types=1); namespace FireflyIII\Http\Controllers\Rule; use FireflyIII\Http\Controllers\Controller; use FireflyIII\Models\Rule; use FireflyIII\Repositories\Rule\RuleRepositoryInterface; use Illuminate\Contracts\View\Factory; use Illuminate\Http\RedirectResponse; use Illuminate\View\View; /** * Class DeleteController */ class DeleteController extends Controller { /** @var RuleRepositoryInterface Rule repository */ private $ruleRepos; /** * RuleController constructor. * * @codeCoverageIgnore */ public function __construct() { parent::__construct(); $this->middleware( function ($request, $next) { app('view')->share('title', (string) trans('firefly.rules')); app('view')->share('mainTitleIcon', 'fa-random'); $this->ruleRepos = app(RuleRepositoryInterface::class); return $next($request); } ); } /** * Delete a given rule. * * @param Rule $rule * * @return Factory|View */ public function delete(Rule $rule) { $subTitle = (string) trans('firefly.delete_rule', ['title' => $rule->title]); // put previous url in session $this->rememberPreviousUri('rules.delete.uri'); return view('rules.rule.delete', compact('rule', 'subTitle')); } /** * Actually destroy the given rule. * * @param Rule $rule * * @return RedirectResponse */ public function destroy(Rule $rule): RedirectResponse { $title = $rule->title; $this->ruleRepos->destroy($rule); session()->flash('success', (string) trans('firefly.deleted_rule', ['title' => $title])); app('preferences')->mark(); return redirect($this->getPreviousUri('rules.delete.uri')); } }