Няма описание
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

UsersController.php 4.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Models\Pelaporan;
  4. use App\Models\User;
  5. use Illuminate\Http\Request;
  6. use Illuminate\Support\Facades\Hash;
  7. class UsersController extends Controller
  8. {
  9. public function index(Request $request)
  10. {
  11. // $users = User::all();
  12. $user = $request->user();
  13. if ($user->role == 'admin') {
  14. // Jika pengguna adalah admin, hitung total berdasarkan tindakan_id
  15. $laporan = Pelaporan::with('tindakan','user')->get();
  16. } elseif ($user->role == 'user') {
  17. // Jika pengguna adalah pengguna biasa, hitung riwayat pelaporan milik pengguna tersebut
  18. $riwayat = Pelaporan::where('user_id', $user->id)->get();
  19. // Menghitung total riwayat pelaporan yang dimiliki oleh pengguna
  20. $laporan = $riwayat->with('tindakan','user')->count();
  21. }
  22. $users = User::query();
  23. if ($request->has('search')) {
  24. $users->where('name', 'LIKE', '%' . $request->search . '%');
  25. }
  26. $users = $users->get();
  27. return view('admin.user.index', compact('users', 'laporan'));
  28. }
  29. public function create()
  30. {
  31. $laporan = Pelaporan::with('tindakan','user')->get();
  32. return view('admin.user.create',compact('laporan'));
  33. }
  34. public function store(Request $request)
  35. {
  36. $request->validate([
  37. 'name' => 'required',
  38. 'email' => 'required|email|unique:users',
  39. 'password' => 'required|min:8|confirmed', // Menambahkan aturan confirmed untuk konfirmasi password
  40. 'role' => 'required',
  41. ], [
  42. 'name.required' => 'Nama wajib diisi',
  43. 'email.required' => 'Email wajib diisi',
  44. 'email.email' => 'Silahkan masukkan email yang valid',
  45. 'email.unique' => 'Email sudah pernah digunakan, silahkan pilih email yang lain',
  46. 'password.required' => 'Password wajib diisi',
  47. 'password.min' => 'Minimum password yang diizinkan 8 karakter',
  48. 'password.confirmed' => 'Konfirmasi password tidak sesuai dengan password',
  49. 'role.required' => 'Role wajib diisi',
  50. ]);
  51. $data = [
  52. 'name' =>$request->name,
  53. 'email' =>$request->email,
  54. 'role' =>$request->role,
  55. 'password' => Hash::make($request->password)
  56. ];
  57. User::create($data);
  58. return redirect()->route('user.index')->with('success', 'User berhasil ditambahkan.');
  59. }
  60. public function edit($id)
  61. {
  62. $laporan = Pelaporan::with('tindakan','user')->get();
  63. $users = User::find($id);
  64. return view('admin.user.update', compact('users', 'laporan'));
  65. }
  66. public function update(Request $request, $id)
  67. {
  68. $request->validate([
  69. 'name' => 'required',
  70. 'email' => 'required|email|unique:users,email,' . $id,
  71. 'role' => 'required',
  72. ], [
  73. 'name.required' => 'Nama wajib diisi',
  74. 'email.required' => 'Email wajib diisi',
  75. 'email.email' => 'Silahkan masukkan email yang valid',
  76. 'email.unique' => 'Email sudah pernah digunakan, silahkan pilih email yang lain',
  77. 'role.required' => 'Role wajib diisi',
  78. ]);
  79. $user = User::find($id);
  80. if (!$user) {
  81. return redirect()->route('user.index')->with('error', 'User tidak ditemukan.');
  82. }
  83. $user->name = $request->name;
  84. $user->email = $request->email;
  85. $user->role = $request->role;
  86. // Periksa apakah password diisi sebelum diupdate
  87. if ($request->filled('password')) {
  88. $request->validate([
  89. 'password' => 'required|min:8|confirmed',
  90. ], [
  91. 'password.required' => 'Password wajib diisi',
  92. 'password.min' => 'Minimum password yang diizinkan 8 karakter',
  93. 'password.confirmed' => 'Konfirmasi password tidak sesuai dengan password',
  94. ]);
  95. $user->password = Hash::make($request->password); // Gunakan Hash::make untuk mengenkripsi password baru
  96. }
  97. $user->save();
  98. return redirect()->route('user.index')->with('success', 'User berhasil diperbarui.');
  99. }
  100. public function destroy($id)
  101. {
  102. $user = User::find($id);
  103. $user->delete();
  104. return redirect()->route('user.index')->with('success', 'User berhasil dihapus.');
  105. }
  106. }