diff --git a/app/Http/Controllers/AdminDashboardController.php b/app/Http/Controllers/AdminDashboardController.php index a2f7527..986d93b 100644 --- a/app/Http/Controllers/AdminDashboardController.php +++ b/app/Http/Controllers/AdminDashboardController.php @@ -3,11 +3,25 @@ namespace App\Http\Controllers; use Illuminate\Http\Request; +use App\Models\DataKursus; // Pastikan model diimport class AdminDashboardController extends Controller { public function index() { - return view('admin.dahsboard'); + // Ambil semua data kursus + $allLandingPages = DataKursus::all(); + + // Ambil satu gambar secara acak untuk bagian atas + $randomLandingPage = $allLandingPages->random(); + + // Ambil maksimal 6 gambar secara acak untuk bagian bawah + $randomLandingPages = $allLandingPages->random(min(count($allLandingPages), 6)); + + return view('admin.dahsboard', [ + 'randomLandingPage' => $randomLandingPage, + 'randomLandingPages' => $randomLandingPages, + 'allLandingPages' => $allLandingPages + ]); } } diff --git a/app/Http/Controllers/AdminDataKursusController.php b/app/Http/Controllers/AdminDataKursusController.php index 6912ef5..faba685 100644 --- a/app/Http/Controllers/AdminDataKursusController.php +++ b/app/Http/Controllers/AdminDataKursusController.php @@ -7,6 +7,8 @@ use Illuminate\Http\RedirectResponse; use Illuminate\Http\Request; use Illuminate\Support\Facades\Validator; +use Nette\Utils\Strings; +use PhpParser\Node\Expr\Cast\String_; use PhpParser\Node\Stmt\TryCatch; class AdminDataKursusController extends Controller @@ -27,6 +29,7 @@ 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', @@ -35,16 +38,21 @@ public function store(Request $request) 'metode' => 'required', 'fasilitas' => 'required', 'lokasi' => 'required', - 'latitude' => 'required|numeric|between:-180,180', - 'longitude' => 'required|numeric|between:-180,180', + 'latitude' => 'nullable', // Ubah aturan validasi + 'longitude' => 'nullable', // Ubah aturan validasi 'img_konten.*' => 'file|mimes:jpeg,png,jpg|max:2048', ]); - // if ($validator->fails()) { - // return redirect()->back()->withInput()->withErrors($validator); - // } + // Cek apakah validasi gagal + if ($validator->fails()) { + return redirect()->back()->withErrors($validator)->withInput(); + } + + // Menyimpan file gambar utama $imgPath = $request->file('img')->store('konten', 'public'); $imgKontenPaths = []; + + // Menyimpan file gambar konten if ($request->hasFile('img_konten')) { foreach ($request->file('img_konten') as $file) { $imgKontenPaths[] = $file->store('logo', 'public'); @@ -60,28 +68,87 @@ public function store(Request $request) 'metode' => $request->metode, 'fasilitas' => $request->fasilitas, 'lokasi' => $request->lokasi, - 'latitude' => $request->latitude, - 'longitude' => $request->longitude, + 'latitude' => $request->latitude, // Menyimpan nilai latitude bebas + 'longitude' => $request->longitude, // Menyimpan nilai longitude bebas 'img_konten' => json_encode($imgKontenPaths), ]); - return redirect('/admin/data-kursus'); + // Redirect setelah berhasil + return redirect('/admin/data-kursus')->with('success', 'Data berhasil disimpan.'); } catch (\Exception $e) { - dd($e->getMessage()); + // Tangani kesalahan + return redirect()->back()->with('error', 'Terjadi kesalahan: ' . $e->getMessage()); } } - public function edit() + + public function edit($id) { - return view('admin.ubahDataKursusAdmin'); + // Ambil record DataKursus berdasarkan ID-nya + $dataKursus = DataKursus::findOrFail($id); + + // Decode field JSON untuk nama gambar jika ada + $imageName = $dataKursus->img_konten ? json_decode($dataKursus->img_konten, true) : []; + + // Kirim data ke view + return view('admin.ubahDataKursusAdmin', compact('dataKursus', 'imageName')); } - public function destroy(string $id) + public function update(Request $request, $id) { - $data = DataKursus::find($id); - if ($data) { - $data->delete(); + // 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' => 'nullable|numeric', + 'paket' => 'nullable|string', + 'metode' => 'nullable|string', + 'fasilitas' => 'nullable|string', + 'lokasi' => 'nullable|string', + ]); + + // Ambil record DataKursus berdasarkan ID-nya + $dataKursus = DataKursus::findOrFail($id); + + // Update fields + $dataKursus->nama_kursus = $request->input('nama_kursus'); + $dataKursus->deskripsi = $request->input('deskripsi'); + $dataKursus->latitude = $request->input('latitude'); + $dataKursus->longitude = $request->input('longitude'); + $dataKursus->paket = $request->input('paket'); + $dataKursus->metode = $request->input('metode'); + $dataKursus->fasilitas = $request->input('fasilitas'); + $dataKursus->lokasi = $request->input('lokasi'); + + // Handle single image upload + if ($request->hasFile('img')) { + $dataKursus->img = $request->file('img')->store('images', 'public'); } + + // Handle multiple image uploads + if ($request->hasFile('img_konten')) { + $images = []; + foreach ($request->file('img_konten') as $file) { + $images[] = $file->store('images', 'public'); + } + $dataKursus->img_konten = json_encode($images); + } + + // Save updated record + $dataKursus->save(); + + // Redirect with success message + return redirect()->route('admin.dataKursus')->with('success', 'Data berhasil diperbarui.'); + } + + + public function destroy($id) + { + $dataKursus = DataKursus::findOrFail($id); + $dataKursus->delete(); return redirect()->route('admin.dataKursus')->with('success', 'Data berhasil dihapus.'); } } diff --git a/database/migrations/2024_08_25_153939_data_kursus.php b/database/migrations/2024_08_25_153939_data_kursus.php index 2d67e11..323e242 100644 --- a/database/migrations/2024_08_25_153939_data_kursus.php +++ b/database/migrations/2024_08_25_153939_data_kursus.php @@ -20,8 +20,8 @@ public function up() $table->longText('metode'); $table->text('fasilitas'); $table->longText('lokasi'); - $table->decimal('latitude', 10, 7); - $table->decimal('longitude', 10, 7); + $table->string('latitude'); + $table->string('longitude'); $table->json('img_konten')->nullable(); $table->timestamps(); }); diff --git a/resources/views/admin/dahsboard.blade.php b/resources/views/admin/dahsboard.blade.php index a1fe44e..1892c27 100644 --- a/resources/views/admin/dahsboard.blade.php +++ b/resources/views/admin/dahsboard.blade.php @@ -1,26 +1,38 @@ -
-
-
- +
+
+ +
+ @if ($randomLandingPage->img) +
+ Gambar +
+

{{ $randomLandingPage->nama_kursus }}

+
+
+ @else +
+

Tidak ada gambar yang tersedia.

+
+ @endif
-
-
-
- -
-
- -
-
- -
-
- -
-
- -
+ + +
+
+ @foreach ($randomLandingPages as $page) +
+ +
+

{{ $page->nama_kursus }}

+
+
+ @endforeach
diff --git a/resources/views/admin/dataKursusAdmin.blade.php b/resources/views/admin/dataKursusAdmin.blade.php index 830be57..d79e2bc 100644 --- a/resources/views/admin/dataKursusAdmin.blade.php +++ b/resources/views/admin/dataKursusAdmin.blade.php @@ -3,12 +3,14 @@
-
-
- Tambah Data +
+ - - + +
+ @@ -17,9 +19,9 @@ - + @foreach ($courses as $index => $course) - + @@ -34,30 +36,124 @@ alt=""> @endforeach
No Nama KursusAksi
{{ $index + 1 }} - Edit - - + + + + + + + + + + + + + + +
-
+ + @if (session('success')) +
+
+ + {{ session('success') }} +
+
+ @endif + + + diff --git a/resources/views/admin/tambahDataKursusAdmin.blade.php b/resources/views/admin/tambahDataKursusAdmin.blade.php index eb23220..5a01d05 100644 --- a/resources/views/admin/tambahDataKursusAdmin.blade.php +++ b/resources/views/admin/tambahDataKursusAdmin.blade.php @@ -12,17 +12,18 @@ d="M13 5H1m0 0 4 4M1 5l4-4" />
-
+ @csrf
- +
- +
@@ -30,7 +31,7 @@ class="bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus: class="block w-full text-sm text-gray-900 border border-gray-300 rounded-lg cursor-pointer bg-gray-50" id="file_input" type="file" name="img">
- +
@@ -38,32 +39,45 @@ class="block w-full text-sm text-gray-900 border border-gray-300 rounded-lg curs class="bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5" placeholder="KAMPUNG INGGRIS LC – LANGUAGE CENTER Adalah . . . ." required />
- +
- +
- +
- - +
- +
- - Longitude + + placeholder="Longitude" />
- + @if ($errors->any()) + + @endif +
@@ -72,7 +86,7 @@ class="bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus: class="block p-2.5 w-full text-sm text-gray-900 bg-gray-50 rounded-lg border border-gray-300 focus:ring-blue-500 focus:border-blue-500" placeholder="Write your thoughts here...">
- +
@@ -81,7 +95,7 @@ class="block p-2.5 w-full text-sm text-gray-900 bg-gray-50 rounded-lg border bor class="block p-2.5 w-full text-sm text-gray-900 bg-gray-50 rounded-lg border border-gray-300 focus:ring-blue-500 focus:border-blue-500" placeholder="Write your thoughts here...">
- +
@@ -90,7 +104,7 @@ class="block p-2.5 w-full text-sm text-gray-900 bg-gray-50 rounded-lg border bor class="block p-2.5 w-full text-sm text-gray-900 bg-gray-50 rounded-lg border border-gray-300 focus:ring-blue-500 focus:border-blue-500" placeholder="Write your thoughts here...">
- +
@@ -100,10 +114,72 @@ class="block p-2.5 w-full text-sm text-gray-900 bg-gray-50 rounded-lg border bor placeholder="Write your thoughts here...">
- + + + + +
- +
diff --git a/resources/views/admin/ubahDataKursusAdmin.blade.php b/resources/views/admin/ubahDataKursusAdmin.blade.php index 41bb5b2..f68385f 100644 --- a/resources/views/admin/ubahDataKursusAdmin.blade.php +++ b/resources/views/admin/ubahDataKursusAdmin.blade.php @@ -1,25 +1,27 @@ -
- -
+ @csrf + @method('PUT')
+
-
@@ -27,36 +29,40 @@ class="bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:
-
+
-
+
- - -
-
-
@@ -65,32 +71,60 @@ class="bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:
- +
+ +
+ + + + + +
+
- -
- - Longitude + + placeholder="Longitude" />
- + @@ -99,7 +133,8 @@ class="block p-2.5 w-full text-sm text-gray-900 bg-gray-50 rounded-lg border bor
- + @@ -108,7 +143,8 @@ class="block p-2.5 w-full text-sm text-gray-900 bg-gray-50 rounded-lg border bor
- + @@ -117,7 +153,8 @@ class="block p-2.5 w-full text-sm text-gray-900 bg-gray-50 rounded-lg border bor
- + @@ -126,16 +163,11 @@ class="block p-2.5 w-full text-sm text-gray-900 bg-gray-50 rounded-lg border bor - -
- @push('script') @endpush - - diff --git a/resources/views/components/footer.blade.php b/resources/views/components/footer.blade.php index e5ba23f..0a79e36 100644 --- a/resources/views/components/footer.blade.php +++ b/resources/views/components/footer.blade.php @@ -17,25 +17,28 @@ class="self-center pt-6 text-4xl text-white font-semibold whitespace-nowrap aclo

Resources

-

Follow us

-
diff --git a/resources/views/components/navbar.blade.php b/resources/views/components/navbar.blade.php index 1413471..a07424b 100644 --- a/resources/views/components/navbar.blade.php +++ b/resources/views/components/navbar.blade.php @@ -21,8 +21,8 @@ class="inline-flex text-white items-center p-2 w-10 h-10 justify-center text-sm class="flex flex-col font-medium mt-4 rounded-lg bg-white md:space-x-8 rtl:space-x-reverse md:flex-row md:mt-0 md:border-0 md:bg-transparent">
  • - + Beranda
  • diff --git a/resources/views/components/navbarAdmin.blade.php b/resources/views/components/navbarAdmin.blade.php index d07c808..0b68de2 100644 --- a/resources/views/components/navbarAdmin.blade.php +++ b/resources/views/components/navbarAdmin.blade.php @@ -36,7 +36,7 @@ class="{{ request()->is('admin/data-kursus','admin/tambahdata') ? 'bg-[#EBFEA1]
    @csrf
    diff --git a/resources/views/user/home.blade.php b/resources/views/user/home.blade.php index 300e4ef..1583e68 100644 --- a/resources/views/user/home.blade.php +++ b/resources/views/user/home.blade.php @@ -24,7 +24,7 @@
    @foreach ($landingpage as $landingpage) -
    +
    @@ -38,9 +38,6 @@ class="mb-2 text-2xl poppins-regular font-extrabold tracking-tight text-gray-90

    {{ Str::words($landingpage->deskripsi, 30, '...') }}

    - - -
    -

    4.95

    -

    out of

    -

    5

    + diff --git a/resources/views/user/kursus.blade.php b/resources/views/user/kursus.blade.php index 222624d..083c498 100644 --- a/resources/views/user/kursus.blade.php +++ b/resources/views/user/kursus.blade.php @@ -1,52 +1,49 @@ -
    +

    Halaman ini berisi tentang kursus di Pare!

    +
    -
    - -
    - - Search -
    -
    + +
    + + Search +
    -
    + +
    @foreach ($data_kursus as $kursus) -
    +
    {{ $kursus->nama_kursus }}
    -
    +
    {{ $kursus->nama_kursus }}

    - {{ Str::limit($kursus->deskripsi) }} + {{ Str::limit($kursus->deskripsi, 200, '...') }} +

    - - - - + + diff --git a/routes/web.php b/routes/web.php index ab62672..13ff686 100644 --- a/routes/web.php +++ b/routes/web.php @@ -11,22 +11,20 @@ // ADMIN Route::get('/admin/dashboard', [AdminDashboardController::class, 'index'])->name('admin.home'); // SHOW DASHBOARD Route::get('/admin/data-kursus', [AdminDataKursusController::class, 'dataKursus'])->name('admin.dataKursus'); //SHOW DATA -Route::get('/admin/edit-kursus', [AdminDataKursusController::class, 'edit'])->name('admin.edit'); // SHOW TAMPILAN EDIT DATA -Route::post('/admin/store', [AdminDataKursusController::class, 'store'])->name('kursus.store'); // TOMBOL SIMPAN TAMBAH DATA -Route::get('/admin/createData', [AdminDataKursusController::class, 'create'])->name('admin.create'); // SHOW TAMPILAN TAMBAH DATA +Route::get('/admin/create-data', [AdminDataKursusController::class, 'create'])->name('admin.create'); // SHOW TAMBAH DATA +Route::get('/admin/{id}/edit-kursus', [AdminDataKursusController::class, 'edit'])->name('admin.edit'); // SHOW EDIT DATA -Route::delete('/admin/delete/{id}', [AdminDataKursusController::class, 'destroy'])->name('delete');// TOMBOL DELETE DATA -// Route::update('/admin/update/{id}', [AdminDataKursusController::class, 'update'])->name('update'); -Route::get('/admin/courses', [AdminDataKursusController::class, 'index']); +// FUNGSI DI ADMIN +Route::put('/admin/update/{id}', [AdminDataKursusController::class, 'update'])->name('admin.update'); // TOMBOL EDIT DATA +Route::post('/admin/store', [AdminDataKursusController::class, 'store'])->name('kursus.store'); // TOMBOL TAMBAH DATA +Route::delete('/admin/delete/{id}', [AdminDataKursusController::class, 'destroy'])->name('delete'); // TOMBOL DELETE DATA // LOGIN -Route::get('/login', [LoginController::class, 'index'])->name('login'); +Route::get('/login', [LoginController::class, 'index'])->name('login'); // SHOW LOGIN // USER -Route::get('/', [PengunjungController::class, 'home'])->name('home'); // SHOW TAMPILAN AWAL +Route::get('/beranda', [PengunjungController::class, 'home'])->name('user.home'); // SHOW TAMPILAN AWAL Route::get('/kursus', [PengunjungController::class, 'kursus'])->name('user.kursus'); //SHOW TAMPILAN SELURUH KHURSUS -Route::get('/kursus/search', [PengunjungController::class, 'search'])->name('user.kursus.search'); //SHOW TAMPILAN SELURUH KHURSUS - Route::get('/peta', [PengunjungController::class, 'maps'])->name('user.peta'); //SHOW PETA SELURUH TITIK KURSUS Route::get('/kursus/rute', [PengunjungController::class, 'rute'])->name('user.rute'); //SHOW PETA SELURUH TITIK KURSUS Route::get('/kursus/{id}/detail', [PengunjungController::class, 'detail'])->name('kursus.detail'); // DETAIL KHURSUS MASING" diff --git a/tailwind.config.js b/tailwind.config.js index f239bec..1ad544a 100644 --- a/tailwind.config.js +++ b/tailwind.config.js @@ -16,6 +16,15 @@ export default { }, // Tambahkan opsi `center` untuk margin auto center: true, + dropShadow: { + "1xl": "0 10px 20px rgba(0, 0, 0, 0.15)", // Light shadow for minimal depth + "2xl": "0 20px 30px rgba(0, 0, 0, 0.2)", // More noticeable shadow + "3xl": "0 30px 40px rgba(0, 0, 0, 0.25)", // Deep shadow for significant depth + "4xl": [ + "0 30px 50px rgba(0, 0, 0, 0.3)", // Stronger shadow with more blur + "0 40px 70px rgba(0, 0, 0, 0.2)", // Additional shadow for greater depth + ], + }, }, extend: {}, },