Merge branch 'main' into master
This commit is contained in:
commit
ca815737f0
|
@ -0,0 +1,16 @@
|
|||
<?php
|
||||
|
||||
namespace App\Exceptions;
|
||||
|
||||
use Exception as BaseException; // Alias the base Exception class
|
||||
|
||||
class CustomException extends BaseException
|
||||
{
|
||||
/**
|
||||
* Report the exception.
|
||||
*/
|
||||
public function report(): void
|
||||
{
|
||||
// Custom reporting logic here
|
||||
}
|
||||
}
|
|
@ -3,7 +3,10 @@
|
|||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Models\DataKursus; // Pastikan model diimport
|
||||
use Illuminate\Auth\Events\Validated;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Validator;
|
||||
use PhpParser\Node\Stmt\TryCatch;
|
||||
|
||||
class AdminDataKursusController extends Controller
|
||||
{
|
||||
|
@ -22,10 +25,84 @@ public function create()
|
|||
|
||||
public function store(Request $request)
|
||||
{
|
||||
$request->validate(
|
||||
[]
|
||||
);
|
||||
try {
|
||||
$validator = Validator::make($request->all(), [
|
||||
'nama_kursus' => 'required',
|
||||
'img' => 'required|file|mimes:jpeg,png,jpg|max:2048',
|
||||
'deskripsi' => 'required',
|
||||
'paket' => 'required',
|
||||
'metode' => 'required',
|
||||
'fasilitas' => 'required',
|
||||
'lokasi' => 'required',
|
||||
'latitude' => 'required|numeric|between:-90,90',
|
||||
'longitude' => 'required|numeric|between:-180,180',
|
||||
'img_konten.*' => 'file|mimes:jpeg,png,jpg|max:2048',
|
||||
]);
|
||||
|
||||
// if ($validator->fails()) {
|
||||
// return redirect()->back()->withInput()->withErrors($validator);
|
||||
// }
|
||||
$imgPath = $request->file('img')->store('images', 'public');
|
||||
$imgKontenPaths = [];
|
||||
if ($request->hasFile('img_konten')) {
|
||||
foreach ($request->file('img_konten') as $file) {
|
||||
$imgKontenPaths[] = $file->store('images', 'public');
|
||||
}
|
||||
}
|
||||
|
||||
// Simpan data ke dalam database
|
||||
$result = DataKursus::create([
|
||||
'nama_kursus' => $request->nama_kursus,
|
||||
'img' => $imgPath,
|
||||
'deskripsi' => $request->deskripsi,
|
||||
'paket' => $request->paket,
|
||||
'metode' => $request->metode,
|
||||
'fasilitas' => $request->fasilitas,
|
||||
'lokasi' => $request->lokasi,
|
||||
'latitude' => $request->latitude,
|
||||
'longitude' => $request->longitude,
|
||||
'img_konten' => json_encode($imgKontenPaths),
|
||||
]);
|
||||
|
||||
return redirect('/admin/data-kursus');
|
||||
} catch (\Exception $e) {
|
||||
dd($e->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public function w(Request $request)
|
||||
{
|
||||
// $validator = Validator::make($request->all(), [
|
||||
// 'nama' => 'required',
|
||||
// 'img' => 'required',
|
||||
// 'deskripsi' => 'required',
|
||||
// 'paket' => 'required',
|
||||
// 'metode' => 'required',
|
||||
// 'fasilitas' => 'required',
|
||||
// 'lokasi' => 'required',
|
||||
// 'latitude' => 'required',
|
||||
// 'longtitude' => 'required',
|
||||
// 'img_konten' => 'required',
|
||||
// ]);
|
||||
// DataKursus::create([
|
||||
// "nama_kursus" => $request->nama,
|
||||
// "img" => $request->img,
|
||||
// "deskripsi" => $request->diskripsi,
|
||||
// "paket" => $request->paket,
|
||||
// "metode" => $request->metode,
|
||||
// "fasilitas" => $request->fasilitas,
|
||||
// "lokasi" => $request->lokasi,
|
||||
// "latitude" => $request->latitude,
|
||||
// "longtitude" => $request->longtitude,
|
||||
// "img_konten" => $request->img_konten,
|
||||
|
||||
// ]);
|
||||
// if ($validator->fails()) return redirect()->back()->withInput()->withErrors($validator);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
public function destroy(string $id)
|
||||
{
|
||||
|
@ -35,5 +112,4 @@ public function destroy(string $id)
|
|||
}
|
||||
return redirect()->route('admin.dataKursus')->with('success', 'Data berhasil dihapus.');
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -9,9 +9,20 @@ class DataKursus extends Model
|
|||
{
|
||||
use HasFactory;
|
||||
|
||||
// Tabel yang digunakan oleh model ini
|
||||
protected $table = 'data_kursus';
|
||||
|
||||
// Jika Anda menggunakan timestamp di tabel
|
||||
protected $fillable = [
|
||||
'nama_kursus',
|
||||
'img',
|
||||
'deskripsi',
|
||||
'paket',
|
||||
'metode',
|
||||
'fasilitas',
|
||||
'lokasi',
|
||||
'latitude',
|
||||
'longitude', // Pastikan nama kolom sesuai dengan migrasi
|
||||
'img_konten'
|
||||
];
|
||||
|
||||
public $timestamps = true;
|
||||
}
|
||||
|
|
|
@ -20,6 +20,7 @@ public function up()
|
|||
$table->string('metode');
|
||||
$table->text('fasilitas');
|
||||
$table->string('lokasi');
|
||||
|
||||
$table->decimal('latitude', 10, 7);
|
||||
$table->decimal('longtitude', 10, 7);
|
||||
$table->json('img_konten')->nullable();
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"name": "salma",
|
||||
"name": "SIG-Salma",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
|
|
|
@ -4,6 +4,9 @@
|
|||
<div class="py-10">
|
||||
|
||||
<div class="relative overflow-x-auto shadow-md sm:rounded-lg">
|
||||
<div class="flex justify-end items-center pb-4">
|
||||
<a class="bg-[#4F7F81] py-2 px-4 rounded-xl text-white font-bold" href="{{ route ('admin.create') }}">Tambah Data</a>
|
||||
</div>
|
||||
<table class="w-full text-sm text-left rtl:text-right text-gray-500">
|
||||
<thead class="text-xs text-gray-700 uppercase bg-gray-50">
|
||||
<tr>
|
||||
|
@ -41,7 +44,9 @@ class="font-medium text-white hover:underline py-2 px-4 bg-[#4F7F81] rounded-xl"
|
|||
class="font-medium text-white hover:underline py-2 px-4 bg-[#4F7F81] rounded-xl">
|
||||
Hapus
|
||||
</a>
|
||||
<form id="delete-form-{{ $course->id }}" action="{{ route('delete', ['id' => $course->id]) }}" method="POST" style="display: none;">
|
||||
<form id="delete-form-{{ $course->id }}"
|
||||
action="{{ route('delete', ['id' => $course->id]) }}" method="POST"
|
||||
style="display: none;">
|
||||
@csrf
|
||||
@method('DELETE')
|
||||
</form>
|
||||
|
|
|
@ -3,87 +3,115 @@
|
|||
<div class="container">
|
||||
<div class="py-10">
|
||||
|
||||
<form action="#" method="POST" enctype="multipart/form-data">
|
||||
<div class="pb-4 flex">
|
||||
|
||||
<a class="px-4 flex text-white text-lg justify-center items-center py-2 rounded-xl bg-[#4F7F81]"
|
||||
href="{{ route('admin.dataKursus') }}"><svg class="w-5 h-5 text-white " aria-hidden="true"
|
||||
xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 14 10">
|
||||
<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
|
||||
d="M13 5H1m0 0 4 4M1 5l4-4" />
|
||||
</svg></a>
|
||||
</div>
|
||||
<form action="{{ route('kursus.store') }}" method="POST" enctype="multipart/form-data">
|
||||
@csrf
|
||||
<div class="grid gap-6 mb-6 md:grid-cols-2">
|
||||
<!-- Nama Kursus -->
|
||||
<div>
|
||||
<label for="nama_kursus" class="block mb-2 text-sm font-medium text-gray-900 dark:text-white">Nama Kursus</label>
|
||||
<label for="nama_kursus" class="block mb-2 text-sm font-medium text-gray-900">Nama Kursus</label>
|
||||
<input type="text" id="nama_kursus" name="nama_kursus"
|
||||
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 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500"
|
||||
placeholder="Nama Kursus" required />
|
||||
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" required />
|
||||
</div>
|
||||
|
||||
<!-- Gambar -->
|
||||
<!-- File Upload -->
|
||||
<div>
|
||||
<label for="img" class="block mb-2 text-sm font-medium text-gray-900 dark:text-white">Gambar</label>
|
||||
<input type="file" id="img" name="img"
|
||||
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 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500"
|
||||
required />
|
||||
<label for="file_input" class="block mb-2 text-sm font-medium text-gray-900">Upload File</label>
|
||||
<input
|
||||
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">
|
||||
</div>
|
||||
|
||||
<!-- Deskripsi -->
|
||||
<div>
|
||||
<label for="deskripsi" class="block mb-2 text-sm font-medium text-gray-900 dark:text-white">Deskripsi</label>
|
||||
<textarea id="deskripsi" name="deskripsi"
|
||||
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 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500"
|
||||
placeholder="Deskripsi" required></textarea>
|
||||
<label for="deskripsi" class="block mb-2 text-sm font-medium text-gray-900">Deskripsi</label>
|
||||
<input type="text" id="deskripsi" name="deskripsi"
|
||||
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 />
|
||||
</div>
|
||||
|
||||
<!-- Paket -->
|
||||
<!-- Multiple File Upload -->
|
||||
<div>
|
||||
<label for="paket" class="block mb-2 text-sm font-medium text-gray-900 dark:text-white">Paket</label>
|
||||
<input type="text" id="paket" name="paket"
|
||||
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 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500"
|
||||
placeholder="Paket" required />
|
||||
</div>
|
||||
|
||||
<!-- Metode -->
|
||||
<div>
|
||||
<label for="metode" class="block mb-2 text-sm font-medium text-gray-900 dark:text-white">Metode</label>
|
||||
<input type="text" id="metode" name="metode"
|
||||
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 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500"
|
||||
placeholder="Metode" required />
|
||||
</div>
|
||||
|
||||
<!-- Fasilitas -->
|
||||
<div>
|
||||
<label for="fasilitas" class="block mb-2 text-sm font-medium text-gray-900 dark:text-white">Fasilitas</label>
|
||||
<textarea id="fasilitas" name="fasilitas"
|
||||
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 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500"
|
||||
placeholder="Fasilitas" required></textarea>
|
||||
</div>
|
||||
|
||||
<!-- Lokasi -->
|
||||
<div>
|
||||
<label for="lokasi" class="block mb-2 text-sm font-medium text-gray-900 dark:text-white">Lokasi</label>
|
||||
<input type="text" id="lokasi" name="lokasi"
|
||||
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 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500"
|
||||
placeholder="Lokasi" required />
|
||||
<label for="multiple_files" class="block mb-2 text-sm font-medium text-gray-900">Upload Multiple Files</label>
|
||||
<input
|
||||
class="block w-full text-sm text-gray-900 border border-gray-300 rounded-lg cursor-pointer bg-gray-50"
|
||||
id="multiple_files" type="file" name="img_konten[]" multiple>
|
||||
</div>
|
||||
|
||||
<!-- Latitude -->
|
||||
<div>
|
||||
<label for="latitude" class="block mb-2 text-sm font-medium text-gray-900 dark:text-white">Latitude</label>
|
||||
<label for="latitude" class="block mb-2 text-sm font-medium text-gray-900">Latitude</label>
|
||||
<input type="text" id="latitude" name="latitude"
|
||||
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 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500"
|
||||
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="Latitude" required />
|
||||
</div>
|
||||
|
||||
<!-- Longitude -->
|
||||
<div>
|
||||
<label for="longitude" class="block mb-2 text-sm font-medium text-gray-900 dark:text-white">Longitude</label>
|
||||
<label for="longitude" class="block mb-2 text-sm font-medium text-gray-900">longitude</label>
|
||||
<input type="text" id="longitude" name="longitude"
|
||||
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 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500"
|
||||
placeholder="Longitude" required />
|
||||
</div>
|
||||
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="longitude"/>
|
||||
</div>
|
||||
|
||||
<!-- Paket -->
|
||||
<div>
|
||||
<label for="paket" class="block mb-2 text-sm font-medium text-gray-900">Paket</label>
|
||||
<input id="paket" name="paket" type="hidden" />
|
||||
<trix-editor input="paket"
|
||||
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..."></trix-editor>
|
||||
</div>
|
||||
|
||||
<!-- Metode -->
|
||||
<div>
|
||||
<label for="metode" class="block mb-2 text-sm font-medium text-gray-900">Metode</label>
|
||||
<input id="metode" name="metode" type="hidden" />
|
||||
<trix-editor input="metode"
|
||||
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..."></trix-editor>
|
||||
</div>
|
||||
|
||||
<!-- Fasilitas -->
|
||||
<div>
|
||||
<label for="fasilitas" class="block mb-2 text-sm font-medium text-gray-900">Fasilitas</label>
|
||||
<input id="fasilitas" name="fasilitas" type="hidden" />
|
||||
<trix-editor input="fasilitas"
|
||||
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..."></trix-editor>
|
||||
</div>
|
||||
|
||||
<!-- Lokasi -->
|
||||
<div>
|
||||
<label for="lokasi" class="block mb-2 text-sm font-medium text-gray-900">Lokasi</label>
|
||||
<input id="lokasi" name="lokasi" type="hidden" />
|
||||
<trix-editor input="lokasi"
|
||||
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..."></trix-editor>
|
||||
</div>
|
||||
</div>
|
||||
<button type="submit"
|
||||
class="text-white bg-blue-700 hover:bg-blue-800 focus:ring-4 focus:outline-none focus:ring-blue-300 font-medium rounded-lg text-sm w-full sm:w-auto px-5 py-2.5 text-center dark:bg-blue-600 dark:hover:bg-blue-700 dark:focus:ring-blue-800">Submit</button>
|
||||
class="text-white bg-blue-700 hover:bg-blue-800 focus:ring-4 focus:outline-none focus:ring-blue-300 font-medium rounded-lg text-sm w-full sm:w-auto px-5 py-2.5 text-center">Submit</button>
|
||||
</form>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
@push('script')
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/trix/1.3.1/trix.min.css">
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/trix/1.3.1/trix.min.js"></script>
|
||||
@endpush
|
||||
|
||||
|
||||
</x-adminlayout>
|
||||
|
|
|
@ -1,6 +1,15 @@
|
|||
@include('components.navbarAdmin ')
|
||||
@include('partials.head')
|
||||
@include('partials.font')
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
@include('components.navbarAdmin')
|
||||
@include('partials.head')
|
||||
@include('partials.font')
|
||||
</head>
|
||||
|
||||
<body>
|
||||
{{ $slot }}
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
||||
|
|
|
@ -1,8 +1,16 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
@include('components.navbar')
|
||||
@include('partials.head')
|
||||
@include('partials.font')
|
||||
|
||||
@include('components.navbar')
|
||||
@include('partials.head')
|
||||
@include('partials.font')
|
||||
</head>
|
||||
<body>
|
||||
{{ $slot }}
|
||||
</body>
|
||||
|
||||
@include('components.footer')
|
||||
</html>
|
||||
|
||||
|
||||
|
|
|
@ -3,3 +3,5 @@
|
|||
@vite('resources/css/app.css')
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<link rel="stylesheet" href="https://unpkg.com/leaflet/dist/leaflet.css" />
|
||||
@stack('script')
|
||||
|
||||
|
|
|
@ -35,7 +35,7 @@
|
|||
class="mb-2 text-2xl poppins-regular font-extrabold tracking-tight text-gray-900 ">
|
||||
{{ $landingpage->nama_kursus }}</h5>
|
||||
</a>
|
||||
<p class="mb-3 font-normal poppins-regular text-gray-700 ">{{ $landingpage->deskripsi }}</p>
|
||||
<p class="mb-3 font-normal poppins-regular text-gray-700 ">{{ $landingpage->deskripsi}}</p>
|
||||
|
||||
|
||||
<div class="flex items-center">
|
||||
|
|
|
@ -6,13 +6,18 @@
|
|||
use App\Http\Controllers\LoginController;
|
||||
use App\Http\Controllers\PengunjungController;
|
||||
|
||||
|
||||
|
||||
// ADMIN
|
||||
|
||||
Route::get('/admin/dashboard', [AdminDashboardController::class, 'index'])->name('admin.home');
|
||||
Route::get('/admin/data-kursus', [AdminDataKursusController::class, 'dataKursus'])->name('admin.dataKursus');
|
||||
Route::get('/admin/tambahdata', [AdminDataKursusController::class, 'create'])->name('admin.tambahDataKursus');
|
||||
|
||||
Route::post('/admin/store', [AdminDataKursusController::class, 'store'])->name('kursus.store');
|
||||
Route::get('/admin/createData', [AdminDataKursusController::class, 'create'])->name('admin.create');
|
||||
Route::delete('/admin/delete/{id}', [AdminDataKursusController::class, 'destroy'])->name('delete');
|
||||
Route::get('/admin/courses', [AdminDataKursusController::class, 'index']);
|
||||
|
||||
// LOGIN
|
||||
Route::get('/login', [LoginController::class, 'index'])->name('login');
|
||||
|
||||
Route::get('/', [PengunjungController::class, 'home'])->name('home');
|
||||
|
@ -21,3 +26,4 @@
|
|||
Route::get('/peta', [PengunjungController::class, 'maps'])->name('user.peta');
|
||||
|
||||
Route::get('/kursus/{id}/detail', [PengunjungController::class, 'detail'])->name('kursus.detail');
|
||||
|
||||
|
|
Loading…
Reference in New Issue