diff --git a/app/Exports/Settings/Categories.php b/app/Exports/Settings/Categories.php new file mode 100644 index 000000000..b82fc958f --- /dev/null +++ b/app/Exports/Settings/Categories.php @@ -0,0 +1,30 @@ +ids)) { + $model->whereIn('id', (array) $this->ids); + } + + return $model->cursor(); + } + + public function fields(): array + { + return [ + 'name', + 'type', + 'color', + 'enabled', + ]; + } +} diff --git a/app/Http/Controllers/Settings/Categories.php b/app/Http/Controllers/Settings/Categories.php index a0222b540..727df6cb1 100644 --- a/app/Http/Controllers/Settings/Categories.php +++ b/app/Http/Controllers/Settings/Categories.php @@ -3,7 +3,10 @@ namespace App\Http\Controllers\Settings; use App\Abstracts\Http\Controller; +use App\Exports\Settings\Categories as Export; +use App\Http\Requests\Common\Import as ImportRequest; use App\Http\Requests\Setting\Category as Request; +use App\Imports\Settings\Categories as Import; use App\Jobs\Setting\CreateCategory; use App\Jobs\Setting\DeleteCategory; use App\Jobs\Setting\UpdateCategory; @@ -88,6 +91,34 @@ class Categories extends Controller return response()->json($response); } + /** + * Import the specified resource. + * + * @param ImportRequest $request + * + * @return Response + */ + public function import(ImportRequest $request) + { + $response = $this->importExcel(new Import, $request); + + if ($response['success']) { + $response['redirect'] = route('categories.index'); + + $message = trans('messages.success.imported', ['type' => trans_choice('general.categories', 2)]); + + flash($message)->success(); + } else { + $response['redirect'] = route('import.create', ['settings', 'categories']); + + $message = $response['message']; + + flash($message)->error()->important(); + } + + return response()->json($response); + } + /** * Show the form for editing the specified resource. * @@ -200,6 +231,16 @@ class Categories extends Controller return response()->json($response); } + /** + * Export the specified resource. + * + * @return Response + */ + public function export() + { + return $this->exportExcel(new Export, trans_choice('general.categories', 2)); + } + public function category(Request $request) { $category = $this->dispatch(new CreateCategory($request)); diff --git a/app/Imports/Settings/Categories.php b/app/Imports/Settings/Categories.php new file mode 100644 index 000000000..7443c09d3 --- /dev/null +++ b/app/Imports/Settings/Categories.php @@ -0,0 +1,20 @@ +rules(); + } +} diff --git a/public/files/import/categories.xlsx b/public/files/import/categories.xlsx new file mode 100644 index 000000000..ab5676545 Binary files /dev/null and b/public/files/import/categories.xlsx differ diff --git a/resources/views/settings/categories/index.blade.php b/resources/views/settings/categories/index.blade.php index ac5b2a67f..1ec5b2621 100644 --- a/resources/views/settings/categories/index.blade.php +++ b/resources/views/settings/categories/index.blade.php @@ -2,11 +2,13 @@ @section('title', trans_choice('general.categories', 2)) -@can('create-settings-categories') - @section('new_button') +@section('new_button') + @can('create-settings-categories') {{ trans('general.add_new') }} - @endsection -@endcan + {{ trans('import.import') }} + @endcan + {{ trans('general.export') }} +@endsection @section('content')
diff --git a/routes/admin.php b/routes/admin.php index bbaf2b85f..486118b9f 100644 --- a/routes/admin.php +++ b/routes/admin.php @@ -145,6 +145,8 @@ Route::group(['prefix' => 'banking'], function () { Route::group(['prefix' => 'settings'], function () { Route::post('categories/category', 'Settings\Categories@category'); + Route::post('categories/import', 'Settings\Categories@import')->name('categories.import'); + Route::get('categories/export', 'Settings\Categories@export')->name('categories.export'); Route::get('categories/{category}/enable', 'Settings\Categories@enable')->name('categories.enable'); Route::get('categories/{category}/disable', 'Settings\Categories@disable')->name('categories.disable'); Route::resource('categories', 'Settings\Categories');