'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){ $user = User::with(['role', 'company.media.journalists'])->findOrFail(decrypt_id($id)); $viewData = [ 'title' => 'Detail Pengguna', 'user' => $user, 'roles' => Role::all() ]; if($user->role_id === '3'){ $viewData['company'] = $user->company; $viewData['media'] = $user->company->media; $viewData['journalists'] = $user->company->media->journalists; } return view('dashboard.users.show', $viewData); } 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); } } }