From 5a21e6a2b2beeded38a28ea3a364eef3273a009f Mon Sep 17 00:00:00 2001 From: Yoga Pangestu Date: Tue, 14 Oct 2025 11:33:13 +0700 Subject: [PATCH] fix(report): error after create report --- .../Dashboard/CompanyController.php | 82 ++++++++++++------- .../Dashboard/MediaCooperationController.php | 20 ++--- .../Dashboard/ReportController.php | 7 +- 3 files changed, 63 insertions(+), 46 deletions(-) diff --git a/app/Http/Controllers/Dashboard/CompanyController.php b/app/Http/Controllers/Dashboard/CompanyController.php index 1cbcec7..b902a9c 100644 --- a/app/Http/Controllers/Dashboard/CompanyController.php +++ b/app/Http/Controllers/Dashboard/CompanyController.php @@ -6,6 +6,7 @@ use App\Http\Controllers\Controller; use App\Http\Requests\CompanyRequest; use App\Mail\AccountVerification; +use App\Models\Announcement; use App\Models\Company; use App\Models\LoginHistory; use App\Models\Role; @@ -75,7 +76,6 @@ public function editRequestAction(Request $request) 'edit_status' => '1', 'edit_description' => $validatedData['edit_description'], ]); - } catch (\Exception $e) { Log::error('Company (editRequestAction): '.$e); @@ -159,7 +159,6 @@ public function update(CompanyRequest $request) 'edit_status' => '0', ]); }); - } catch (\Exception $e) { Log::error('Company (update): '.$e); @@ -204,7 +203,6 @@ public function show($id, $type) default: abort(404); - } } @@ -274,7 +272,6 @@ public function process(Request $request, $id, $type) public function processAcceptAction(Request $request, $id, $type, $category) { - try { $user = User::with(['company'])->findOrFail(decrypt_id($id)); @@ -282,21 +279,34 @@ public function processAcceptAction(Request $request, $id, $type, $category) abort(404); } - if (is_role(['1']) && in_array($category, ['account-status', 'edit-request'])) { + if (! is_role(['1'])) { + abort(403); + } + + DB::transaction(function () use ($user, $category) { if ($category === 'account-status' && $user->status === '0') { - $user->update([ - 'status' => '1', + $user->update(['status' => '1']); + + $announcement = Announcement::create([ + 'headline' => 'Pendaftaran Media Anda Telah Disetujui!', + 'content' => 'Selamat! Permohonan pendaftaran media Anda telah disetujui oleh tim kami.', + 'enhancer_id' => auth()->id(), ]); - Mail::to($user->email)->send(new AccountVerification($user, 'accepted')); + $user->announcements()->attach($announcement->id); + + DB::afterCommit(fn () => Mail::to($user->email)->send( + new AccountVerification($user, 'accepted') + ) + ); } elseif ($category === 'edit-request' && $user->company->edit_status === '1') { - $user->company->update([ - 'edit_status' => '2', - ]); + $user->company->update(['edit_status' => '2']); } - } + }); + + return response()->json(['success' => true]); } catch (\Exception $e) { - Log::error('Company (processAcceptAction): '.$e); + Log::error('Company (processAcceptAction): '.$e->getMessage()); return response()->json([ 'failed-status' => 'Gagal menyetujui'.($category === 'edit-request' ? ' permohonan edit' : '').' perusahaan.', @@ -306,6 +316,11 @@ public function processAcceptAction(Request $request, $id, $type, $category) public function processRejectAction(Request $request, $id, $type, $category) { + $validatedData = $request->validate([ + 'rejection_reason' => ['required'], + ], [ + 'rejection_reason.required' => 'Alasan penolakan wajib diisi.', + ]); try { $user = User::with(['company'])->findOrFail(decrypt_id($id)); @@ -314,38 +329,48 @@ public function processRejectAction(Request $request, $id, $type, $category) abort(404); } - if (is_role(['1']) && in_array($category, ['account-status', 'edit-request'])) { - - $validatedData = $request->validate([ - 'rejection_reason' => ['required'], - ], [ - 'rejection_reason.required' => 'Alasan penolakan wajib diisi.', - ]); + if (! is_role(['1'])) { + abort(403); + } + DB::transaction(function () use ($user, $category, $validatedData) { if ($category === 'account-status' && $user->status === '0') { - $user->update([ - 'status' => '2', + $announcement = Announcement::create([ + 'headline' => 'Pendaftaran Media Anda Belum Dapat Disetujui', + 'content' => $validatedData['rejection_reason'], + 'enhancer_id' => auth()->id(), ]); + $user->announcements()->attach($announcement->id); + + $user->update(['status' => '2']); $user->company->update([ 'rejection_reason' => $validatedData['rejection_reason'], ]); - Mail::to($user->email)->send(new AccountVerification($user, 'rejected', $validatedData['rejection_reason'])); + DB::afterCommit( + fn () => Mail::to($user->email)->send( + new AccountVerification($user, 'rejected', $validatedData['rejection_reason']) + ) + ); } elseif ($category === 'edit-request' && $user->company->edit_status === '1') { $user->company->update([ 'edit_status' => '3', 'edit_rejection_reason' => $validatedData['rejection_reason'], ]); } - } + }); + + return redirect() + ->route('dashboard.companies.index') + ->with('success-status', 'Berhasil menolak'.($category === 'edit-request' ? ' permohonan edit' : '').' perusahaan.'); } catch (\Exception $e) { - Log::error('Company (processRejectAction): '.$e); + Log::error('Company (processRejectAction): '.$e->getMessage()); - return redirect()->back()->with('faileds-status', 'Gagal melakukan proses.'); + return redirect() + ->back() + ->with('faileds-status', 'Gagal melakukan proses.'); } - - return redirect()->route('dashboard.companies.index')->with('success-status', 'Berhasil menolak'.($category === 'edit-request' ? ' permohonan edit' : '').' perusahaan.'); } public function export(Request $request) @@ -385,7 +410,6 @@ public function filter(Request $request) return redirect()->back()->with('failed-status', 'Gagal melakukan filter data.'); } - } public function printData($id) diff --git a/app/Http/Controllers/Dashboard/MediaCooperationController.php b/app/Http/Controllers/Dashboard/MediaCooperationController.php index 0fbe62c..e6d1d57 100644 --- a/app/Http/Controllers/Dashboard/MediaCooperationController.php +++ b/app/Http/Controllers/Dashboard/MediaCooperationController.php @@ -163,7 +163,6 @@ public function update(CooperationRequest $request, $id) } catch (\Exception $e) { return redirect()->back()->with('failed-status', 'Gagal mengubah kerja sama'); } - } public function show($id) @@ -190,7 +189,6 @@ public function export(Request $request) } catch (\Exception $e) { return redirect()->back()->with('failed-status', 'Gagal melakukan proses export data.'); } - } public function filter(Request $request) @@ -207,7 +205,6 @@ public function filter(Request $request) } catch (\Exception $e) { return redirect()->back()->with('status-failed', 'Gagal melakukan proses filtering data.'); } - } public function mediaProposal($id) @@ -259,7 +256,6 @@ public function mediaProposalAccept($id, $proposalId) } catch (\Exception $e) { return redirect()->back()->with('failed-status', 'Gagal menyetujui pengajuan kerja sama'); } - } public function mediaProposalReject($id, $proposalId) @@ -310,7 +306,6 @@ public function mediaProposalRejectAction(Request $request, $id, $proposalId) } catch (\Exception $e) { return redirect()->back()->with('failed-status', 'Gagal menolak pengajuan kerja sama'); } - } public function process($id, $process, $paramMediaId = null) @@ -415,16 +410,15 @@ public function process($id, $process, $paramMediaId = null) // Tab laporan } elseif ($process === 'reports') { $data['title'] = 'Laporan'; - + // dd($data['mediaOrder']); if (is_role(['3'])) { - $data['mediaOrderPivot'] = $data['mediaOrder']->media->where('id', $data['mediaId'])->first()->pivot; + $data['mediaOrderPivot'] = $data['mediaOrder']?->media->where('id', $data['mediaId'])->first()->pivot; $data['reporterMediaId'] = Auth::user()->company->media->id; - // Can Commented - // $reports = $data['mediaOrder']->reports->filter(function ($reports) use ($data) { - // return $reports->media_id == Auth::user()->company->media->id; - // }); + $reports = $data['mediaOrder']->reports->filter(function ($reports) { + return $reports->media_id == Auth::user()->company->media->id; + }); // if(filled($reports)){ // $data['isAllReportsAccepted'] = $reports->every(function ($item) { @@ -436,6 +430,7 @@ public function process($id, $process, $paramMediaId = null) // $data['isHaveReports'] = false; // } // Can Commented + // dd($reports); $reportCount = $reports->count(); $data['reportCount'] = $reportCount; @@ -554,7 +549,6 @@ public function process($id, $process, $paramMediaId = null) } else { abort(404); } - } elseif ($process === 'completions') { $data['title'] = 'Penyelesaian'; @@ -568,7 +562,6 @@ public function process($id, $process, $paramMediaId = null) } else { abort(404); } - } else { abort(404); } @@ -594,7 +587,6 @@ public function destroy($id) } else { return response()->json(['message' => 'Kerja Sama sudah memiliki media order.'], 500); } - } catch (\Exception $e) { return response()->json(['message' => 'Gagal menghapus ajuan kerja sama.'], 500); } diff --git a/app/Http/Controllers/Dashboard/ReportController.php b/app/Http/Controllers/Dashboard/ReportController.php index 8a0ac6f..991213d 100644 --- a/app/Http/Controllers/Dashboard/ReportController.php +++ b/app/Http/Controllers/Dashboard/ReportController.php @@ -7,6 +7,7 @@ use App\Http\Requests\ReportRequest; use App\Models\Announcement; use App\Models\Media; +use App\Models\Order; use App\Models\Report; use Barryvdh\DomPDF\Facade\Pdf; use Carbon\Carbon; @@ -40,6 +41,8 @@ public function create($id) public function store(ReportRequest $request, $id) { + $order = Order::findOrFail(decrypt_id($id)); + $validatedData = $request->validated(); try { @@ -52,7 +55,7 @@ public function store(ReportRequest $request, $id) return redirect()->back()->with('failed-status', 'Gagal menambahkan laporan.'); } - return redirect()->route('dashboard.cooperations.process', ['id' => $id, 'process' => 'reports'])->with('success-status', 'Berhasil menambahkan laporan.'); + return redirect()->route('dashboard.cooperations.process', ['id' => encrypt_id($order->cooperation_id), 'process' => 'reports'])->with('success-status', 'Berhasil menambahkan laporan.'); } public function edit($mediaOrderId, $id) @@ -322,11 +325,9 @@ public function export(Request $request) return $pdf->stream(slugify('laporan bukti tayang ').'.pdf'); } - } catch (\Exception $e) { return redirect()->back()->with('failed-status', 'Gagal melakukan proses export data.'); } - } public function singlePrint()