From e84a7a287b141f99e6f4a0c88c6e376348a55af0 Mon Sep 17 00:00:00 2001 From: myuqinurrohman Date: Mon, 14 Apr 2025 11:03:24 +0700 Subject: [PATCH] feat: edit journalist --- .../Dashboard/JournalistController.php | 54 ++++++- .../dashboard/journalists/edit.blade.php | 146 ++++++++++++++++++ .../dashboard/journalists/index.blade.php | 4 + routes/web.php | 2 +- 4 files changed, 203 insertions(+), 3 deletions(-) create mode 100644 resources/views/dashboard/journalists/edit.blade.php diff --git a/app/Http/Controllers/Dashboard/JournalistController.php b/app/Http/Controllers/Dashboard/JournalistController.php index c32275c..3c1b1c5 100644 --- a/app/Http/Controllers/Dashboard/JournalistController.php +++ b/app/Http/Controllers/Dashboard/JournalistController.php @@ -205,9 +205,59 @@ public function processEditAction(Request $request, $id, $action){ } } - public function edit(){} + public function edit($id){ + $journalist = Journalist::findOrFail(decrypt_id($id)); - public function update(){} + return view('dashboard.journalists.edit', [ + 'title' => 'Ubah Data Jurnalis', + 'journalist' => $journalist + ]); + } + + public function update(JournalistRequest $request, $id){ + $validatedData = $request->validated(); + + $journalist = Journalist::findOrFail(decrypt_id($id)); + if(!in_array($journalist->edit_status, ['2'])){ + abort(404); + } + + $fileFieldMap = [ + 'journalist_ukw_sertificate_doc' => 'ukw_sertificate_doc', + 'journalist_press_card_doc' => 'press_card_doc', + ]; + + $journalistFileNames = []; + + foreach ($fileFieldMap as $requestKey => $dbField) { + if ($request->hasFile($requestKey) && filled($validatedData[$requestKey])) { + $journalistFileNames[$requestKey] = store_file($validatedData[$requestKey], '/uploads/journalists', 'public')['randomFileName']; + }else{ + $journalistFileNames[$requestKey] = $journalist->{$dbField}; + } + } + + $createdJournalist = $journalist->update([ + 'name' => $validatedData['journalist_name'], + 'email' => $validatedData['journalist_email'], + 'phone_number' => $validatedData['journalist_phone_number'], + 'press_card' => $validatedData['journalist_press_card'], + 'press_card_doc' => $journalistFileNames['journalist_press_card_doc'], + 'ukw_sertificate' => $validatedData['journalist_ukw_sertificate'], + 'ukw_sertificate_doc' => $journalistFileNames['journalist_ukw_sertificate_doc'], + 'approved_status' => $journalist->approved_status, + 'approved_at' => $journalist->approved_at, + 'edit_description' => null, + 'edit_status' => '0', + 'media_id' => Auth::user()->company->media->id + ]); + + if($createdJournalist){ + return redirect()->route('dashboard.journalists.index')->with('success-status', 'Berhasil mengubah jurnalis.'); + }else{ + return redirect()->route('dashboard.journalists.index')->with('failed-status', 'Gagal mengubah jurnalis.'); + } + } public function show($id){ $journalist = Journalist::findOrFail(decrypt_id($id)); diff --git a/resources/views/dashboard/journalists/edit.blade.php b/resources/views/dashboard/journalists/edit.blade.php new file mode 100644 index 0000000..4dea48d --- /dev/null +++ b/resources/views/dashboard/journalists/edit.blade.php @@ -0,0 +1,146 @@ +@include('partials.dashboard.head') +@include('partials.dashboard.sidebar', ['page' => 'journalists']) +@include('partials.dashboard.header') + +
+
+
+
+
+
+
+

Ubah Data Jurnalis

+
+
    +
  • Ubah data jurnalis Anda di sini.
  • +
+
+
+
+ Kembali + +
+
+
+
+
+
+ Mohon lakukan pembaruan data jurnalis sesuai dengan informasi yang telah diajukan sebelumnya. Pastikan seluruh data telah diisi dengan lengkap dan benar. +
+
+
+
+
+
+ {{--
--}} +
+ @csrf +
+
+
+
+ +
+ +
+
+
+
+
+ +
+ +
+
+
+
+
+ +
+ +
+
+
+
+
+ +
+ +
+
+
+
+
+ +
+ +
+
+
+
+
+ +
+
+ + +
+
+
+
+
+
+ +
+
+ + +
+
+
+
+
+
+ Reset Perubahan + +
+
+
+
+
+
+
+
+
+
+
+
+ +@include('partials.dashboard.footer', ['rich_editor' => false]) diff --git a/resources/views/dashboard/journalists/index.blade.php b/resources/views/dashboard/journalists/index.blade.php index 8bb2977..df1bfc4 100644 --- a/resources/views/dashboard/journalists/index.blade.php +++ b/resources/views/dashboard/journalists/index.blade.php @@ -160,6 +160,10 @@ Ubah @elseif($journalist->edit_status === '1') Ubah + @elseif($journalist->edit_status === '2') + + + Ubah @endif diff --git a/routes/web.php b/routes/web.php index fe747e6..6b62975 100644 --- a/routes/web.php +++ b/routes/web.php @@ -315,7 +315,7 @@ Route::put('/{id}/process/{action}', 'processEditAction')->name('edit.process.action'); Route::get('/{id}/edit', 'edit')->name('edit'); - Route::put('/{id}', 'update')->name('update'); + Route::post('/{id}', 'update')->name('update'); Route::delete('/{id}', 'destroy')->name('destroy'); });