middleware( function ($request, $next) { return $next($request); } ); } /** * @param AccountRepositoryInterface $repository * * @return \Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector|View */ public function index(AccountRepositoryInterface $repository) { View::share('title', trans('firefly.welcome')); View::share('mainTitleIcon', 'fa-fire'); $types = config('firefly.accountTypesByIdentifier.asset'); $count = $repository->count($types); if ($count > 0) { return redirect(route('index')); } return view('new-user.index'); } /** * @param NewUserFormRequest $request * @param AccountRepositoryInterface $repository * * @return \Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector */ public function submit(NewUserFormRequest $request, AccountRepositoryInterface $repository) { $count = 1; // create normal asset account: $this->createAssetAccount($request, $repository); // create savings account $savingBalance = strval($request->get('savings_balance')) === '' ? '0' : strval($request->get('savings_balance')); if (bccomp($savingBalance, '0') !== 0) { $this->createSavingsAccount($request, $repository); $count++; } // create credit card. $limit = strval($request->get('credit_card_limit')) === '' ? '0' : strval($request->get('credit_card_limit')); if (bccomp($limit, '0') !== 0) { $this->storeCreditCard($request, $repository); $count++; } $message = strval(trans('firefly.stored_new_accounts_new_user')); if ($count == 1) { $message = strval(trans('firefly.stored_new_account_new_user')); } Session::flash('success', $message); Preferences::mark(); return redirect(route('index')); } /** * @param NewUserFormRequest $request * @param AccountRepositoryInterface $repository * * @return bool */ private function createAssetAccount(NewUserFormRequest $request, AccountRepositoryInterface $repository): bool { $assetAccount = [ 'name' => $request->get('bank_name'), 'iban' => null, 'accountType' => 'asset', 'virtualBalance' => 0, 'active' => true, 'accountRole' => 'defaultAsset', 'openingBalance' => round($request->input('bank_balance'), 12), 'openingBalanceDate' => new Carbon, 'openingBalanceCurrency' => intval($request->input('amount_currency_id_bank_balance')), ]; $repository->store($assetAccount); return true; } /** * @param NewUserFormRequest $request * @param AccountRepositoryInterface $repository * * @return bool */ private function createSavingsAccount(NewUserFormRequest $request, AccountRepositoryInterface $repository): bool { $savingsAccount = [ 'name' => $request->get('bank_name') . ' savings account', 'iban' => null, 'accountType' => 'asset', 'virtualBalance' => 0, 'active' => true, 'accountRole' => 'savingAsset', 'openingBalance' => round($request->input('savings_balance'), 12), 'openingBalanceDate' => new Carbon, 'openingBalanceCurrency' => intval($request->input('amount_currency_id_savings_balance')), ]; $repository->store($savingsAccount); return true; } /** * @param NewUserFormRequest $request * @param AccountRepositoryInterface $repository * * @return bool */ private function storeCreditCard(NewUserFormRequest $request, AccountRepositoryInterface $repository): bool { $creditAccount = [ 'name' => 'Credit card', 'iban' => null, 'accountType' => 'asset', 'virtualBalance' => round($request->get('credit_card_limit'), 12), 'active' => true, 'accountRole' => 'ccAsset', 'openingBalance' => null, 'openingBalanceDate' => null, 'openingBalanceCurrency' => intval($request->input('amount_currency_id_credit_card_limit')), 'ccType' => 'monthlyFull', 'ccMonthlyPaymentDate' => Carbon::now()->year . '-01-01', ]; $repository->store($creditAccount); return true; } }