'Data Media', 'type' => $request->input('type', null), 'classification' => $request->input('classification', null), 'status' => $request->input('status', null), 'edit_status' => $request->input('edit_status', null), 'address' => $request->input('address', null), 'register_year' => $request->input('register_year', null), 'register_month' => $request->input('register_month', null), 'register_date' => $request->input('register_date', null), ]); }else if(is_role(['3'])){ $user = User::with(['role', 'company.media.journalists'])->findOrFail(Auth::id()); $data = [ 'title' => 'Data Media', 'user' => $user, ]; return view('dashboard.media.index', $data); } } public function editRequest(){ if(!in_array(Auth::user()->company->media->edit_status, ['0', '3'])){ abort(404); } return view('dashboard.media.edit-request', [ 'title' => 'Permohonan Ubah Data Media' ]); } public function editRequestAction(Request $request){ if(!in_array(Auth::user()->company->media->edit_status, ['0', '3'])){ abort(404); } $validatedData = $request->validate([ 'edit_description' => ['required'], ], [ 'edit_description.required' => 'Deskripsi wajib diisi.', ]); if(!Auth::check()){ abort(404); } $user = User::with(['company.media'])->findOrFail(Auth::id()); $updatedMedia = $user->company->media->update([ 'edit_status' => '1', 'edit_description' => $validatedData['edit_description'] ]); if($updatedMedia){ return redirect()->route('dashboard.media.index')->with('success-status', 'Berhasil melakukan permohonan edit data media.'); }else{ return redirect()->route('dashboard.media.index')->with('failed-status', 'Gagal melakukan permohonan edit data media.'); } } public function edit(){ if(!in_array(Auth::user()->company->media->edit_status, ['2'])){ abort(404); } $user = User::with(['role', 'company.media.journalists'])->findOrFail(Auth::id()); return view('dashboard.media.edit', [ 'title' => 'Ubah Data Media', 'user' => $user ]); } public function update(MediaRequest $request){ if(!in_array(Auth::user()->company->media->edit_status, ['2'])){ abort(404); } $validatedData = $request->validated(); $media = User::with(['company.media'])->findOrFail(Auth::id())->company->media; $fileFieldMap = [ 'media_journalism_organization_doc' => 'journalism_organization_doc', 'media_press_council_certificate_doc' => 'press_council_certificate_doc', ]; $mediaFileNames = []; foreach ($fileFieldMap as $requestKey => $dbField) { if ($request->hasFile($requestKey) && filled($validatedData[$requestKey])) { $mediaFileNames[$requestKey] = store_file($validatedData[$requestKey], '/uploads/media', 'public')['randomFileName']; } else { $mediaFileNames[$requestKey] = $media->{$dbField}; } } $updatedMedia = $media->update([ 'name' => $validatedData['media_name'], 'address' => $validatedData['media_address'], 'link' => $validatedData['media_link'], 'type' => $validatedData['media_type'], 'classification' => $validatedData['media_classification'], 'journalism_organization' => $validatedData['media_journalism_organization'], 'journalism_organization_doc' => $mediaFileNames['media_journalism_organization_doc'], 'press_council_certificate' => $validatedData['media_press_council_certificate'], 'press_council_certificate_doc' => $mediaFileNames['media_press_council_certificate_doc'], 'edit_description' => null, 'edit_status' => '0', ]); if($updatedMedia){ return redirect()->route('dashboard.media.index')->with('success-status', 'Berhasil mengubah data media.'); }else{ return redirect()->route('dashboard.media.index')->with('failed-status', 'Gagal mengubah data media.'); } } public function show($id, $type){ $user = User::with(['role', 'company.media.journalists'])->findOrFail(decrypt_id($id)); $data = [ 'title' => 'Data Media', 'user' => $user, 'roles' => Role::all(), 'page' => 'media', 'purpose' => 'show', 'idnPage' => 'media', 'route' => 'media', 'type' => $type ]; if($type === 'account'){ return view('dashboard.users.profiles.account', $data); }elseif($type === 'login-activities'){ $data['loginActivities'] = LoginHistory::where('user_id', $user->id)->orderByDesc('id')->simplePaginate(20); return view('dashboard.users.profiles.login-activity', $data); }elseif($type === 'company'){ return view('dashboard.users.profiles.company', $data); }elseif($type === 'media'){ return view('dashboard.users.profiles.media', $data); }elseif($type === 'journalists'){ return view('dashboard.users.profiles.journalists', $data); } } public function destroy(){} public function process(Request $request, $id, $type){ $user = User::with(['role', 'company.media.journalists'])->findOrFail(decrypt_id($id)); if($request->query('category') && !in_array($request->query('category'), ['account-status', 'edit-request'])){ abort(404); } $data = [ 'title' => 'Data Media', 'user' => $user, 'roles' => Role::all(), 'page' => 'media', 'purpose' => 'process', 'idnPage' => 'media', 'route' => 'media', 'type' => $type, 'category' => $request->query('category', null) ]; if($type === 'account'){ return view('dashboard.users.profiles.account', $data); }elseif($type === 'login-activities'){ $data['loginActivities'] = LoginHistory::where('user_id', $user->id)->orderByDesc('id')->simplePaginate(20); return view('dashboard.users.profiles.login-activity', $data); }elseif($type === 'company'){ return view('dashboard.users.profiles.company', $data); }elseif($type === 'media'){ return view('dashboard.users.profiles.media', $data); }elseif($type === 'journalists'){ return view('dashboard.users.profiles.journalists', $data); } } public function processAcceptAction(Request $request, $id, $type, $category){ $user = User::with(['company'])->findOrFail(decrypt_id($id)); if(!in_array($category, ['account-status', 'edit-request']) || !is_role(['1'])){ abort(404); } if(is_role(['1']) && $category === 'edit-request'){ $user->company->media->update([ 'edit_status' => '2' ]); } return response()->json([ 'message' => 'Berhasil menyetujui permohonan edit media.' ]); } public function processRejectAction(Request $request, $id, $type, $category){ $user = User::with(['company'])->findOrFail(decrypt_id($id)); if(!in_array($category, ['account-status', 'edit-request']) || !is_role(['1'])){ abort(404); } if(is_role(['1'])){ $validatedData = $request->validate([ 'rejection_reason' => ['required'], ], [ 'rejection_reason.required' => 'Alasan penolakan wajib diisi.', ]); if($category === 'edit-request' && $user->company->media->edit_status === '1'){ $user->company->media->update([ 'edit_status' => '3', 'edit_rejection_reason' => $validatedData['rejection_reason'] ]); } } return redirect()->route('dashboard.media.index')->with('success-status', 'Berhasil menolak permohonan edit media.'); } public function export(Request $request) { $type = $request->input('type', null); $classification = $request->input('classification', null); $status = $request->input('status', null); $edit_status = $request->input('edit_status', null); $address = $request->input('address', null); $register_year = $request->input('register_year', null); $register_month = $request->input('register_month', null); $register_date = $request->input('register_date', null); $formattedNow = Carbon::parse(now())->locale('id')->translatedFormat('d-m-Y'); return Excel::download(new MediaExport($type, $classification, $status, $edit_status, $address, $register_year, $register_month, $register_date), 'media-'.$formattedNow.'.xlsx'); } public function filter(Request $request){ $filteredRequest = $request->except('_token'); $filterField = array_filter($filteredRequest, function ($value) { return filled($value); }); return redirect()->route('dashboard.media.index', $filterField); } }