'Manajemen Isu', 'classification' => $request->input('classification', null), 'sub_classification' => $request->input('sub_classification', null), 'location' => $request->input('location', null), 'sub_location' => $request->input('sub_location', null), 'government_agency' => $request->input('government_agency', null), 'media_monitoring' => $request->input('media_monitoring', null), 'issue' => $request->input('issue', null), 'response' => $request->input('response', null), 'year' => $request->input('year', null), 'month' => $request->input('month', null), 'date' => $request->input('date', null), 'start_date' => $request->input('start_date', null), 'end_date' => $request->input('end_date', null), 'user' => $request->input('user', null), 'locations' => Location::all(), 'sub_locations' => SubLocation::all(), 'classifications' => Classification::all(), 'sub_classifications' => SubClassification::all(), 'government_agencies' => GovernmentAgency::all(), 'users' => User::all(), ]); } public function create(Request $request) { return view('dashboard.issue-managements.create', [ 'title' => 'Tambah Manajemen Isu', 'locations' => Location::all(), 'classifications' => Classification::all(), 'governmentAgencies' => GovernmentAgency::all(), 'mediaMonitoring' => MediaMonitoring::with(['enhancer'])->find(decrypt_id($request->input('media_monitoring'))), 'mediaMonitoringId' => $request->input('media_monitoring') ?? null, ]); } public function store(IssueManagementRequest $request, $media_monitoring_id) { $validatedData = $request->validated(); $validatedData['media_monitoring_id'] = decrypt_id($media_monitoring_id); try { $createdIssueManagement = DB::transaction(function () use ($validatedData, $request) { $createdIssueManagement = IssueManagement::create($validatedData); $createdIssueManagement->governmentAgencies()->attach($request->input('government_agencies')); return $createdIssueManagement; }); if ($createdIssueManagement->governmentAgencies()->count() > 0) { return redirect()->back()->with('success-status', 'Berhasil menambahkan manajemen isu.'); } else { return redirect()->back()->with('failed-status', 'Gagal menambahkan manajemen isu'); } } catch (\Exception $e) { return redirect()->back()->with('failed-status', 'Gagal menambahkan manajemen isu'); } } public function edit(Request $request, $id) { $issueManagement = IssueManagement::with([ 'location', 'subLocation', 'classification', 'subClassification', 'mediaMonitoring', 'enhancer', ])->findOrFail(decrypt_id($id)); return view('dashboard.issue-managements.edit', [ 'title' => 'Ubah Manajemen Isu', 'locations' => Location::all(), 'classifications' => Classification::all(), 'governmentAgencies' => GovernmentAgency::all(), 'selectedGovernmentAgencies' => $issueManagement->governmentAgencies->pluck('id')->toArray(), 'issueManagement' => $issueManagement, 'mediaMonitoring' => MediaMonitoring::with(['enhancer'])->find($issueManagement->media_monitoring_id), 'mediaMonitoringId' => $request->input('media_monitoring') ?? null, ]); } public function update(IssueManagementRequest $request, $id) { $validatedData = $request->validated(); try { $issueManagement = IssueManagement::with([ 'location', 'subLocation', 'classification', 'subClassification', 'mediaMonitoring', 'enhancer', ])->findOrFail(decrypt_id($id)); $validatedData['media_monitoring_id'] = $issueManagement->media_monitoring_id; $issueManagement->update($validatedData); if ($request->has('government_agencies')) { $issueManagement->governmentAgencies()->sync($validatedData['government_agencies']); } } catch (\Exception $e) { return redirect()->back()->with('failed-status', 'Gagal mengubah manajemen isu'); } return redirect()->route('dashboard.issue.managements.show', ['id' => encrypt_id($issueManagement->id)])->with('success-status', 'Berhasil mengubah manajemen isu.'); } public function show($id) { $issueManagement = IssueManagement::with([ 'location', 'subLocation', 'classification', 'subClassification', 'mediaMonitoring', 'enhancer', ])->findOrFail(decrypt_id($id)); return view('dashboard.issue-managements.show', [ 'title' => 'Detail Manajemen Isu', 'issueManagement' => $issueManagement, 'mediaMonitoring' => MediaMonitoring::with(['enhancer'])->find($issueManagement->media_monitoring_id), ]); } public function destroy($id) { try { $issueManagement = IssueManagement::findOrFail(decrypt_id($id)); $issueManagement->governmentAgencies()->detach(); $issueManagement->delete(); return response()->json(['message' => 'Berhasil menghapus manajemen isu']); } catch (\Exception $e) { return response()->json(['message' => 'Gagal menghapus manajemen isu.'], 500); } } public function getSubLocations($location_id) { $subLocations = SubLocation::where('location_id', $location_id)->get(); return response()->json(['sub_locations' => $subLocations]); } public function getSubClassifications($location_id) { $subLocations = SubClassification::where('classification_id', $location_id)->get(); return response()->json(['sub_classifications' => $subLocations]); } public function filter(Request $request) { try { $filteredRequest = $request->except('_token'); $filterField = array_filter($filteredRequest, function ($value) { return filled($value); }); return redirect()->route('dashboard.issue.managements.index', $filterField); } catch (\Exception $e) { return redirect()->back()->with('status-failed', 'Gagal melakukan proses filter data.'); } } public function export(Request $request) { try { $classification = $request->input('classification', null); $sub_classification = $request->input('sub_classification', null); $location = $request->input('location', null); $sub_location = $request->input('sub_location', null); $government_agency = $request->input('government_agency', null); $issue = $request->input('issue', null); $response = $request->input('response', null); $year = $request->input('year', null); $month = $request->input('month', null); $date = $request->input('date', null); $start_date = $request->input('start_date', null); $end_date = $request->input('end_date', null); $user = $request->input('user', null); $formattedNow = Carbon::parse(now())->locale('id')->translatedFormat('d-m-Y'); return Excel::download(new IssueManagementExport( $classification, $sub_classification, $location, $sub_location, $government_agency, $issue, $response, $year, $month, $date, $start_date, $end_date, $user ), 'issue-managements-'.$formattedNow.'.xlsx'); } catch (\Exception $e) { return redirect()->back()->with('failed-status', 'Gagal melakukan proses export data.'); } } public function printData($id) { try { $issueManagement = IssueManagement::with([ 'location', 'subLocation', 'classification', 'subClassification', 'governmentAgencies', 'enhancer', 'mediaMonitoring', ])->findOrFail(decrypt_id($id)); $pdf = Pdf::loadView('dashboard.issue-managements.print', compact('issueManagement')); return $pdf->stream(slugify('manajemen isu '.$issueManagement->mediaMonitoring->code).'.pdf'); } catch (\Exception $e) { return redirect()->back()->with('failed-status', 'Gagal melakukan proses print data.'); } } }