diff --git a/app/Http/Controllers/AttachmentController.php b/app/Http/Controllers/AttachmentController.php index c0b15fe6fb..0fc0009e0b 100644 --- a/app/Http/Controllers/AttachmentController.php +++ b/app/Http/Controllers/AttachmentController.php @@ -41,6 +41,7 @@ class AttachmentController extends Controller /** * AttachmentController constructor. + * @codeCoverageIgnore */ public function __construct() { diff --git a/app/Http/Controllers/BillController.php b/app/Http/Controllers/BillController.php index ac95d3c86e..4781aa94ae 100644 --- a/app/Http/Controllers/BillController.php +++ b/app/Http/Controllers/BillController.php @@ -55,6 +55,7 @@ class BillController extends Controller /** * BillController constructor. + * @codeCoverageIgnore */ public function __construct() { @@ -253,7 +254,7 @@ class BillController extends Controller $matcher->setTriggeredLimit(100000); // large upper limit $matcher->setRule($rule); $matchingTransactions = $matcher->findTransactionsByRule(); - $total += $matchingTransactions->count(); + $total += count($matchingTransactions); $this->billRepository->linkCollectionToBill($bill, $matchingTransactions); } @@ -314,15 +315,18 @@ class BillController extends Controller // transform any attachments as well. $collection = $this->billRepository->getAttachments($bill); $attachments = new Collection; + + // @codeCoverageIgnoreStart if ($collection->count() > 0) { /** @var AttachmentTransformer $transformer */ $transformer = app(AttachmentTransformer::class); $attachments = $collection->each( - function (Attachment $attachment) use ($transformer) { + static function (Attachment $attachment) use ($transformer) { return $transformer->transform($attachment); } ); } + // @codeCoverageIgnoreEnd return view('bills.show', compact('attachments', 'groups', 'rules', 'yearAverage', 'overallAverage', 'year', 'object', 'bill', 'subTitle')); diff --git a/app/Http/Controllers/CategoryController.php b/app/Http/Controllers/CategoryController.php deleted file mode 100644 index 50ecaa557d..0000000000 --- a/app/Http/Controllers/CategoryController.php +++ /dev/null @@ -1,65 +0,0 @@ -. - */ -declare(strict_types=1); - -namespace FireflyIII\Http\Controllers; - -use FireflyIII\Http\Requests\CategoryFormRequest; -use FireflyIII\Models\Category; -use FireflyIII\Repositories\Category\CategoryRepositoryInterface; -use Illuminate\Http\Request; -use Illuminate\Pagination\LengthAwarePaginator; -use Illuminate\Support\Collection; - -/** - * Class CategoryController. - */ -class CategoryController extends Controller -{ - /** @var CategoryRepositoryInterface The category repository */ - private $repository; - - /** - * CategoryController constructor. - */ - public function __construct() - { - parent::__construct(); - - $this->middleware( - function ($request, $next) { - app('view')->share('title', (string)trans('firefly.categories')); - app('view')->share('mainTitleIcon', 'fa-bar-chart'); - $this->repository = app(CategoryRepositoryInterface::class); - - return $next($request); - } - ); - } - - - - - - - - -} diff --git a/app/Http/Controllers/Controller.php b/app/Http/Controllers/Controller.php index 286fcec349..c5c041a3aa 100644 --- a/app/Http/Controllers/Controller.php +++ b/app/Http/Controllers/Controller.php @@ -50,6 +50,7 @@ class Controller extends BaseController /** * Controller constructor. + * @codeCoverageIgnore */ public function __construct() { diff --git a/app/Http/Controllers/CurrencyController.php b/app/Http/Controllers/CurrencyController.php index ca34315bb8..ac09787506 100644 --- a/app/Http/Controllers/CurrencyController.php +++ b/app/Http/Controllers/CurrencyController.php @@ -47,6 +47,7 @@ class CurrencyController extends Controller /** * CurrencyController constructor. + * @codeCoverageIgnore */ public function __construct() { diff --git a/app/Http/Controllers/DebugController.php b/app/Http/Controllers/DebugController.php index 09f78085fd..8de8555f3d 100644 --- a/app/Http/Controllers/DebugController.php +++ b/app/Http/Controllers/DebugController.php @@ -46,7 +46,8 @@ class DebugController extends Controller use GetConfigurationData; /** - * HomeController constructor. + * DebugController constructor. + * @codeCoverageIgnore */ public function __construct() { diff --git a/app/Http/Controllers/HomeController.php b/app/Http/Controllers/HomeController.php index 126798978a..f1618c2d49 100644 --- a/app/Http/Controllers/HomeController.php +++ b/app/Http/Controllers/HomeController.php @@ -43,6 +43,7 @@ class HomeController extends Controller { /** * HomeController constructor. + * @codeCoverageIgnore */ public function __construct() { diff --git a/app/Http/Controllers/JsonController.php b/app/Http/Controllers/Json/RuleController.php similarity index 92% rename from app/Http/Controllers/JsonController.php rename to app/Http/Controllers/Json/RuleController.php index ee325185c9..1b6ebdd80b 100644 --- a/app/Http/Controllers/JsonController.php +++ b/app/Http/Controllers/Json/RuleController.php @@ -1,7 +1,7 @@ . */ -declare(strict_types=1); -namespace FireflyIII\Http\Controllers; +namespace FireflyIII\Http\Controllers\Json; + +use FireflyIII\Http\Controllers\Controller; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; use Log; use Throwable; /** - * Class JsonController. + * Class RuleController */ -class JsonController extends Controller +class RuleController extends Controller { /** * Render HTML form for rule action. @@ -91,4 +92,5 @@ class JsonController extends Controller return response()->json(['html' => $view]); } -} + +} \ No newline at end of file diff --git a/app/Http/Controllers/PiggyBankController.php b/app/Http/Controllers/PiggyBankController.php index 6261a88888..618cd3c14e 100644 --- a/app/Http/Controllers/PiggyBankController.php +++ b/app/Http/Controllers/PiggyBankController.php @@ -56,6 +56,7 @@ class PiggyBankController extends Controller /** * PiggyBankController constructor. + * @codeCoverageIgnore */ public function __construct() { diff --git a/app/Http/Controllers/PreferencesController.php b/app/Http/Controllers/PreferencesController.php index e4238c03c0..a9e58cf476 100644 --- a/app/Http/Controllers/PreferencesController.php +++ b/app/Http/Controllers/PreferencesController.php @@ -33,6 +33,7 @@ class PreferencesController extends Controller { /** * PreferencesController constructor. + * @codeCoverageIgnore */ public function __construct() { diff --git a/app/Http/Controllers/ProfileController.php b/app/Http/Controllers/ProfileController.php index 472255734d..282e0cebd0 100644 --- a/app/Http/Controllers/ProfileController.php +++ b/app/Http/Controllers/ProfileController.php @@ -59,13 +59,14 @@ class ProfileController extends Controller /** * ProfileController constructor. + * @codeCoverageIgnore */ public function __construct() { parent::__construct(); $this->middleware( - function ($request, $next) { + static function ($request, $next) { app('view')->share('title', (string)trans('firefly.profile')); app('view')->share('mainTitleIcon', 'fa-user'); @@ -166,20 +167,20 @@ class ProfileController extends Controller /** @var Collection $set */ $set = app('preferences')->findByName('email_change_confirm_token'); $user = null; - Log::debug(sprintf('Found %d preferences', $set->count())); + //Log::debug(sprintf('Found %d preferences', $set->count())); /** @var Preference $preference */ foreach ($set as $preference) { if ($preference->data === $token) { - Log::debug('Found user'); + //Log::debug('Found user'); $user = $preference->user; } } // update user to clear blocked and blocked_code. if (null === $user) { - Log::debug('Found no user'); + //Log::debug('Found no user'); throw new FireflyException('Invalid token.'); } - Log::debug('Will unblock user.'); + //Log::debug('Will unblock user.'); $repository->unblockUser($user); // return to login. diff --git a/app/Http/Controllers/RuleGroup/CreateController.php b/app/Http/Controllers/RuleGroup/CreateController.php new file mode 100644 index 0000000000..ddf41a733e --- /dev/null +++ b/app/Http/Controllers/RuleGroup/CreateController.php @@ -0,0 +1,102 @@ +. + */ + +namespace FireflyIII\Http\Controllers\RuleGroup; + + +use FireflyIII\Http\Controllers\Controller; +use FireflyIII\Http\Requests\RuleGroupFormRequest; +use FireflyIII\Repositories\RuleGroup\RuleGroupRepositoryInterface; + +/** + * Class CreateController + */ +class CreateController extends Controller +{ + /** @var RuleGroupRepositoryInterface */ + private $repository; + + /** + * CreateController 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->repository = app(RuleGroupRepositoryInterface::class); + + return $next($request); + } + ); + } + + /** + * Create a new rule group. + * + * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View + */ + public function create() + { + $subTitleIcon = 'fa-clone'; + $subTitle = (string)trans('firefly.make_new_rule_group'); + + // put previous url in session if not redirect from store (not "create another"). + if (true !== session('rule-groups.create.fromStore')) { + $this->rememberPreviousUri('rule-groups.create.uri'); + } + session()->forget('rule-groups.create.fromStore'); + + return view('rules.rule-group.create', compact('subTitleIcon', 'subTitle')); + } + + /** + * Store the rule group. + * + * @param RuleGroupFormRequest $request + * + * @return \Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector + */ + public function store(RuleGroupFormRequest $request) + { + $data = $request->getRuleGroupData(); + $ruleGroup = $this->repository->store($data); + + session()->flash('success', (string)trans('firefly.created_new_rule_group', ['title' => $ruleGroup->title])); + app('preferences')->mark(); + + $redirect = redirect($this->getPreviousUri('rule-groups.create.uri')); + if (1 === (int)$request->get('create_another')) { + // @codeCoverageIgnoreStart + session()->put('rule-groups.create.fromStore', true); + + $redirect = redirect(route('rule-groups.create'))->withInput(); + // @codeCoverageIgnoreEnd + } + + return $redirect; + } +} \ No newline at end of file diff --git a/app/Http/Controllers/RuleGroup/DeleteController.php b/app/Http/Controllers/RuleGroup/DeleteController.php new file mode 100644 index 0000000000..1c0afeb52b --- /dev/null +++ b/app/Http/Controllers/RuleGroup/DeleteController.php @@ -0,0 +1,98 @@ +. + */ + +namespace FireflyIII\Http\Controllers\RuleGroup; + + +use FireflyIII\Http\Controllers\Controller; +use FireflyIII\Models\RuleGroup; +use FireflyIII\Repositories\RuleGroup\RuleGroupRepositoryInterface; +use Illuminate\Http\Request; + +/** + * Class DeleteController + */ +class DeleteController extends Controller +{ + /** @var RuleGroupRepositoryInterface */ + private $repository; + + /** + * DeleteController 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->repository = app(RuleGroupRepositoryInterface::class); + + return $next($request); + } + ); + } + + + /** + * Delete a rule group. + * + * @param RuleGroup $ruleGroup + * + * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View + */ + public function delete(RuleGroup $ruleGroup) + { + $subTitle = (string)trans('firefly.delete_rule_group', ['title' => $ruleGroup->title]); + + // put previous url in session + $this->rememberPreviousUri('rule-groups.delete.uri'); + + return view('rules.rule-group.delete', compact('ruleGroup', 'subTitle')); + } + + /** + * Actually destroy the rule group. + * + * @param Request $request + * @param RuleGroup $ruleGroup + * + * @return \Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector + */ + public function destroy(Request $request, RuleGroup $ruleGroup) + { + $title = $ruleGroup->title; + + /** @var RuleGroup $moveTo */ + $moveTo = $this->repository->find((int)$request->get('move_rules_before_delete')); + $this->repository->destroy($ruleGroup, $moveTo); + + session()->flash('success', (string)trans('firefly.deleted_rule_group', ['title' => $title])); + app('preferences')->mark(); + + return redirect($this->getPreviousUri('rule-groups.delete.uri')); + } + +} \ No newline at end of file diff --git a/app/Http/Controllers/RuleGroup/EditController.php b/app/Http/Controllers/RuleGroup/EditController.php new file mode 100644 index 0000000000..e6ab8aacf7 --- /dev/null +++ b/app/Http/Controllers/RuleGroup/EditController.php @@ -0,0 +1,150 @@ +. + */ + +namespace FireflyIII\Http\Controllers\RuleGroup; + +use FireflyIII\Http\Controllers\Controller; +use FireflyIII\Http\Requests\RuleGroupFormRequest; +use FireflyIII\Models\RuleGroup; +use FireflyIII\Repositories\RuleGroup\RuleGroupRepositoryInterface; +use Illuminate\Http\Request; + +/** + * Class EditController + */ +class EditController extends Controller +{ + /** @var RuleGroupRepositoryInterface */ + private $repository; + + /** + * EditController 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->repository = app(RuleGroupRepositoryInterface::class); + + return $next($request); + } + ); + } + + /** + * Move a rule group down. + * + * @param RuleGroup $ruleGroup + * + * @return \Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector + */ + public function down(RuleGroup $ruleGroup) + { + $this->repository->moveDown($ruleGroup); + + return redirect(route('rules.index')); + } + + + /** + * Edit a rule group. + * + * @param Request $request + * @param RuleGroup $ruleGroup + * + * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View + */ + public function edit(Request $request, RuleGroup $ruleGroup) + { + $subTitle = (string)trans('firefly.edit_rule_group', ['title' => $ruleGroup->title]); + + $hasOldInput = null !== $request->old('_token'); + $preFilled = [ + 'active' => $hasOldInput ? (bool)$request->old('active') : $ruleGroup->active, + ]; + + + // put previous url in session if not redirect from store (not "return_to_edit"). + if (true !== session('rule-groups.edit.fromUpdate')) { + $this->rememberPreviousUri('rule-groups.edit.uri'); + } + session()->forget('rule-groups.edit.fromUpdate'); + session()->flash('preFilled', $preFilled); + + return view('rules.rule-group.edit', compact('ruleGroup', 'subTitle')); + } + + /** + * Move the rule group up. + * + * @param RuleGroup $ruleGroup + * + * @return \Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector + * + * @SuppressWarnings(PHPMD.ShortMethodName) + */ + public function up(RuleGroup $ruleGroup) + { + $this->repository->moveUp($ruleGroup); + + return redirect(route('rules.index')); + } + + /** + * Update the rule group. + * + * @param RuleGroupFormRequest $request + * @param RuleGroup $ruleGroup + * + * @return $this|\Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector + */ + public function update(RuleGroupFormRequest $request, RuleGroup $ruleGroup) + { + $data = [ + 'title' => $request->input('title'), + 'description' => $request->input('description'), + 'active' => 1 === (int)$request->input('active'), + ]; + + $this->repository->update($ruleGroup, $data); + + session()->flash('success', (string)trans('firefly.updated_rule_group', ['title' => $ruleGroup->title])); + app('preferences')->mark(); + $redirect = redirect($this->getPreviousUri('rule-groups.edit.uri')); + if (1 === (int)$request->get('return_to_edit')) { + // @codeCoverageIgnoreStart + session()->put('rule-groups.edit.fromUpdate', true); + + $redirect = redirect(route('rule-groups.edit', [$ruleGroup->id]))->withInput(['return_to_edit' => 1]); + // @codeCoverageIgnoreEnd + } + + // redirect to previous URL. + return $redirect; + } + +} \ No newline at end of file diff --git a/app/Http/Controllers/RuleGroup/ExecutionController.php b/app/Http/Controllers/RuleGroup/ExecutionController.php new file mode 100644 index 0000000000..dc099d03e4 --- /dev/null +++ b/app/Http/Controllers/RuleGroup/ExecutionController.php @@ -0,0 +1,116 @@ +. + */ + +namespace FireflyIII\Http\Controllers\RuleGroup; + + +use Carbon\Carbon; +use FireflyIII\Http\Controllers\Controller; +use FireflyIII\Http\Requests\SelectTransactionsRequest; +use FireflyIII\Jobs\ExecuteRuleGroupOnExistingTransactions; +use FireflyIII\Models\RuleGroup; +use FireflyIII\Repositories\Account\AccountRepositoryInterface; +use FireflyIII\User; +use Illuminate\Http\RedirectResponse; + +/** + * Class ExecutionController + */ +class ExecutionController extends Controller +{ + /** @var AccountRepositoryInterface */ + private $repository; + + /** + * ExecutionController 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->repository = app(AccountRepositoryInterface::class); + + return $next($request); + } + ); + } + + + /** + * Execute the given rulegroup on a set of existing transactions. + * + * @param SelectTransactionsRequest $request + * @param RuleGroup $ruleGroup + * + * @return RedirectResponse + * @throws \Exception + */ + public function execute(SelectTransactionsRequest $request, RuleGroup $ruleGroup): RedirectResponse + { + // Get parameters specified by the user + /** @var User $user */ + $user = auth()->user(); + $accounts = $this->repository->getAccountsById($request->get('accounts')); + $startDate = new Carbon($request->get('start_date')); + $endDate = new Carbon($request->get('end_date')); + + // Create a job to do the work asynchronously + $job = new ExecuteRuleGroupOnExistingTransactions($ruleGroup); + + // Apply parameters to the job + $job->setUser($user); + $job->setAccounts($accounts); + $job->setStartDate($startDate); + $job->setEndDate($endDate); + + // Dispatch a new job to execute it in a queue + $this->dispatch($job); + + // Tell the user that the job is queued + session()->flash('success', (string)trans('firefly.applied_rule_group_selection', ['title' => $ruleGroup->title])); + + return redirect()->route('rules.index'); + } + + /** + * Select transactions to apply the group on. + * + * @param RuleGroup $ruleGroup + * + * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View + */ + public function selectTransactions(RuleGroup $ruleGroup) + { + $first = session('first')->format('Y-m-d'); + $today = Carbon::now()->format('Y-m-d'); + $subTitle = (string)trans('firefly.apply_rule_group_selection', ['title' => $ruleGroup->title]); + + return view('rules.rule-group.select-transactions', compact('first', 'today', 'ruleGroup', 'subTitle')); + } + + +} \ No newline at end of file diff --git a/app/Http/Controllers/RuleGroupController.php b/app/Http/Controllers/RuleGroupController.php deleted file mode 100644 index c57a93bd2f..0000000000 --- a/app/Http/Controllers/RuleGroupController.php +++ /dev/null @@ -1,296 +0,0 @@ -. - */ -declare(strict_types=1); - -namespace FireflyIII\Http\Controllers; - -use Carbon\Carbon; -use FireflyIII\Http\Requests\RuleGroupFormRequest; -use FireflyIII\Http\Requests\SelectTransactionsRequest; -use FireflyIII\Jobs\ExecuteRuleGroupOnExistingTransactions; -use FireflyIII\Models\RuleGroup; -use FireflyIII\Repositories\Account\AccountRepositoryInterface; -use FireflyIII\Repositories\RuleGroup\RuleGroupRepositoryInterface; -use FireflyIII\User; -use Illuminate\Http\RedirectResponse; -use Illuminate\Http\Request; - -/** - * Class RuleGroupController. - * - * @SuppressWarnings(PHPMD.TooManyPublicMethods) - */ -class RuleGroupController extends Controller -{ - /** - * RuleGroupController constructor. - */ - public function __construct() - { - parent::__construct(); - - $this->middleware( - function ($request, $next) { - app('view')->share('title', (string)trans('firefly.rules')); - app('view')->share('mainTitleIcon', 'fa-random'); - - return $next($request); - } - ); - } - - /** - * Create a new rule group. - * - * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View - */ - public function create() - { - $subTitleIcon = 'fa-clone'; - $subTitle = (string)trans('firefly.make_new_rule_group'); - - // put previous url in session if not redirect from store (not "create another"). - if (true !== session('rule-groups.create.fromStore')) { - $this->rememberPreviousUri('rule-groups.create.uri'); - } - session()->forget('rule-groups.create.fromStore'); - - return view('rules.rule-group.create', compact('subTitleIcon', 'subTitle')); - } - - /** - * Delege a rule group. - * - * @param RuleGroup $ruleGroup - * - * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View - */ - public function delete(RuleGroup $ruleGroup) - { - $subTitle = (string)trans('firefly.delete_rule_group', ['title' => $ruleGroup->title]); - - // put previous url in session - $this->rememberPreviousUri('rule-groups.delete.uri'); - - return view('rules.rule-group.delete', compact('ruleGroup', 'subTitle')); - } - - /** - * Actually destroy the rule group. - * - * @param Request $request - * @param RuleGroupRepositoryInterface $repository - * @param RuleGroup $ruleGroup - * - * @return \Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector - */ - public function destroy(Request $request, RuleGroupRepositoryInterface $repository, RuleGroup $ruleGroup) - { - /** @var User $user */ - $user = auth()->user(); - $title = $ruleGroup->title; - - /** @var RuleGroup $moveTo */ - $moveTo = $user->ruleGroups()->find((int)$request->get('move_rules_before_delete')); - - $repository->destroy($ruleGroup, $moveTo); - - session()->flash('success', (string)trans('firefly.deleted_rule_group', ['title' => $title])); - app('preferences')->mark(); - - return redirect($this->getPreviousUri('rule-groups.delete.uri')); - } - - /** - * Move a rule group down. - * - * @param RuleGroupRepositoryInterface $repository - * @param RuleGroup $ruleGroup - * - * @return \Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector - */ - public function down(RuleGroupRepositoryInterface $repository, RuleGroup $ruleGroup) - { - $repository->moveDown($ruleGroup); - - return redirect(route('rules.index')); - } - - /** - * Edit a rule group. - * - * @param Request $request - * @param RuleGroup $ruleGroup - * - * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View - */ - public function edit(Request $request, RuleGroup $ruleGroup) - { - $subTitle = (string)trans('firefly.edit_rule_group', ['title' => $ruleGroup->title]); - - $hasOldInput = null !== $request->old('_token'); - $preFilled = [ - 'active' => $hasOldInput ? (bool)$request->old('active') : $ruleGroup->active, - ]; - - - // put previous url in session if not redirect from store (not "return_to_edit"). - if (true !== session('rule-groups.edit.fromUpdate')) { - $this->rememberPreviousUri('rule-groups.edit.uri'); - } - session()->forget('rule-groups.edit.fromUpdate'); - session()->flash('preFilled', $preFilled); - - return view('rules.rule-group.edit', compact('ruleGroup', 'subTitle')); - } - - /** - * Execute the given rulegroup on a set of existing transactions. - * - * @param SelectTransactionsRequest $request - * @param AccountRepositoryInterface $repository - * @param RuleGroup $ruleGroup - * - * @return RedirectResponse - * @throws \Exception - */ - public function execute(SelectTransactionsRequest $request, AccountRepositoryInterface $repository, RuleGroup $ruleGroup): RedirectResponse - { - // Get parameters specified by the user - /** @var User $user */ - $user = auth()->user(); - $accounts = $repository->getAccountsById($request->get('accounts')); - $startDate = new Carbon($request->get('start_date')); - $endDate = new Carbon($request->get('end_date')); - - // Create a job to do the work asynchronously - $job = new ExecuteRuleGroupOnExistingTransactions($ruleGroup); - - // Apply parameters to the job - $job->setUser($user); - $job->setAccounts($accounts); - $job->setStartDate($startDate); - $job->setEndDate($endDate); - - // Dispatch a new job to execute it in a queue - $this->dispatch($job); - - // Tell the user that the job is queued - session()->flash('success', (string)trans('firefly.applied_rule_group_selection', ['title' => $ruleGroup->title])); - - return redirect()->route('rules.index'); - } - - /** - * Select transactions to apply the group on. - * - * @param RuleGroup $ruleGroup - * - * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View - */ - public function selectTransactions(RuleGroup $ruleGroup) - { - $first = session('first')->format('Y-m-d'); - $today = Carbon::now()->format('Y-m-d'); - $subTitle = (string)trans('firefly.apply_rule_group_selection', ['title' => $ruleGroup->title]); - - return view('rules.rule-group.select-transactions', compact('first', 'today', 'ruleGroup', 'subTitle')); - } - - /** - * Store the rule group. - * - * @param RuleGroupFormRequest $request - * @param RuleGroupRepositoryInterface $repository - * - * @return \Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector - */ - public function store(RuleGroupFormRequest $request, RuleGroupRepositoryInterface $repository) - { - $data = $request->getRuleGroupData(); - $ruleGroup = $repository->store($data); - - session()->flash('success', (string)trans('firefly.created_new_rule_group', ['title' => $ruleGroup->title])); - app('preferences')->mark(); - - $redirect = redirect($this->getPreviousUri('rule-groups.create.uri')); - if (1 === (int)$request->get('create_another')) { - // @codeCoverageIgnoreStart - session()->put('rule-groups.create.fromStore', true); - - $redirect = redirect(route('rule-groups.create'))->withInput(); - // @codeCoverageIgnoreEnd - } - - return $redirect; - } - - /** - * Move the rule group up. - * - * @param RuleGroupRepositoryInterface $repository - * @param RuleGroup $ruleGroup - * - * @return \Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector - * - * @SuppressWarnings(PHPMD.ShortMethodName) - */ - public function up(RuleGroupRepositoryInterface $repository, RuleGroup $ruleGroup) - { - $repository->moveUp($ruleGroup); - - return redirect(route('rules.index')); - } - - /** - * Update the rule group. - * - * @param RuleGroupFormRequest $request - * @param RuleGroupRepositoryInterface $repository - * @param RuleGroup $ruleGroup - * - * @return $this|\Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector - */ - public function update(RuleGroupFormRequest $request, RuleGroupRepositoryInterface $repository, RuleGroup $ruleGroup) - { - $data = [ - 'title' => $request->input('title'), - 'description' => $request->input('description'), - 'active' => 1 === (int)$request->input('active'), - ]; - - $repository->update($ruleGroup, $data); - - session()->flash('success', (string)trans('firefly.updated_rule_group', ['title' => $ruleGroup->title])); - app('preferences')->mark(); - $redirect = redirect($this->getPreviousUri('rule-groups.edit.uri')); - if (1 === (int)$request->get('return_to_edit')) { - // @codeCoverageIgnoreStart - session()->put('rule-groups.edit.fromUpdate', true); - - $redirect = redirect(route('rule-groups.edit', [$ruleGroup->id]))->withInput(['return_to_edit' => 1]); - // @codeCoverageIgnoreEnd - } - - // redirect to previous URL. - return $redirect; - } -} diff --git a/app/Repositories/Bill/BillRepository.php b/app/Repositories/Bill/BillRepository.php index a97438fc3c..de033da43c 100644 --- a/app/Repositories/Bill/BillRepository.php +++ b/app/Repositories/Bill/BillRepository.php @@ -543,9 +543,9 @@ class BillRepository implements BillRepositoryInterface * Link a set of journals to a bill. * * @param Bill $bill - * @param Collection $transactions + * @param array $transactions */ - public function linkCollectionToBill(Bill $bill, Collection $transactions): void + public function linkCollectionToBill(Bill $bill, array $transactions): void { /** @var Transaction $transaction */ foreach ($transactions as $transaction) { diff --git a/app/Repositories/Bill/BillRepositoryInterface.php b/app/Repositories/Bill/BillRepositoryInterface.php index fe6b6aa387..310c4addf5 100644 --- a/app/Repositories/Bill/BillRepositoryInterface.php +++ b/app/Repositories/Bill/BillRepositoryInterface.php @@ -222,9 +222,9 @@ interface BillRepositoryInterface * Link a set of journals to a bill. * * @param Bill $bill - * @param Collection $journals + * @param array $transactions */ - public function linkCollectionToBill(Bill $bill, Collection $journals): void; + public function linkCollectionToBill(Bill $bill, array $transactions): void; /** * Given a bill and a date, this method will tell you at which moment this bill expects its next diff --git a/app/Support/Binder/AccountList.php b/app/Support/Binder/AccountList.php index 2ef02c9de8..b7c05fb049 100644 --- a/app/Support/Binder/AccountList.php +++ b/app/Support/Binder/AccountList.php @@ -44,9 +44,9 @@ class AccountList implements BinderInterface */ public static function routeBinder(string $value, Route $route): Collection { - Log::debug(sprintf('Now in AccountList::routeBinder("%s")', $value)); + //Log::debug(sprintf('Now in AccountList::routeBinder("%s")', $value)); if (auth()->check()) { - Log::debug('User is logged in.'); + //Log::debug('User is logged in.'); $collection = new Collection; if ('allAssetAccounts' === $value) { /** @var Collection $collection */ @@ -55,7 +55,7 @@ class AccountList implements BinderInterface ->where('account_types.type', AccountType::ASSET) ->orderBy('accounts.name', 'ASC') ->get(['accounts.*']); - Log::debug(sprintf('Collection length is %d', $collection->count())); + //Log::debug(sprintf('Collection length is %d', $collection->count())); } if ('allAssetAccounts' !== $value) { $incoming = array_map('\intval', explode(',', $value)); @@ -66,7 +66,7 @@ class AccountList implements BinderInterface ->whereIn('accounts.id', $list) ->orderBy('accounts.name', 'ASC') ->get(['accounts.*']); - Log::debug(sprintf('Collection length is %d', $collection->count())); + //Log::debug(sprintf('Collection length is %d', $collection->count())); } if ($collection->count() > 0) { diff --git a/app/Support/Binder/BudgetList.php b/app/Support/Binder/BudgetList.php index 629b282879..67a2595c70 100644 --- a/app/Support/Binder/BudgetList.php +++ b/app/Support/Binder/BudgetList.php @@ -43,12 +43,12 @@ class BudgetList implements BinderInterface */ public static function routeBinder(string $value, Route $route): Collection { - Log::debug(sprintf('Now in BudgetList::routeBinder("%s")', $value)); + //Log::debug(sprintf('Now in BudgetList::routeBinder("%s")', $value)); if (auth()->check()) { $list = array_unique(array_map('\intval', explode(',', $value))); - Log::debug('List is now', $list); + //Log::debug('List is now', $list); if (0 === count($list)) { - Log::warning('List count is zero, return 404.'); + Log::warning('Budget list count is zero, return 404.'); throw new NotFoundHttpException; // @codeCoverageIgnore } @@ -57,22 +57,22 @@ class BudgetList implements BinderInterface ->where('active', 1) ->whereIn('id', $list) ->get(); - Log::debug(sprintf('Found %d active budgets', $collection->count()), $list); + //Log::debug(sprintf('Found %d active budgets', $collection->count()), $list); // add empty budget if applicable. if (in_array(0, $list, true)) { - Log::debug('Add empty budget because $list contains 0.'); + //Log::debug('Add empty budget because $list contains 0.'); $collection->push(new Budget); } if ($collection->count() > 0) { - Log::debug(sprintf('List length is > 0 (%d), so return it.', $collection->count())); + //Log::debug(sprintf('List length is > 0 (%d), so return it.', $collection->count())); return $collection; } - Log::debug('List length is zero, fall back to 404.'); + //Log::debug('List length is zero, fall back to 404.'); } - Log::debug('Final fallback to 404.'); + Log::warning('BudgetList fallback to 404.'); throw new NotFoundHttpException; } } diff --git a/app/Support/Http/Controllers/GetConfigurationData.php b/app/Support/Http/Controllers/GetConfigurationData.php index 291f828a5a..31a2d69073 100644 --- a/app/Support/Http/Controllers/GetConfigurationData.php +++ b/app/Support/Http/Controllers/GetConfigurationData.php @@ -106,12 +106,12 @@ trait GetConfigurationData // first range is the current range: $title => [$start, $end], ]; - Log::debug(sprintf('viewRange is %s', $viewRange)); - Log::debug(sprintf('isCustom is %s', var_export($isCustom, true))); + //Log::debug(sprintf('viewRange is %s', $viewRange)); + //Log::debug(sprintf('isCustom is %s', var_export($isCustom, true))); // when current range is a custom range, add the current period as the next range. if ($isCustom) { - Log::debug('Custom is true.'); + //Log::debug('Custom is true.'); $index = app('navigation')->periodShow($start, $viewRange); $customPeriodStart = app('navigation')->startOfPeriod($start, $viewRange); $customPeriodEnd = app('navigation')->endOfPeriod($customPeriodStart, $viewRange); diff --git a/app/Support/Http/Controllers/RequestInformation.php b/app/Support/Http/Controllers/RequestInformation.php index af803a9047..e14abf840e 100644 --- a/app/Support/Http/Controllers/RequestInformation.php +++ b/app/Support/Http/Controllers/RequestInformation.php @@ -105,7 +105,7 @@ trait RequestInformation } $baseHref = route('index'); $helpString = sprintf( - '
%s
%s