diff --git a/app/Enums/FaqTarget.php b/app/Enums/FaqTarget.php new file mode 100644 index 0000000..8ec1426 --- /dev/null +++ b/app/Enums/FaqTarget.php @@ -0,0 +1,9 @@ +user()->id; diff --git a/app/Http/Controllers/FaqController.php b/app/Http/Controllers/FaqController.php new file mode 100644 index 0000000..3844ac3 --- /dev/null +++ b/app/Http/Controllers/FaqController.php @@ -0,0 +1,76 @@ +when($userType, function ($query, $userType) { + $query->where('target', $userType); + }) + ->where('active', true) + ->get(); + } + + public function showListForAdmin(){ + + return view( + 'admin.faq.list', + [ + 'questions' => $this->get(), + ] + ); + } + + public function showListForUser() + { + return view( + 'employers.faq', + [ + 'questionsEmployer' => $this->get(FaqTarget::EMPLOYER->value), + 'questionsEmployee' => $this->get(FaqTarget::EMPLOYEE->value) + ] + ); + } + + public function create() + { + return view('admin.faq.create'); + } + + public function store(FaqActionRequest $request) + { + Faq::query()->create($request->toArray()); + + return response()->redirectTo(route('admin.faq.list')); + } + + public function edit(int $id) + { + return view('admin.faq.update', ['question' => Faq::find($id)]); + } + + public function update(FaqActionRequest $request, int $id) + { + Faq::query() + ->where('id', $id) + ->update($request->all(['question', 'target', 'answer'])); + + return response()->redirectTo(route('admin.faq.list')); + } + + public function destroy(int $id): RedirectResponse + { + Faq::query() + ->where('id', $id) + ->delete(); + + return response()->redirectTo(route('admin.faq.list')); + } +} diff --git a/app/Http/Requests/FaqActionRequest.php b/app/Http/Requests/FaqActionRequest.php new file mode 100644 index 0000000..1b1b9f5 --- /dev/null +++ b/app/Http/Requests/FaqActionRequest.php @@ -0,0 +1,19 @@ + 'required|string|max:255', + 'answer' => 'required|string', + 'target' => ['required', 'string', Rule::enum(FaqTarget::class)], + ]; + } +} diff --git a/app/Models/Faq.php b/app/Models/Faq.php new file mode 100644 index 0000000..d4fe70e --- /dev/null +++ b/app/Models/Faq.php @@ -0,0 +1,19 @@ +id(); + $table->string('question'); + $table->text('answer'); + $table->string('target')->default('employer'); + $table->boolean('active')->default(true); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('faqs'); + } +}; diff --git a/resources/views/admin/faq/create.blade.php b/resources/views/admin/faq/create.blade.php new file mode 100644 index 0000000..fcd8cda --- /dev/null +++ b/resources/views/admin/faq/create.blade.php @@ -0,0 +1,7 @@ +@extends('layout.admin', ['title' => 'Админка - Страница статистики']) + +@section('content') +
+ @include('admin.faq.form') +
+@endsection diff --git a/resources/views/admin/faq/form.blade.php b/resources/views/admin/faq/form.blade.php new file mode 100644 index 0000000..00d7047 --- /dev/null +++ b/resources/views/admin/faq/form.blade.php @@ -0,0 +1,100 @@ +@csrf + +@isset($question) + @method('PUT') +@endisset + + +
+
+ +
+ +
+ +
+
+ + Назад +
+
+
diff --git a/resources/views/admin/faq/list.blade.php b/resources/views/admin/faq/list.blade.php new file mode 100644 index 0000000..c2e00fe --- /dev/null +++ b/resources/views/admin/faq/list.blade.php @@ -0,0 +1,46 @@ +@extends('layout.admin', ['title' => 'Админка - Страница статистики']) + +@section('content') + + + Добавить вопрос/ответ + +
+
+ +
+ + + + + + + + + + + + @foreach($questions as $question) + + + + + + + + @endforeach + +
IDВопросДата создания
+ {{$question->id}} + + {{$question->question}} + + {{$question->created_at}} + + Изменить + + Удалить +
+
+
+@endsection diff --git a/resources/views/admin/faq/update.blade.php b/resources/views/admin/faq/update.blade.php new file mode 100644 index 0000000..4272406 --- /dev/null +++ b/resources/views/admin/faq/update.blade.php @@ -0,0 +1,7 @@ +@extends('layout.admin', ['title' => 'Админка - Добавление страницы']) + +@section('content') +
+ @include('admin.faq.form') +
+@endsection diff --git a/resources/views/employers/faq.blade.php b/resources/views/employers/faq.blade.php index a866369..1e431fd 100644 --- a/resources/views/employers/faq.blade.php +++ b/resources/views/employers/faq.blade.php @@ -1,52 +1,5 @@ @extends('layout.frontend', ['title' => 'FAQ Вопросы и ответы - РекаМоре']) -@section('scripts') - -@endsection - @section('content')
@@ -76,302 +29,40 @@
- + @foreach($questionsEmployer as $question)
- -
-

Ясность нашей позиции очевидна: выбранный нами инновационный путь обеспечивает актуальность дальнейших направлений развития.

-

Высокий уровень вовлечения представителей целевой аудитории является четким доказательством простого факта: базовый вектор развития создаёт необходимость включения в производственный план целого ряда внеочередных мероприятий с учётом комплекса позиций, занимаемых участниками в отношении поставленных задач.

-
-
-
- -
-

Ясность нашей позиции очевидна: выбранный нами инновационный путь обеспечивает актуальность дальнейших направлений развития.

-

Высокий уровень вовлечения представителей целевой аудитории является четким доказательством простого факта: базовый вектор развития создаёт необходимость включения в производственный план целого ряда внеочередных мероприятий с учётом комплекса позиций, занимаемых участниками в отношении поставленных задач.

-
-
-
- -
-

Ясность нашей позиции очевидна: выбранный нами инновационный путь обеспечивает актуальность дальнейших направлений развития.

-

Высокий уровень вовлечения представителей целевой аудитории является четким доказательством простого факта: базовый вектор развития создаёт необходимость включения в производственный план целого ряда внеочередных мероприятий с учётом комплекса позиций, занимаемых участниками в отношении поставленных задач.

-
-
-
- -
-

Ясность нашей позиции очевидна: выбранный нами инновационный путь обеспечивает актуальность дальнейших направлений развития.

-

Высокий уровень вовлечения представителей целевой аудитории является четким доказательством простого факта: базовый вектор развития создаёт необходимость включения в производственный план целого ряда внеочередных мероприятий с учётом комплекса позиций, занимаемых участниками в отношении поставленных задач.

-
-
-
- -
-

Ясность нашей позиции очевидна: выбранный нами инновационный путь обеспечивает актуальность дальнейших направлений развития.

-

Высокий уровень вовлечения представителей целевой аудитории является четким доказательством простого факта: базовый вектор развития создаёт необходимость включения в производственный план целого ряда внеочередных мероприятий с учётом комплекса позиций, занимаемых участниками в отношении поставленных задач.

-
-
-
-
-

Ясность нашей позиции очевидна: выбранный нами инновационный путь обеспечивает актуальность дальнейших направлений развития.

-

Высокий уровень вовлечения представителей целевой аудитории является четким доказательством простого факта: базовый вектор развития создаёт необходимость включения в производственный план целого ряда внеочередных мероприятий с учётом комплекса позиций, занимаемых участниками в отношении поставленных задач.

-
-
-
- -
-

Ясность нашей позиции очевидна: выбранный нами инновационный путь обеспечивает актуальность дальнейших направлений развития.

-

Высокий уровень вовлечения представителей целевой аудитории является четким доказательством простого факта: базовый вектор развития создаёт необходимость включения в производственный план целого ряда внеочередных мероприятий с учётом комплекса позиций, занимаемых участниками в отношении поставленных задач.

-
-
-
- -
-

Ясность нашей позиции очевидна: выбранный нами инновационный путь обеспечивает актуальность дальнейших направлений развития.

-

Высокий уровень вовлечения представителей целевой аудитории является четким доказательством простого факта: базовый вектор развития создаёт необходимость включения в производственный план целого ряда внеочередных мероприятий с учётом комплекса позиций, занимаемых участниками в отношении поставленных задач.

-
-
-
- -
-

Ясность нашей позиции очевидна: выбранный нами инновационный путь обеспечивает актуальность дальнейших направлений развития.

-

Высокий уровень вовлечения представителей целевой аудитории является четким доказательством простого факта: базовый вектор развития создаёт необходимость включения в производственный план целого ряда внеочередных мероприятий с учётом комплекса позиций, занимаемых участниками в отношении поставленных задач.

-
-
-
- -
-

Ясность нашей позиции очевидна: выбранный нами инновационный путь обеспечивает актуальность дальнейших направлений развития.

-

Высокий уровень вовлечения представителей целевой аудитории является четким доказательством простого факта: базовый вектор развития создаёт необходимость включения в производственный план целого ряда внеочередных мероприятий с учётом комплекса позиций, занимаемых участниками в отношении поставленных задач.

-
+
{{ $question->answer }}
+ @endforeach
- -
-
- -
-

Ясность нашей позиции очевидна: выбранный нами инновационный путь обеспечивает актуальность дальнейших направлений развития.

-

Высокий уровень вовлечения представителей целевой аудитории является четким доказательством простого факта: базовый вектор развития создаёт необходимость включения в производственный план целого ряда внеочередных мероприятий с учётом комплекса позиций, занимаемых участниками в отношении поставленных задач.

-
-
-
- -
-

Ясность нашей позиции очевидна: выбранный нами инновационный путь обеспечивает актуальность дальнейших направлений развития.

-

Высокий уровень вовлечения представителей целевой аудитории является четким доказательством простого факта: базовый вектор развития создаёт необходимость включения в производственный план целого ряда внеочередных мероприятий с учётом комплекса позиций, занимаемых участниками в отношении поставленных задач.

-
-
-
- -
-

Ясность нашей позиции очевидна: выбранный нами инновационный путь обеспечивает актуальность дальнейших направлений развития.

-

Высокий уровень вовлечения представителей целевой аудитории является четким доказательством простого факта: базовый вектор развития создаёт необходимость включения в производственный план целого ряда внеочередных мероприятий с учётом комплекса позиций, занимаемых участниками в отношении поставленных задач.

-
-
-
- -
-

Ясность нашей позиции очевидна: выбранный нами инновационный путь обеспечивает актуальность дальнейших направлений развития.

-

Высокий уровень вовлечения представителей целевой аудитории является четким доказательством простого факта: базовый вектор развития создаёт необходимость включения в производственный план целого ряда внеочередных мероприятий с учётом комплекса позиций, занимаемых участниками в отношении поставленных задач.

-
-
-
- -
-

Ясность нашей позиции очевидна: выбранный нами инновационный путь обеспечивает актуальность дальнейших направлений развития.

-

Высокий уровень вовлечения представителей целевой аудитории является четким доказательством простого факта: базовый вектор развития создаёт необходимость включения в производственный план целого ряда внеочередных мероприятий с учётом комплекса позиций, занимаемых участниками в отношении поставленных задач.

-
-
-
- -
-

Ясность нашей позиции очевидна: выбранный нами инновационный путь обеспечивает актуальность дальнейших направлений развития.

-

Высокий уровень вовлечения представителей целевой аудитории является четким доказательством простого факта: базовый вектор развития создаёт необходимость включения в производственный план целого ряда внеочередных мероприятий с учётом комплекса позиций, занимаемых участниками в отношении поставленных задач.

-
-
-
- -
-

Ясность нашей позиции очевидна: выбранный нами инновационный путь обеспечивает актуальность дальнейших направлений развития.

-

Высокий уровень вовлечения представителей целевой аудитории является четким доказательством простого факта: базовый вектор развития создаёт необходимость включения в производственный план целого ряда внеочередных мероприятий с учётом комплекса позиций, занимаемых участниками в отношении поставленных задач.

-
-
-
- -
-

Ясность нашей позиции очевидна: выбранный нами инновационный путь обеспечивает актуальность дальнейших направлений развития.

-

Высокий уровень вовлечения представителей целевой аудитории является четким доказательством простого факта: базовый вектор развития создаёт необходимость включения в производственный план целого ряда внеочередных мероприятий с учётом комплекса позиций, занимаемых участниками в отношении поставленных задач.

-
-
-
- -
-

Ясность нашей позиции очевидна: выбранный нами инновационный путь обеспечивает актуальность дальнейших направлений развития.

-

Высокий уровень вовлечения представителей целевой аудитории является четким доказательством простого факта: базовый вектор развития создаёт необходимость включения в производственный план целого ряда внеочередных мероприятий с учётом комплекса позиций, занимаемых участниками в отношении поставленных задач.

-
-
-
- -
-

Ясность нашей позиции очевидна: выбранный нами инновационный путь обеспечивает актуальность дальнейших направлений развития.

-

Высокий уровень вовлечения представителей целевой аудитории является четким доказательством простого факта: базовый вектор развития создаёт необходимость включения в производственный план целого ряда внеочередных мероприятий с учётом комплекса позиций, занимаемых участниками в отношении поставленных задач.

-
-
-
+ @foreach($questionsEmployee as $question) +
+
+ +
{{ $question->answer }}
+
+
+ @endforeach
@@ -380,8 +71,5 @@
- - -
@endsection diff --git a/resources/views/layout/admin.blade.php b/resources/views/layout/admin.blade.php index 910ae4a..e117da0 100644 --- a/resources/views/layout/admin.blade.php +++ b/resources/views/layout/admin.blade.php @@ -719,6 +719,15 @@ @endif @endif + @if ($cont->url_page == "admin/faq") + @if ((($cont->is_admin == 1) && ($admin == 1)) || + (($cont->is_manager == 1) && ($is_manager == 1))) +
  • + FAQ +
  • + @endif + @endif + @endforeach @@ -1383,7 +1392,16 @@ @if ((($cont->is_admin == 1) && ($admin == 1)) || (($cont->is_manager == 1) && ($is_manager == 1)))
  • - Работодатели на главной + Работодатели на главной11 +
  • + @endif + @endif + + @if ($cont->url_page == "faq/list") + @if ((($cont->is_admin == 1) && ($admin == 1)) || + (($cont->is_manager == 1) && ($is_manager == 1))) +
  • + FAQ
  • @endif @endif diff --git a/routes/web.php b/routes/web.php index 8e4f369..f415046 100644 --- a/routes/web.php +++ b/routes/web.php @@ -17,6 +17,7 @@ use App\Http\Controllers\Auth\ForgotPasswordController; use App\Http\Controllers\Auth\LoginController; use App\Http\Controllers\Auth\RegisterController; use App\Http\Controllers\CKEditorController; +use App\Http\Controllers\FaqController; use App\Http\Controllers\MediaController; use App\Http\Controllers\WorkerController; use App\Models\Ad_jobs; @@ -404,6 +405,17 @@ Route::group([ Route::get('logs', function() { $files = Storage::files('logs/laravel.log'); })->name('logs'); + + Route::prefix('faq')->as('faq.')->group(function () { + Route::middleware('admin')->group(function () { + Route::get('/', [FaqController::class, 'showListForAdmin'])->name('list'); + Route::get('/create', [FaqController::class, 'create'])->name('create'); + Route::post('/create', [FaqController::class, 'store'])->name('store'); + Route::get('/edit/{id}', [FaqController::class, 'edit'])->name('edit'); + Route::put('/edit/{id}', [FaqController::class, 'update'])->name('update'); + Route::get('/destroy/{id}', [FaqController::class, 'destroy'])->name('destroy'); + }); + }); }); // Инструментальные страницы @@ -639,8 +651,8 @@ Route::group([ Route::get('cabinet/send-all-messages', [EmployerController::class, 'send_all_messages'])->name('send_all_messages'); Route::post('cabinet/send-all-messages/send', [EmployerController::class, 'send_all_post'])->name('send_all_post'); - // 10 страница FAQ вопросы - Route::get('cabinet/faq', [EmployerController::class, 'faq'])->name('faq'); + // 10 страница FAQ вопрос + Route::get('cabinet/faq', [FaqController::class, 'showListForUser'])->name('faq'); // 11 страница - Настройка уведомлений Route::get('cabinet/subscribe', [EmployerController::class, 'subscribe'])->name('subscribe');