added import export for categories

This commit is contained in:
Denis Duliçi 2021-02-14 12:52:00 +03:00
parent 43bafc9afd
commit 80be6cf339
6 changed files with 99 additions and 4 deletions

View File

@ -0,0 +1,30 @@
<?php
namespace App\Exports\Settings;
use App\Abstracts\Export;
use App\Models\Setting\Category as Model;
class Categories extends Export
{
public function collection()
{
$model = Model::usingSearchString(request('search'));
if (!empty($this->ids)) {
$model->whereIn('id', (array) $this->ids);
}
return $model->cursor();
}
public function fields(): array
{
return [
'name',
'type',
'color',
'enabled',
];
}
}

View File

@ -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));

View File

@ -0,0 +1,20 @@
<?php
namespace App\Imports\Settings;
use App\Abstracts\Import;
use App\Http\Requests\Setting\Category as Request;
use App\Models\Setting\Category as Model;
class Categories extends Import
{
public function model(array $row)
{
return new Model($row);
}
public function rules(): array
{
return (new Request())->rules();
}
}

Binary file not shown.

View File

@ -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')
<a href="{{ route('categories.create') }}" class="btn btn-success btn-sm">{{ trans('general.add_new') }}</a>
@endsection
@endcan
<a href="{{ route('import.create', ['settings', 'categories']) }}" class="btn btn-white btn-sm">{{ trans('import.import') }}</a>
@endcan
<a href="{{ route('categories.export', request()->input()) }}" class="btn btn-white btn-sm">{{ trans('general.export') }}</a>
@endsection
@section('content')
<div class="card">

View File

@ -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');