diff --git a/app/Http/Controllers/Modals/Categories.php b/app/Http/Controllers/Modals/Categories.php index 19fda17b0..304bd010f 100644 --- a/app/Http/Controllers/Modals/Categories.php +++ b/app/Http/Controllers/Modals/Categories.php @@ -5,6 +5,7 @@ namespace App\Http\Controllers\Modals; use App\Abstracts\Http\Controller; use App\Jobs\Setting\CreateCategory; use Illuminate\Http\Request as IRequest; +use App\Http\Requests\Setting\Category as Request; class Categories extends Controller { @@ -46,7 +47,7 @@ class Categories extends Controller * * @return Response */ - public function store(IRequest $request) + public function store(Request $request) { $request['enabled'] = 1; $request['type'] = $request->get('type', 'income'); diff --git a/app/Http/Controllers/Modals/Currencies.php b/app/Http/Controllers/Modals/Currencies.php new file mode 100644 index 000000000..617752733 --- /dev/null +++ b/app/Http/Controllers/Modals/Currencies.php @@ -0,0 +1,85 @@ +middleware('permission:create-settings-currencies')->only(['create', 'store', 'duplicate', 'import']); + $this->middleware('permission:read-settings-currencies')->only(['index', 'show', 'edit', 'export']); + $this->middleware('permission:update-settings-currencies')->only(['update', 'enable', 'disable']); + $this->middleware('permission:delete-settings-currencies')->only('destroy'); + } + + /** + * Show the form for creating a new resource. + * + * @return Response + */ + public function create() + { + // Get current currencies + $current = Currency::pluck('code')->toArray(); + + // Prepare codes + $codes = array(); + $currencies = MoneyCurrency::getCurrencies(); + foreach ($currencies as $key => $item) { + // Don't show if already available + if (in_array($key, $current)) { + continue; + } + + $codes[$key] = $key; + } + + $html = view('modals.currencies.create', compact('codes'))->render(); + + return response()->json([ + 'success' => true, + 'error' => false, + 'message' => 'null', + 'html' => $html, + ]); + } + + /** + * Store a newly created resource in storage. + * + * @param Request $request + * + * @return Response + */ + public function store(Request $request) + { + $currency = config('money.' . $request->get('code')); + + $request['precision'] = (int) $currency['precision']; + $request['symbol'] = $currency['symbol']; + $request['symbol_first'] = $currency['symbol_first'] ? 1 : 0; + $request['decimal_mark'] = $currency['decimal_mark']; + $request['thousands_separator'] = $currency['thousands_separator']; + + $request['enabled'] = 1; + $request['default_currency'] = false; + + $response = $this->ajaxDispatch(new CreateCurrency($request->all())); + + if ($response['success']) { + $response['message'] = trans('messages.success.added', ['type' => trans_choice('general.currencies', 1)]); + } + + return response()->json($response); + } +} diff --git a/resources/views/banking/accounts/create.blade.php b/resources/views/banking/accounts/create.blade.php index 57f60bafa..40a7308e8 100644 --- a/resources/views/banking/accounts/create.blade.php +++ b/resources/views/banking/accounts/create.blade.php @@ -21,7 +21,7 @@ {{ Form::textGroup('number', trans('accounts.number'), 'pencil-alt') }} - {{ Form::selectGroup('currency_code', trans_choice('general.currencies', 1), 'exchange-alt', $currencies, setting('default.currency'), ['required' => 'required', 'change' => 'onChangeCurrency']) }} + {{ Form::selectAddNewGroup('currency_code', trans_choice('general.currencies', 1), 'exchange-alt', $currencies, setting('default.currency'), ['required' => 'required', 'path' => route('modals.currencies.create'), 'change' => 'onChangeCurrency']) }} {{ Form::moneyGroup('opening_balance', trans('accounts.opening_balance'), 'balance-scale', ['required' => 'required', 'currency' => $currency], 0) }} diff --git a/resources/views/banking/accounts/edit.blade.php b/resources/views/banking/accounts/edit.blade.php index 8f50c5c75..21c0580b4 100644 --- a/resources/views/banking/accounts/edit.blade.php +++ b/resources/views/banking/accounts/edit.blade.php @@ -22,7 +22,7 @@ {{ Form::textGroup('number', trans('accounts.number'), 'pencil-alt') }} - {{ Form::selectGroup('currency_code', trans_choice('general.currencies', 1), 'exchange-alt', $currencies, $account->currency_code, ['required' => 'required', 'change' => 'onChangeCurrency']) }} + {{ Form::selectAddNewGroup('currency_code', trans_choice('general.currencies', 1), 'exchange-alt', $currencies, $account->currency_code, ['required' => 'required', 'path' => route('modals.currencies.create'), 'change' => 'onChangeCurrency']) }} {{ Form::moneyGroup('opening_balance', trans('accounts.opening_balance'), 'balance-scale', ['required' => 'required', 'currency' => $currency], $account->opening_balance) }} diff --git a/resources/views/modals/currencies/create.blade.php b/resources/views/modals/currencies/create.blade.php new file mode 100644 index 000000000..1565aa156 --- /dev/null +++ b/resources/views/modals/currencies/create.blade.php @@ -0,0 +1,20 @@ +{!! Form::open([ + 'id' => 'form-create-currency', + '@submit.prevent' => 'onSubmit', + '@keydown' => 'form.errors.clear($event.target.name)', + 'role' => 'form', + 'class' => 'form-loading-button', + 'route' => 'modals.currencies.store', + 'novalidate' => true +]) !!} +