Ei kuvausta
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.

ApresiasiController.php 5.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Models\Apresiasi;
  4. use App\Models\Pelaporan;
  5. use Illuminate\Http\Request;
  6. use Illuminate\Support\Facades\Auth;
  7. class ApresiasiController extends Controller
  8. {
  9. public function userIndex(Request $request){
  10. $user = $request->user();
  11. if ($user->role == 'admin') {
  12. // Jika pengguna adalah admin, hitung total berdasarkan tindakan_id
  13. $laporan = Pelaporan::with('tindakan','user')->get();
  14. } elseif ($user->role == 'user') {
  15. // Jika pengguna adalah pengguna biasa, hitung riwayat pelaporan milik pengguna tersebut
  16. $laporan = Pelaporan::where('user_id', $user->id)->get();
  17. // Menghitung total riwayat pelaporan yang dimiliki oleh pengguna
  18. $count = $laporan->count();
  19. }
  20. $apresiasi = Apresiasi::query();
  21. if ($request->has('search')) {
  22. $apresiasi->where('judul', 'LIKE', '%' . $request->search . '%');
  23. }
  24. $apresiasi = $apresiasi->get();
  25. return view('users.apresiasi.index', compact('laporan', 'apresiasi'));
  26. }
  27. public function userCreate()
  28. {
  29. $laporan = Pelaporan::with('tindakan','user')->get();
  30. return view('users.apresiasi.create',compact('laporan'));
  31. }
  32. public function userStore(Request $request)
  33. {
  34. $request->validate([
  35. 'judul' => 'required',
  36. 'deskripsi' => 'required',
  37. 'lokasi' => 'required',
  38. 'tanggal' => 'required',
  39. 'foto' => 'nullable|image|mimes:jpeg,png,jpg,gif,pdf',
  40. ],[
  41. 'judul.required' => 'Judul Wajib Diisi',
  42. 'deskripsi.required' => 'Deskripsi Wajib Diisi',
  43. 'lokasi.required' => 'Lokasi Wajib Diisi',
  44. 'tanggal.required' => 'Tanggal Wajib Diisi',
  45. 'foto.nullable' => 'Foto Tidak Boleh Kosong',
  46. 'foto.image' => 'Foto Harus Berupa Image ',
  47. 'foto.mimes' => 'Foto Harus JPEG, PNG, JPG, GIF, PDF',
  48. ]);
  49. $apresiasi = new Apresiasi();
  50. $apresiasi->judul = $request->input('judul');
  51. $apresiasi->deskripsi = $request->input('deskripsi');
  52. $apresiasi->tanggal = $request->input('tanggal');
  53. $apresiasi->lokasi = $request->input('lokasi');
  54. $apresiasi->user_id = Auth::id(); // Set the authenticated user's ID
  55. if ($request->hasFile('foto')) {
  56. $fotos = time() . '.' . $request->foto->extension();
  57. $request->foto->move(public_path('foto'), $fotos);
  58. $apresiasi->foto = $fotos;
  59. }
  60. $apresiasi->save();
  61. return redirect()->route('apresiasi.userIndex')->with('success', 'Pelaporan Apresiasi berhasil disimpan.');
  62. }
  63. public function userEdit($id)
  64. {
  65. $laporan = Pelaporan::with('tindakan','user')->get();
  66. $apresiasi = Apresiasi::find($id);
  67. return view('users.apresiasi.update', compact('apresiasi', 'laporan'));
  68. }
  69. public function userUpdate(Request $request, $id)
  70. {
  71. $request->validate([
  72. 'judul' => 'required',
  73. 'deskripsi' => 'required',
  74. 'lokasi' => 'required',
  75. 'tanggal' => 'required',
  76. 'foto' => 'nullable|image|mimes:jpeg,png,jpg,gif,pdf',
  77. ],[
  78. 'judul.required' => 'Judul Wajib Diisi',
  79. 'deskripsi.required' => 'Deskripsi Wajib Diisi',
  80. 'lokasi.required' => 'Lokasi Wajib Diisi',
  81. 'tanggal.required' => 'Tanggal Wajib Diisi',
  82. 'foto.nullable' => 'Foto Tidak Boleh Kosong',
  83. 'foto.image' => 'Foto Harus Berupa Image ',
  84. 'foto.mimes' => 'Foto Harus JPEG, PNG, JPG, GIF, PDF',
  85. ]);
  86. $apresiasi = Apresiasi::find($id);
  87. $apresiasi->update($request->all());
  88. if ($request->hasFile('foto')) {
  89. $fotoPath = $request->file('foto')->store('uploads');
  90. $apresiasi->foto = $fotoPath;
  91. $apresiasi->save();
  92. }
  93. return redirect()->route('apresiasi.userIndex')->with('success', 'Pelaporan Apresiasi berhasil diperbarui.');
  94. }
  95. public function userDestroy($id)
  96. {
  97. $apresiasi = Apresiasi::find($id);
  98. $apresiasi->delete();
  99. return redirect()->route('apresiasi.userIndex')->with('success', 'Pelaporan Apresiasi berhasil dihapus.');
  100. }
  101. public function userShow(Request $request, $id){
  102. $laporan = Pelaporan::with('tindakan','user')->get();
  103. $apresiasi = Apresiasi::find($id);
  104. return view('users.apresiasi.show', compact( 'apresiasi','laporan'));
  105. }
  106. public function adminIndex(Request $request)
  107. {
  108. $user = $request->user();
  109. if ($user->role == 'admin') {
  110. // Jika pengguna adalah admin, hitung total berdasarkan tindakan_id
  111. $laporan = Pelaporan::with('tindakan','user')->get();
  112. } elseif ($user->role == 'user') {
  113. // Jika pengguna adalah pengguna biasa, hitung riwayat pelaporan milik pengguna tersebut
  114. $laporan = Pelaporan::where('user_id', $user->id)->get();
  115. // Menghitung total riwayat pelaporan yang dimiliki oleh pengguna
  116. $count = $laporan->count();
  117. }
  118. $apresiasi = Apresiasi::query();
  119. if ($request->has('search')) {
  120. $apresiasi->where('judul', 'LIKE', '%' . $request->search . '%');
  121. }
  122. $apresiasi = $apresiasi->get();
  123. return view('admin.apresiasi.index', compact('laporan', 'apresiasi'));
  124. }
  125. public function adminShow(Request $request, $id){
  126. $laporan = Pelaporan::with('tindakan','user')->get();
  127. $apresiasi = Apresiasi::find($id);
  128. return view('admin.apresiasi.show', compact( 'apresiasi','laporan'));
  129. }
  130. public function adminDestroy($id)
  131. {
  132. $apresiasi = Apresiasi::find($id);
  133. $apresiasi->delete();
  134. return redirect()->route('apresiasi.adminIndex')->with('success', 'Pelaporan Apresiasi berhasil dihapus.');
  135. }
  136. }