From 9ceeb619a6a0a87ad443091fe1a49e00c21436c9 Mon Sep 17 00:00:00 2001 From: A1Gard Date: Mon, 23 Sep 2024 07:39:42 +0330 Subject: [PATCH] added evaluation to project --- .../Admin/EvaluationController.php | 132 ++++++++++++++++++ app/Http/Requests/EvaluationSaveRequest.php | 28 ++++ app/Models/Evaluation.php | 15 ++ database/factories/EvaluationFactory.php | 23 +++ ..._09_23_070004_create_evaluations_table.php | 30 ++++ database/seeders/DatabaseSeeder.php | 1 + database/seeders/EvaluationSeeder.php | 29 ++++ resources/lang/fa.json | 13 +- .../evaluations/evaluation-form.blade.php | 88 ++++++++++++ .../evaluations/evaluation-list.blade.php | 15 ++ .../components/panel-side-navbar.blade.php | 10 +- routes/web.php | 13 ++ 12 files changed, 394 insertions(+), 3 deletions(-) create mode 100644 app/Http/Controllers/Admin/EvaluationController.php create mode 100644 app/Http/Requests/EvaluationSaveRequest.php create mode 100644 app/Models/Evaluation.php create mode 100644 database/factories/EvaluationFactory.php create mode 100644 database/migrations/2024_09_23_070004_create_evaluations_table.php create mode 100644 database/seeders/EvaluationSeeder.php create mode 100644 resources/views/admin/evaluations/evaluation-form.blade.php create mode 100644 resources/views/admin/evaluations/evaluation-list.blade.php diff --git a/app/Http/Controllers/Admin/EvaluationController.php b/app/Http/Controllers/Admin/EvaluationController.php new file mode 100644 index 0000000..0fcbd3a --- /dev/null +++ b/app/Http/Controllers/Admin/EvaluationController.php @@ -0,0 +1,132 @@ + + ['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(Evaluation::class, EvaluationSaveRequest::class); + } + + /** + * @param $evaluation Evaluation + * @param $request EvaluationSaveRequest + * @return Evaluation + */ + public function save($evaluation, $request) + { + + $evaluation->title = $request->title; + if ($request->evaluationable_type == null || $request->evaluationable_type == '') { + $evaluation->evaluationable_type = null; + }else{ + $evaluation->evaluationable_type = $request->evaluationable_type ; + } + if ($request->evaluationable_id == null || $request->evaluationable_id == '') { + $evaluation->evaluationable_id = null; + }else{ + $evaluation->evaluationable_id = $request->evaluationable_id ; + + } + $evaluation->save(); + return $evaluation; + + } + + + /** + * 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(Evaluation $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(Evaluation $item) + { + return parent::delete($item); + } + + + public function update(Request $request, Evaluation $item) + { + return $this->bringUp($request, $item); + } + + /**restore*/ + public function restore($item) + { + return parent::restoreing(Evaluation::withTrashed()->where('id', $item)->first()); + } + /*restore**/ +} diff --git a/app/Http/Requests/EvaluationSaveRequest.php b/app/Http/Requests/EvaluationSaveRequest.php new file mode 100644 index 0000000..4fee984 --- /dev/null +++ b/app/Http/Requests/EvaluationSaveRequest.php @@ -0,0 +1,28 @@ +check(); + } + + /** + * Get the validation rules that apply to the request. + * + * @return array|string> + */ + public function rules(): array + { + return [ + 'title' => ['required', 'string','min:2'], + ]; + } +} diff --git a/app/Models/Evaluation.php b/app/Models/Evaluation.php new file mode 100644 index 0000000..5ca1274 --- /dev/null +++ b/app/Models/Evaluation.php @@ -0,0 +1,15 @@ + + */ +class EvaluationFactory extends Factory +{ + /** + * Define the model's default state. + * + * @return array + */ + public function definition(): array + { + return [ + // + ]; + } +} diff --git a/database/migrations/2024_09_23_070004_create_evaluations_table.php b/database/migrations/2024_09_23_070004_create_evaluations_table.php new file mode 100644 index 0000000..b13887b --- /dev/null +++ b/database/migrations/2024_09_23_070004_create_evaluations_table.php @@ -0,0 +1,30 @@ +id(); + $table->string('title'); + $table->nullableMorphs('evaluationable'); + $table->softDeletes(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('evaluations'); + } +}; diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php index 34f58a4..bd6268e 100644 --- a/database/seeders/DatabaseSeeder.php +++ b/database/seeders/DatabaseSeeder.php @@ -42,6 +42,7 @@ class DatabaseSeeder extends Seeder MenuSeeder::class, SliderSeeder::class, PartSeeder::class, + EvaluationSeeder::class, ] ); } diff --git a/database/seeders/EvaluationSeeder.php b/database/seeders/EvaluationSeeder.php new file mode 100644 index 0000000..dd42c07 --- /dev/null +++ b/database/seeders/EvaluationSeeder.php @@ -0,0 +1,29 @@ +title = __('Quality'); + $e->save(); + + + $e = new Evaluation(); + $e->title = __('Packing'); + $e->evaluationable_type = Category::class; + $e->evaluationable_id = 1; + $e->save(); + } +} diff --git a/resources/lang/fa.json b/resources/lang/fa.json index 4d22cd7..d80d863 100644 --- a/resources/lang/fa.json +++ b/resources/lang/fa.json @@ -34,9 +34,10 @@ "Add new contact": "افزودن یک تماس", "Add new customer": "افزودن یک مشتری", "Add new discount": "افزودن یک تخفیف", + "Add new evaluation": "افزودن یک ارزیابی", "Add new gallery": "افزودن یک گالری", "Add new group": "افزودن یک سرفصل", - "Add new invoice": "", + "Add new invoice": "افزودن یک صورت حساب", "Add new language": "افزودن یک زبان جدید", "Add new menu": "افزودن فهرست جدید", "Add new post": "افزودن یک نوشته", @@ -66,6 +67,7 @@ "Advertise": "تبلیغ", "Advs": "تبلیغات", "Advs list": "فهرست تبلیغات", + "All": "همه", "All products": "تمامی محصولات", "Amount": "میزان", "Answer": "پاسخ", @@ -179,6 +181,7 @@ "Edit contact": "ویرایش تماس", "Edit customer": "ویرایش مشتری", "Edit discount": "ویرایش تخفیف", + "Edit evaluation": "ویرایش ارزیابی", "Edit gallery": "ویرایش گالری", "Edit group": "ویرایش سرفصل", "Edit invoice": "", @@ -197,12 +200,14 @@ "Email Address": "نشانی ایمیل", "Email or password is incorrect": "نام رایانامه یا گذرواژه اشتباه است", "Emoji": "ایموجی", + "Evaluations": "ارزیابی‌ها", + "Evaluations list": "فهرست ارزیابی‌ها", "Excerpt": "خلاصه", "Expire": "انقضا", "Expire date": "تاریخ انقضا", "Expire date": "تاریخ انقضا", "Extra description": "توضیحات اضافه", - "Failed Invoices": "", + "Failed Invoices": "صورت حساب‌های ناموفق", "False": "خیر", "Favorites": "علاقه‌مندی‌ها", "Feature image": "تصویر شاخص", @@ -274,6 +279,7 @@ "Latest ": "واپسین ", "Latest products": "واپسین محصولات", "Latitude": "عرض جغرافیایی", + "Leave model ID empty to apply all items": "اگر قصد دارید ارزیابی بر روی تمام موارد مدل اعمال شود آن‌را خالی رها کنید", "Link": "پیوند", "Login": "ورود", "Logout": "خروج", @@ -295,6 +301,7 @@ "Message...": "پیام...", "Mobile": "موبایل", "Model": "ماژول", + "Model ID": "ID مدل", "Name": "نام", "Name and lastname": "نام و نام‌خانوادگی", "Need process orders": "سفارشات نیازمند رسیدگی", @@ -463,6 +470,7 @@ "Upload images": "بارگزاری تصاویر", "Upload new images": "بارگزاری تصاویر جدید", "Use default": "استفاده از پیش فرض ها", + "User": "کاربر", "User filter": "صافی کاربر", "Users": "کاربران", "Users list": "فهرست کاربران", @@ -520,6 +528,7 @@ "emoji": "ایموجی", "error in payment.": "خطا در پرداخت", "error in payment. contact admin.": "خطا در پرداخت با مدیر وبسایت تماس بگیرید", + "evaluation": "ارزیابی", "image": "تصویر", "invoice": "صورت حساب", "jpg": "", diff --git a/resources/views/admin/evaluations/evaluation-form.blade.php b/resources/views/admin/evaluations/evaluation-form.blade.php new file mode 100644 index 0000000..0fb87f5 --- /dev/null +++ b/resources/views/admin/evaluations/evaluation-form.blade.php @@ -0,0 +1,88 @@ +@extends('admin.templates.panel-form-template') +@section('title') + @if(isset($item)) + {{__("Edit evaluation")}} [{{$item->title}}] + @else + {{__("Add new evaluation")}} + @endif - +@endsection +@section('form') + +
+
+ + @include('components.err') +
+

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

+
    +
  • + {{__("Leave model ID empty to apply all items")}} +
  • +
+
+ +
+
+
+ +

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

+ +
+
+
+ + +
+
+
+
+ + +
+
+
+
+ + +
+
+
+ + +
+
+ +
+
+
+@endsection diff --git a/resources/views/admin/evaluations/evaluation-list.blade.php b/resources/views/admin/evaluations/evaluation-list.blade.php new file mode 100644 index 0000000..a756f3a --- /dev/null +++ b/resources/views/admin/evaluations/evaluation-list.blade.php @@ -0,0 +1,15 @@ +@extends('admin.templates.panel-list-template') + +@section('list-title') + + {{__("Evaluations list")}} +@endsection +@section('title') + {{__("Evaluations 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 8faf293..a04efa8 100644 --- a/resources/views/components/panel-side-navbar.blade.php +++ b/resources/views/components/panel-side-navbar.blade.php @@ -42,7 +42,7 @@ @endif - @if( auth()->user()->hasAnyAccesses(['product','category','prop','transport']) ) + @if( auth()->user()->hasAnyAccesses(['product','category','prop','transport','evaluation']) )
  • @@ -81,6 +81,14 @@
  • @endif + @if( auth()->user()->hasAnyAccess( 'evaluation' )) +
  • + + + {{__('Evaluations')}} + +
  • + @endif diff --git a/routes/web.php b/routes/web.php index c32f365..53c6001 100644 --- a/routes/web.php +++ b/routes/web.php @@ -66,6 +66,19 @@ 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('evaluations')->name('evaluation.')->group( + function () { + Route::get('', [\App\Http\Controllers\Admin\EvaluationController::class, 'index'])->name('index'); + Route::get('create', [\App\Http\Controllers\Admin\EvaluationController::class, 'create'])->name('create'); + Route::post('store', [\App\Http\Controllers\Admin\EvaluationController::class, 'store'])->name('store'); + Route::get('edit/{item}', [\App\Http\Controllers\Admin\EvaluationController::class, 'edit'])->name('edit'); + Route::post('update/{item}', [\App\Http\Controllers\Admin\EvaluationController::class, 'update'])->name('update'); + Route::get('delete/{item}', [\App\Http\Controllers\Admin\EvaluationController::class, 'destroy'])->name('destroy'); + Route::get('restore/{item}', [\App\Http\Controllers\Admin\EvaluationController::class, 'restore'])->name('restore'); + Route::post('bulk', [\App\Http\Controllers\Admin\EvaluationController::class, "bulk"])->name('bulk'); + Route::get('trashed', [\App\Http\Controllers\Admin\EvaluationController::class, "trashed"])->name('trashed'); + }); + Route::prefix('tags')->name('tag.')->group( function () { Route::get('', [\App\Http\Controllers\Admin\TagController::class, 'index'])->name('index');