'Pengguna', 'role' => $request->input('role', null) ]); } public function create(){ return view('dashboard.users.create', [ 'title' => 'Tambah Pengguna', 'roles' => Role::all() ]); } public function store(UserRequest $request){ $validatedData = $request->validated(); $createdUser = User::create($validatedData); if($createdUser){ return redirect()->back()->with('success-status', 'Berhasil menambahkan pengguna.'); }else{ return redirect()->back()->with('failed-status', 'Gagal menambahkan pengguna.'); } } public function edit($id){ $user = User::with(['role'])->findOrFail(decrypt_id($id)); return view('dashboard.users.edit', [ 'title' => 'Ubah Pengguna', 'user' => $user, 'roles' => Role::all() ]); } public function update(UserRequest $request, $id){ $validatedData = $request->validated(); if (isset($validatedData['password']) && !empty($validatedData['password'])) { $validatedData['password'] = $request->input('password'); } else { unset($validatedData['password']); } $user = User::findOrFail(decrypt_id($id)); $updatedUser = $user->update($validatedData); if($updatedUser){ return redirect()->back()->with('success-status', 'Berhasil mengubah pengguna.'); }else{ return redirect()->back()->with('failed-status', 'Gagal mengubah pengguna.'); } } public function show($id, $type){ $user = User::with(['role', 'company.media.journalists'])->findOrFail(decrypt_id($id)); $data = [ 'title' => 'Profile Pengguna', 'user' => $user, 'roles' => Role::all(), 'page' => 'show-user', '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 resetPassword($id){ $user = User::with(['role'])->findOrFail(decrypt_id($id)); return view('dashboard.users.reset-password',[ 'title' => 'Reset Password', 'user' => $user ]); } public function resetPasswordAction(ResetPasswordRequest $request, $id){ $validatedData = $request->validated(); $updatedUser = User::findOrFail(decrypt_id($id))->update([ 'password' => $validatedData['password'] ]); if($updatedUser){ return redirect()->back()->with('success-status', 'Berhasil mereset password pengguna.'); }else{ return redirect()->back()->with('failed-status', 'Gagal mereset password pengguna.'); } } public function statusAction($id, $action){ $user = User::findOrFail(decrypt_id($id)); if($user->status === '0'){ if($action == 'accept'){ $user->update([ 'status' => '1' ]); }else if($action == 'reject'){ $user->update([ 'status' => '3' ]); } } } public function destroy($id) { try { $user = User::with(['company.media.journalists'])->findOrFail(decrypt_id($id)); if ($user->role_id == '3') { if ($user->company) { $company = $user->company; if ($company->media) { $media = $company->media; if ($media->journalists) { $media->journalists->delete(); } $media->delete(); } $company->delete(); } } $user->delete(); return response()->json(['message' => 'Berhasil menghapus user beserta data terkait.']); } catch (\Exception $e) { return response()->json(['message' => 'Gagal menghapus user atau data terkait.'], 500); } } public function profile($type){ $data = [ 'title' => 'Detail Akun', 'user' => Auth::user(), 'roles' => Role::all(), 'page' => 'profile', 'type' => $type ]; if($type === 'account'){ return view('dashboard.users.profiles.account', $data); }elseif($type === 'login-activities'){ $data['loginActivities'] = LoginHistory::where('user_id', Auth::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); } } }