diff --git a/app/Http/Controllers/Admin/TransportController.php b/app/Http/Controllers/Admin/TransportController.php new file mode 100644 index 0000000..e6d96a6 --- /dev/null +++ b/app/Http/Controllers/Admin/TransportController.php @@ -0,0 +1,131 @@ + + ['title' => "Edit", 'class' => 'btn-outline-primary', 'icon' => 'ri-edit-2-line'], + 'show' => + ['title' => "Detail", 'class' => 'btn-outline-light', 'icon' => 'ri-eye-line'], + 'destroy' => + ['title' => "Remove", 'class' => 'btn-outline-danger delete-confirm', 'icon' => 'ri-close-line'], + ]; + + + public function __construct() + { + parent::__construct(Transport::class, TransportSaveRequest::class); + } + + /** + * @param $transport Transport + * @param $request TransportSaveRequest + * @return Transport + */ + public function save($transport, $request) + { + + $transport->price = $request->price; + $transport->title = $request->title; + $transport->icon = $request->icon; + $transport->description = $request->description; + $transport->is_default = $request->has('is_default'); + if ($request->has('is_default')){ + Transport::where('is_default',1)->where('id','<>',$transport->id)->update([ + 'is_default' => 0, + ]); + $transport->is_default = 1; + } + $transport->save(); + return $transport; + + } + + + /** + * Show the form for creating a new resource. + */ + public function create() + { + // + return view($this->formView); + } + + /** + * Show the form for editing the specified resource. + */ + public function edit(Transport $item) + { + // + return view($this->formView, compact('item')); + } + + public function bulk(Request $request) + { + +// dd($request->all()); + $data = explode('.', $request->input('action')); + $action = $data[0]; + $ids = $request->input('id'); + switch ($action) { + case 'delete': + $msg = __(':COUNT items deleted successfully', ['COUNT' => count($ids)]); + $this->_MODEL_::destroy($ids); + break; + /**restore*/ + case 'restore': + $msg = __(':COUNT items restored successfully', ['COUNT' => count($ids)]); + foreach ($ids as $id) { + $this->_MODEL_::withTrashed()->find($id)->restore(); + } + break; + /*restore**/ + default: + $msg = __('Unknown bulk action : :ACTION', ["ACTION" => $action]); + } + + return $this->do_bulk($msg, $action, $ids); + } + + public function destroy(Transport $item) + { + return parent::delete($item); + } + + + public function update(Request $request, Transport $item) + { + return $this->bringUp($request, $item); + } + + /**restore*/ + public function restore($item) + { + return parent::restoreing(Transport::withTrashed()->where('id', $item)->first()); + } + /*restore**/ +} diff --git a/app/Http/Requests/TransportSaveRequest.php b/app/Http/Requests/TransportSaveRequest.php new file mode 100644 index 0000000..5774e30 --- /dev/null +++ b/app/Http/Requests/TransportSaveRequest.php @@ -0,0 +1,31 @@ +check(); + } + + /** + * Get the validation rules that apply to the request. + * + * @return array|string> + */ + public function rules(): array + { + return [ + 'title' => ['required','string','min:4'], + 'price' => ['required','integer'], + 'description' => ['nullable','string'], + 'icon' => ['nullable','string'], + ]; + } +} diff --git a/app/Models/Transport.php b/app/Models/Transport.php index a59e7e4..49aa9dd 100644 --- a/app/Models/Transport.php +++ b/app/Models/Transport.php @@ -4,8 +4,11 @@ namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; +use Illuminate\Database\Eloquent\SoftDeletes; +use Spatie\Translatable\HasTranslations; class Transport extends Model { - use HasFactory; + use HasFactory,SoftDeletes,HasTranslations; + public $translatable = ['title', 'description']; } diff --git a/database/migrations/2024_05_07_133601_create_transports_table.php b/database/migrations/2024_05_07_133601_create_transports_table.php index 8f308e3..42c9703 100644 --- a/database/migrations/2024_05_07_133601_create_transports_table.php +++ b/database/migrations/2024_05_07_133601_create_transports_table.php @@ -13,11 +13,12 @@ return new class extends Migration { Schema::create('transports', function (Blueprint $table) { $table->id(); - $table->string('title',250); + $table->text('title'); $table->text('description')->nullable()->default(null); $table->unsignedInteger('sort')->default(0); $table->boolean('is_default')->default(0); $table->unsignedInteger('price')->default(0); + $table->string('icon')->nullable(); $table->softDeletes(); $table->timestamps(); }); diff --git a/resources/views/admin/products/sub-pages/product-step1.blade.php b/resources/views/admin/products/sub-pages/product-step1.blade.php index 81124bf..f84b377 100644 --- a/resources/views/admin/products/sub-pages/product-step1.blade.php +++ b/resources/views/admin/products/sub-pages/product-step1.blade.php @@ -32,7 +32,7 @@ + :err="true" @enderror xtitle="{{__('Base price')}}" :xvalue="{{old('price',$item->price??null)}}">
diff --git a/resources/views/admin/templates/panel-list-template.blade.php b/resources/views/admin/templates/panel-list-template.blade.php index 3977702..1337b4b 100644 --- a/resources/views/admin/templates/panel-list-template.blade.php +++ b/resources/views/admin/templates/panel-list-template.blade.php @@ -198,8 +198,20 @@ @case($col == 'expire') {{$item->expire->ldate("Y-m-d")}} @break + @case($col == 'icon') + + @break + @case($col == 'is_default') + @if($item->$col == 1) + + @endif + @break @default - {{$item->$col}} + @if(gettype($item->$col) == 'integer') + {{number_format($item->$col)}} + @else + {{$item->$col}} + @endif @endswitch @endif diff --git a/resources/views/admin/transports/transport-form.blade.php b/resources/views/admin/transports/transport-form.blade.php new file mode 100644 index 0000000..afb1ca9 --- /dev/null +++ b/resources/views/admin/transports/transport-form.blade.php @@ -0,0 +1,94 @@ +@extends('admin.templates.panel-form-template') +@section('title') + @if(isset($item)) + {{__("Edit transport")}} [{{$item->title}}] + @else + {{__("Add new transport")}} + @endif - +@endsection +@section('form') + +
+
+ + @include('components.err') +
+

+ + {{__("Tips")}} +

+
    +
  • + {{__("Recommends")}} +
  • +
+
+ +
+

+ + {{__("Icon")}} +

+
+ +
+
+ +
+
+
+ +

+ @if(isset($item)) + {{__("Edit transport")}} [{{$item->title}}] + @else + {{__("Add new transport")}} + @endif +

+ +
+
+
+ + +
+
+
+
+ + +
+
+
+
+ + +
+
+
+
+ +
+ is_default) checked @endif type="checkbox" id="is_default"> + +
+
+ + +
+
+ + +
+
+
+
+
+@endsection diff --git a/resources/views/admin/transports/transport-list.blade.php b/resources/views/admin/transports/transport-list.blade.php new file mode 100644 index 0000000..f0184f0 --- /dev/null +++ b/resources/views/admin/transports/transport-list.blade.php @@ -0,0 +1,15 @@ +@extends('admin.templates.panel-list-template') + +@section('list-title') + + {{__("Transports list")}} +@endsection +@section('title') + {{__("Transports list")}} - +@endsection +@section('filter') + {{-- Other filters --}} +@endsection +@section('bulk') + {{-- --}} +@endsection diff --git a/resources/views/components/panel-side-navbar.blade.php b/resources/views/components/panel-side-navbar.blade.php index 82f5fec..43fde57 100644 --- a/resources/views/components/panel-side-navbar.blade.php +++ b/resources/views/components/panel-side-navbar.blade.php @@ -58,7 +58,7 @@
  • - + {{__('Transports')}} diff --git a/routes/web.php b/routes/web.php index 2003d6e..3b8f0d7 100644 --- a/routes/web.php +++ b/routes/web.php @@ -64,6 +64,20 @@ Route::prefix(config('app.panel.prefix'))->name('admin.')->group( Route::post('bulk', [\App\Http\Controllers\Admin\DiscountController::class, "bulk"])->name('bulk'); Route::get('trashed', [\App\Http\Controllers\Admin\DiscountController::class, "trashed"])->name('trashed'); }); + + Route::prefix('transports')->name('transport.')->group( + function () { + Route::get('', [\App\Http\Controllers\Admin\TransportController::class, 'index'])->name('index'); + Route::get('create', [\App\Http\Controllers\Admin\TransportController::class, 'create'])->name('create'); + Route::post('store', [\App\Http\Controllers\Admin\TransportController::class, 'store'])->name('store'); + Route::get('edit/{item}', [\App\Http\Controllers\Admin\TransportController::class, 'edit'])->name('edit'); + Route::post('update/{item}', [\App\Http\Controllers\Admin\TransportController::class, 'update'])->name('update'); + Route::get('delete/{item}', [\App\Http\Controllers\Admin\TransportController::class, 'destroy'])->name('destroy'); + Route::get('restore/{item}', [\App\Http\Controllers\Admin\TransportController::class, 'restore'])->name('restore'); + Route::post('bulk', [\App\Http\Controllers\Admin\TransportController::class, "bulk"])->name('bulk'); + Route::get('trashed', [\App\Http\Controllers\Admin\TransportController::class, "trashed"])->name('trashed'); + }); + Route::prefix('categories')->name('category.')->group( function () { Route::get('', [\App\Http\Controllers\Admin\CategoryController::class, 'index'])->name('index');