From 80be6cf339be800e0ce19c53aaad63bc946070f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Denis=20Duli=C3=A7i?= Date: Sun, 14 Feb 2021 12:52:00 +0300 Subject: [PATCH] added import export for categories --- app/Exports/Settings/Categories.php | 30 +++++++++++++ app/Http/Controllers/Settings/Categories.php | 41 ++++++++++++++++++ app/Imports/Settings/Categories.php | 20 +++++++++ public/files/import/categories.xlsx | Bin 0 -> 6662 bytes .../views/settings/categories/index.blade.php | 10 +++-- routes/admin.php | 2 + 6 files changed, 99 insertions(+), 4 deletions(-) create mode 100644 app/Exports/Settings/Categories.php create mode 100644 app/Imports/Settings/Categories.php create mode 100644 public/files/import/categories.xlsx 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 0000000000000000000000000000000000000000..ab56765453d0d25efebcb195994f213431993b42 GIT binary patch literal 6662 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 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');