diff --git a/app/Http/Controllers/AdminDashboardController.php b/app/Http/Controllers/AdminDashboardController.php index 4d9ab34..cf7f995 100644 --- a/app/Http/Controllers/AdminDashboardController.php +++ b/app/Http/Controllers/AdminDashboardController.php @@ -14,7 +14,7 @@ public function index() // Pastikan ada data sebelum mencoba mengambil item acak $randomLandingPage = $allLandingPages->isEmpty() ? null : $allLandingPages->random(); - $randomLandingPages = $allLandingPages->isEmpty() ? collect() : $allLandingPages->random(min($allLandingPages->count(), 5)); + $randomLandingPages = $allLandingPages->isEmpty() ? collect() : $allLandingPages->random(min($allLandingPages->count(), 6)); return view('admin.dashboard', [ // Pastikan nama view sesuai dengan yang Anda gunakan 'randomLandingPage' => $randomLandingPage, diff --git a/app/Http/Controllers/AdminDataKursusController.php b/app/Http/Controllers/AdminDataKursusController.php index ef7c7c9..d7d7e6d 100644 --- a/app/Http/Controllers/AdminDataKursusController.php +++ b/app/Http/Controllers/AdminDataKursusController.php @@ -19,7 +19,7 @@ class AdminDataKursusController extends Controller public function dataKursus() { // Mengambil semua data kursus dari model DataKursus - $courses = DataKursus::paginate(5); + $courses = DataKursus::paginate(10); // Mengambil gambar untuk setiap course, jika ada foreach ($courses as $course) { @@ -40,7 +40,6 @@ public function create() public function store(Request $request) { try { - // Perbarui aturan validasi $validator = Validator::make($request->all(), [ 'nama_kursus' => 'required', 'img' => 'required|file|mimes:jpeg,png,jpg|max:2048', @@ -49,12 +48,29 @@ public function store(Request $request) 'metode' => 'required', 'fasilitas' => 'required', 'lokasi' => 'required', - 'latitude' => 'nullable', // Ubah aturan validasi - 'longitude' => 'nullable', // Ubah aturan validasi - 'popular' => 'required', // Ubah aturan validasi - 'img_konten.*' => 'required|file|mimes:jpeg,png,jpg|max:2048', + 'latitude' => 'required', // Ubah menjadi wajib diisi + 'longitude' => 'required', // Ubah menjadi wajib diisi + 'popular' => 'required', + 'img_konten.*' => 'nullable|file', // Gambar konten tetap opsional + ], [ + 'nama_kursus.required' => 'Nama kursus wajib diisi.', + 'img.required' => 'Gambar utama wajib di-upload.', + 'img.file' => 'File yang di-upload harus berupa gambar.', + 'img.mimes' => 'Gambar harus berekstensi jpeg, png, atau jpg.', + 'img.max' => 'Ukuran gambar tidak boleh lebih dari 2MB.', + 'deskripsi.required' => 'Deskripsi wajib diisi.', + 'paket.required' => 'Paket wajib diisi.', + 'metode.required' => 'Metode wajib diisi.', + 'fasilitas.required' => 'Fasilitas wajib diisi.', + 'lokasi.required' => 'Lokasi wajib diisi.', + 'latitude.required' => 'Latitude wajib diisi.', // Pesan error custom + 'longitude.required' => 'Longitude wajib diisi.', // Pesan error custom + 'popular.required' => 'Status popular wajib diisi.', + 'img_konten.*.nullable' => 'Gambar konten bersifat opsional.', + 'img_konten.*.file' => 'File yang di-upload harus berupa gambar.', ]); + // Cek apakah validasi gagal if ($validator->fails()) { return redirect()->back()->withErrors($validator)->withInput(); @@ -109,21 +125,38 @@ public function edit($id) public function update(Request $request, $id) { - try { - $request->validate([ - 'nama_kursus' => 'required|string|max:255', - 'deskripsi' => 'required|string', - 'img' => 'nullable|image|max:2048', - 'img_konten.*' => 'nullable|image|max:2048', - 'latitude' => 'required|numeric', - 'longitude' => 'nullable|numeric', - 'popular' => 'required|string', - 'paket' => 'nullable|string', - 'metode' => 'nullable|string', - 'fasilitas' => 'nullable|string', - 'lokasi' => 'nullable|string', - ]); + // Validasi request + $request->validate([ + 'nama_kursus' => 'required|string|max:255', + 'deskripsi' => 'required|string', + 'img' => 'nullable|image|max:2048', + 'img_konten.*' => 'nullable|image|max:2048', + 'latitude' => 'required|numeric', + 'longitude' => 'required|numeric', + 'popular' => 'required|string', + 'paket' => 'required|string', + 'metode' => 'required|string', + 'fasilitas' => 'required|string', + 'lokasi' => 'required|string', + ], [ + 'nama_kursus.required' => 'Nama kursus wajib diisi.', + 'nama_kursus.max' => 'Nama kursus tidak boleh lebih dari 255 karakter.', + 'deskripsi.required' => 'Deskripsi wajib diisi.', + 'img.image' => 'File yang di-upload harus berupa gambar.', + 'img.max' => 'Ukuran gambar tidak boleh lebih dari 2MB.', + 'latitude.required' => 'Latitude wajib diisi.', + 'latitude.numeric' => 'Latitude harus berupa angka.', + 'longitude.required' => 'Longitude wajib diisi.', + 'longitude.numeric' => 'Longitude harus berupa angka.', + 'popular.required' => 'Status popular wajib diisi.', + 'paket.required' => 'Paket wajib diisi.', + 'metode.required' => 'Metode wajib diisi.', + 'fasilitas.required' => 'Fasilitas wajib diisi.', + 'lokasi.required' => 'Lokasi wajib diisi.', + ]); + + try { // Ambil record DataKursus berdasarkan ID-nya $dataKursus = DataKursus::findOrFail($id); @@ -138,57 +171,48 @@ public function update(Request $request, $id) $dataKursus->fasilitas = $request->input('fasilitas'); $dataKursus->lokasi = $request->input('lokasi'); - + // Update gambar utama jika ada file baru if ($request->hasFile('img')) { - // Hapus gambar lama jika ada if ($dataKursus->img) { + // Hapus file lama Storage::delete('public/' . $dataKursus->img); } - - // Simpan gambar baru $imgPath = $request->file('img')->store('konten', 'public'); $dataKursus->img = $imgPath; } - + // Update multiple file upload jika ada file baru if ($request->hasFile('img_konten')) { - // Hapus gambar menu lama jika ada if ($dataKursus->img_konten) { - // Decode JSON untuk mendapatkan array path dari gambar lama $oldImages = json_decode($dataKursus->img_konten, true); foreach ($oldImages as $oldImage) { - // Hapus setiap file lama dari penyimpanan Storage::delete('public/' . $oldImage); } } - // Proses setiap file yang di-upload untuk gambar menu baru $menuImages = []; foreach ($request->file('img_konten') as $file) { - // Simpan file di folder 'images/kuliner/detail' dalam disk 'public' $imgKontenPaths = $file->store('logo', 'public'); - // Menambahkan path ke array baru $menuImages[] = $imgKontenPaths; } - - // Simpan array path gambar menu baru ke database $dataKursus->img_konten = json_encode($menuImages); } - // Save updated record + // Simpan perubahan $dataKursus->save(); - // Redirect with success message + // Redirect dengan pesan sukses return redirect()->route('admin.dataKursus')->with('success', 'Data berhasil diperbarui.'); } catch (\Exception $e) { - dd($e->getMessage()); + // Tangani error dan kirimkan pesan error + return redirect()->back()->with('error', 'Terjadi kesalahan: ' . $e->getMessage()); } - // Validasi request - } + + public function destroy($id) { $dataKursus = DataKursus::findOrFail($id); diff --git a/resources/views/admin/dashboard.blade.php b/resources/views/admin/dashboard.blade.php index 7a2f979..6b67f14 100644 --- a/resources/views/admin/dashboard.blade.php +++ b/resources/views/admin/dashboard.blade.php @@ -10,12 +10,12 @@
-
+
@if ($randomLandingPages->isNotEmpty()) @foreach ($randomLandingPages as $page)
-
diff --git a/resources/views/admin/dataKursusAdmin.blade.php b/resources/views/admin/dataKursusAdmin.blade.php index f94a640..35125ff 100644 --- a/resources/views/admin/dataKursusAdmin.blade.php +++ b/resources/views/admin/dataKursusAdmin.blade.php @@ -8,6 +8,8 @@ Tambah Data
+ + {{ $courses->links() }}
diff --git a/resources/views/admin/homeAdmin.blade.php b/resources/views/admin/homeAdmin.blade.php index e556b83..e69de29 100644 --- a/resources/views/admin/homeAdmin.blade.php +++ b/resources/views/admin/homeAdmin.blade.php @@ -1 +0,0 @@ -w diff --git a/resources/views/admin/tambahDataKursusAdmin.blade.php b/resources/views/admin/tambahDataKursusAdmin.blade.php index fc42817..11dfe86 100644 --- a/resources/views/admin/tambahDataKursusAdmin.blade.php +++ b/resources/views/admin/tambahDataKursusAdmin.blade.php @@ -3,7 +3,7 @@
-
+
@csrf -
+
@@ -21,45 +21,43 @@ Kursus + placeholder="Kampung Inggris LC - Language Center" value="{{ old('nama_kursus') }}" + required />
- - - - + +
- -
- +
-
+ placeholder="KAMPUNG INGGRIS LC – LANGUAGE CENTER Adalah . . . ." + value="{{ old('deskripsi') }}" required />
- + @@ -71,7 +69,7 @@ class="block w-full text-sm text-gray-900 border border-gray-300 rounded-lg curs + placeholder="Latitude" value="{{ old('latitude') }}" required />
@@ -80,14 +78,13 @@ class="bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus: + placeholder="Longitude" value="{{ old('longitude') }}" />
-
- + @@ -96,7 +93,7 @@ class="block p-2.5 w-full text-sm text-gray-900 bg-gray-50 rounded-lg border bor
- + @@ -105,7 +102,7 @@ class="block p-2.5 w-full text-sm text-gray-900 bg-gray-50 rounded-lg border bor
- + @@ -114,87 +111,95 @@ class="block p-2.5 w-full text-sm text-gray-900 bg-gray-50 rounded-lg border bor
- +
- @if ($errors->any()) - - @endif - - -