From 859502a7e2c69553b3b5290f24ee9cae30acdfb3 Mon Sep 17 00:00:00 2001 From: myuqinurrohman Date: Mon, 10 Mar 2025 13:35:06 +0700 Subject: [PATCH] feat: edit cooperation proposal --- .../CooperationRequestController.php | 56 ++- .../Dashboard/DatatableController.php | 8 +- .../JournalistCooperationProposalRequest.php | 11 +- .../media-proposals/edit.blade.php | 334 ++++++++++++++++++ .../media-proposals/show.blade.php | 2 +- routes/web.php | 6 +- 6 files changed, 403 insertions(+), 14 deletions(-) create mode 100644 resources/views/dashboard/cooperation-requests/media-proposals/edit.blade.php diff --git a/app/Http/Controllers/Dashboard/CooperationRequestController.php b/app/Http/Controllers/Dashboard/CooperationRequestController.php index b678fbc..7483df1 100644 --- a/app/Http/Controllers/Dashboard/CooperationRequestController.php +++ b/app/Http/Controllers/Dashboard/CooperationRequestController.php @@ -107,7 +107,7 @@ public function proposalAction(JournalistCooperationProposalRequest $request, $i $createdCooperationProposal->journalists()->attach($validatedData['journalist_ids']); if ($createdCooperationProposal->journalists()->count() > 0) { - return redirect()->back()->with('success-status', 'Berhasil melakukan pengajuan kerjasama.'); + return redirect()->route('dashboard.cooperations.requests.index')->with('success-status', 'Berhasil melakukan pengajuan kerjasama.'); } else { return redirect()->back()->with('failed-status', 'Gagal melakukan pengajuan kerjasama'); } @@ -150,9 +150,6 @@ public function rejectAction(Request $request, $id){ } - // dd($mediaCooperation->pivot); - - // Pastikan data yang ingin diperbarui ada dan statusnya belum '3' if ($mediaCooperation->pivot->status != '3') { $affectedRows = $cooperation->media()->updateExistingPivot($mediaCooperation->id, [ 'status' => '2', @@ -169,4 +166,55 @@ public function rejectAction(Request $request, $id){ } } + + public function editProposal($id){ + $proposal = CooperationProposal::with(['cooperation', 'media', 'journalists'])->findOrFail(decrypt_id($id)); + + return view('dashboard.cooperation-requests.media-proposals.edit',[ + 'title' => 'Ubah Ajuan Kerjasama', + 'proposal' => $proposal, + 'selectedJournalists' => $proposal->journalists->pluck('id')->toArray() + ]); + } + + public function updateProposal(JournalistCooperationProposalRequest $request, $id){ + $validatedData = $request->validated(); + $validatedData['media_id'] = Auth::user()->company->media->id; + + $proposal = CooperationProposal::with(['cooperation', 'media', 'journalists'])->findOrFail(decrypt_id($id)); + $validatedData['cooperation_id'] = $proposal->cooperation_id; + + if($request->hasFile('attachment')){ + $validatedData['attachment'] = store_file($validatedData['attachment'], '/uploads/cooperation-proposals', 'public')['randomFileName']; + delete_file('app/public/uploads/cooperation-proposals/'.$proposal->image); + }else{ + $validatedData['attachment'] = $proposal->attachment; + } + + $proposal->update($validatedData); + + if($request->has('journalist_ids')){ + $proposal->journalists()->sync($validatedData['journalist_ids']); + } + + if ($proposal->journalists()->count() > 0) { + return redirect()->back()->with('success-status', 'Berhasil mengubah pengajuan kerjasama.'); + } else { + return redirect()->back()->with('failed-status', 'Gagal mengubah pengajuan kerjasama'); + } + + } + + public function destroyProposal($id){ + try { + $cooperationProposal = CooperationProposal::findOrFail(decrypt_id($id)); + delete_file('app/public/uploads/cooperation-proposals/'.$cooperationProposal->attachment); + $cooperationProposal->delete(); + + + return response()->json(['message' => 'Berhasil menghapus ajuan kerjasama.']); + } catch (\Exception $e) { + return response()->json(['message' => 'Gagal menghapus ajuan kerjasama.'], 500); + } + } } diff --git a/app/Http/Controllers/Dashboard/DatatableController.php b/app/Http/Controllers/Dashboard/DatatableController.php index 221be72..0d6a45f 100644 --- a/app/Http/Controllers/Dashboard/DatatableController.php +++ b/app/Http/Controllers/Dashboard/DatatableController.php @@ -746,7 +746,7 @@ public function cooperation(Request $request){ } if (is_role([1])) { - $dropdown .= '
  • Hapus
  • '; + $dropdown .= '
  • Hapus
  • '; } @@ -1052,9 +1052,9 @@ public function mediaProposal(Request $request){ $showUrl = route('dashboard.cooperations.requests.media.proposals.show', ['id' => encrypt_id($data->id)]); - $editUrl = route('dashboard.cooperations.edit', ['id' => encrypt_id($data->id)]); + $editUrl = route('dashboard.cooperations.requests.proposal.edit', ['id' => encrypt_id($data->id)]); - $deleteUrl = route('dashboard.cooperations.destroy', ['id' => encrypt_id($data->id)]); + $deleteUrl = route('dashboard.cooperations.requests.proposal.destroy', ['id' => encrypt_id($data->id)]); $dropdown = '
    - Kembali + Kembali
    diff --git a/routes/web.php b/routes/web.php index a85bb43..ae921e8 100644 --- a/routes/web.php +++ b/routes/web.php @@ -266,9 +266,9 @@ Route::post('/{id}/reject', 'rejectAction')->name('reject.action'); - Route::get('/{id}/edit', 'edit')->name('edit'); - Route::put('/{id}', 'update')->name('update'); - Route::delete('/{id}', 'destroy')->name('destroy'); + Route::get('/{id}/edit', 'editProposal')->name('proposal.edit'); + Route::put('/{id}', 'updateProposal')->name('proposal.update'); + Route::delete('/{id}', 'destroyProposal')->name('proposal.destroy'); }); Route::get('/data', [DatatableController::class, 'cooperationRequest'])->name('data');