diff --git a/app/Http/Controllers/Admin/PengumumanController.php b/app/Http/Controllers/Admin/PengumumanController.php new file mode 100644 index 0000000..d5af954 --- /dev/null +++ b/app/Http/Controllers/Admin/PengumumanController.php @@ -0,0 +1,61 @@ +get(); + return view('admin.pengumuman.index', compact('pengumuman')); + } + + public function create() + { + return view('admin.pengumuman.create'); + } + + public function store(Request $request) + { + $request->validate([ + 'judul' => 'required|string|max:255', + 'isi' => 'required|string', + 'tanggal_mulai' => 'nullable|date', + 'tanggal_selesai' => 'nullable|date|after_or_equal:tanggal_mulai', + 'status' => 'boolean', + ]); + + Pengumuman::create($request->all()); + + return redirect()->route('pengumuman.index')->with('success', 'Pengumuman berhasil ditambahkan.'); + } + + public function edit(Pengumuman $pengumuman) + { + return view('admin.pengumuman.edit', compact('pengumuman')); + } + + public function update(Request $request, Pengumuman $pengumuman) + { + $request->validate([ + 'judul' => 'required|string|max:255', + 'isi' => 'required|string', + 'tanggal_mulai' => 'nullable|date', + 'tanggal_selesai' => 'nullable|date|after_or_equal:tanggal_mulai', + 'status' => 'boolean', + ]); + + $pengumuman->update($request->all()); + + return redirect()->route('pengumuman.index')->with('success', 'Pengumuman berhasil diperbarui.'); + } + + public function destroy(Pengumuman $pengumuman) + { + $pengumuman->delete(); + return redirect()->route('pengumuman.index')->with('success', 'Pengumuman berhasil dihapus.'); + } +} diff --git a/app/Http/Controllers/DashboardController.php b/app/Http/Controllers/DashboardController.php index f790297..21d6566 100644 --- a/app/Http/Controllers/DashboardController.php +++ b/app/Http/Controllers/DashboardController.php @@ -7,19 +7,18 @@ use App\Models\Siswa; use App\Models\WaliMurid; use App\Models\Kelas; +use App\Models\Pengumuman; class DashboardController extends Controller { public function index() -{ - $pengumuman = "Besok ada kegiatan belajar di kantor polisi"; - $jadwal = "Pembelajaran di kantor polisi - 8 a.m."; - $aktivitas = [ - ['nama' => 'Winda Kurnia', 'waktu' => '01 Aug, 09:20AM'], - ['nama' => 'Siti Nurhaliza', 'waktu' => '01 Aug, 04:20PM'], - ['nama' => 'Daffa Lintang', 'waktu' => '01 Aug, 08:20AM'], + { + $pengumuman = Pengumuman::orderBy('created_at', 'desc')->first(); + $aktivitas = [ + (object)['deskripsi' => 'Admin menambahkan data guru', 'created_at' => now()], + (object)['deskripsi' => 'Admin membuat pengumuman baru', 'created_at' => now()->subHour()], ]; - return view('dashboard', compact('pengumuman', 'jadwal', 'aktivitas')); -} + return view('dashboard', compact('pengumuman','aktivitas')); } +} \ No newline at end of file diff --git a/app/Models/Pengumuman.php b/app/Models/Pengumuman.php new file mode 100644 index 0000000..7cc4ee4 --- /dev/null +++ b/app/Models/Pengumuman.php @@ -0,0 +1,22 @@ +id(); + $table->string('judul'); + $table->text('isi'); + $table->date('tanggal_mulai'); + $table->date('tanggal_selesai'); + $table->boolean('status')->default(1); + $table->timestamps(); + }); +} + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('pengumuman'); + } +}; diff --git a/resources/views/admin/pengumuman/create.blade.php b/resources/views/admin/pengumuman/create.blade.php new file mode 100644 index 0000000..5a278da --- /dev/null +++ b/resources/views/admin/pengumuman/create.blade.php @@ -0,0 +1,48 @@ +@extends('layouts.app') + +@section('content') +
+

➕ Tambah Pengumuman

+ +
+ @csrf + +
+ + +
+ +
+ + +
+ +
+
+ + +
+
+ + +
+
+ +
+ +
+ +
+ Batal + +
+
+
+@endsection diff --git a/resources/views/admin/pengumuman/edit.blade.php b/resources/views/admin/pengumuman/edit.blade.php new file mode 100644 index 0000000..92d548f --- /dev/null +++ b/resources/views/admin/pengumuman/edit.blade.php @@ -0,0 +1,49 @@ +@extends('layouts.app') + +@section('content') +
+

✏️ Edit Pengumuman

+ +
+ @csrf + @method('PUT') + +
+ + +
+ +
+ + +
+ +
+
+ + +
+
+ + +
+
+ +
+ +
+ +
+ Batal + +
+
+
+@endsection diff --git a/resources/views/admin/pengumuman/index.blade.php b/resources/views/admin/pengumuman/index.blade.php new file mode 100644 index 0000000..f5777a4 --- /dev/null +++ b/resources/views/admin/pengumuman/index.blade.php @@ -0,0 +1,46 @@ +@extends('layouts.app') + +@section('content') +
+
+

📢 Pengumuman

+ + Tambah +
+ + + + + + + + + + + + + @foreach ($pengumuman as $i => $p) + + + + + + + + @endforeach + +
#JudulTanggalStatusAksi
{{ $i+1 }}{{ $p->judul }} + {{ $p->tanggal_mulai }} - {{ $p->tanggal_selesai }} + + + {{ $p->status ? 'Aktif' : 'Nonaktif' }} + + + Edit +
+ @csrf + @method('DELETE') + +
+
+
+@endsection diff --git a/resources/views/dashboard.blade.php b/resources/views/dashboard.blade.php index d6a9bc7..2890477 100644 --- a/resources/views/dashboard.blade.php +++ b/resources/views/dashboard.blade.php @@ -1,40 +1,56 @@ @extends('layouts.app') @section('content') -
+
+

Hai, Admin 👋

- -
-

📢 Pengumuman

-

{{ $pengumuman ?? 'Belum ada pengumuman.' }}

-
- - -
-
-

📅 Jadwal

- See all + +
+
+

📢 Pengumuman Terbaru

+ @if($pengumuman) +

{{ $pengumuman->judul }}

+

{{ $pengumuman->isi }}

+ + Periode: {{ $pengumuman->tanggal_mulai }} - {{ $pengumuman->tanggal_selesai }} + @if(now()->between($pengumuman->tanggal_mulai, $pengumuman->tanggal_selesai)) + Aktif + @else + Belum aktif + @endif + +@else +

Belum ada pengumuman.

+@endif
-

🔔 {{ $jadwal ?? 'Belum ada jadwal.' }}

- -
-
-

🧒 Aktivitas Peserta Didik

- See all + +
+ + +
+
+

📅 Jadwal

+ See all +
+

Belum ada jadwal.

-
    - @forelse ($aktivitas as $a) -
  • - {{ $a['nama'] }} - {{ $a['waktu'] }} -
  • - @empty -
  • Belum ada aktivitas.
  • - @endforelse -
-
+ +
+

📌 Aktivitas Terbaru

+
    + @forelse($aktivitas as $item) +
  • • {{ $item->deskripsi }} + - {{ $item->created_at->diffForHumans() }} +
  • + @empty +
  • Tidak ada aktivitas terbaru.
  • + @endforelse +
+
+ +
@endsection diff --git a/resources/views/layouts/app.blade.php b/resources/views/layouts/app.blade.php index 9edc95c..48f2aeb 100644 --- a/resources/views/layouts/app.blade.php +++ b/resources/views/layouts/app.blade.php @@ -30,7 +30,7 @@ Laporan Perkembangan - + Menu Pengumuman diff --git a/routes/api.php b/routes/api.php index 614bc78..174c7fc 100644 --- a/routes/api.php +++ b/routes/api.php @@ -8,6 +8,7 @@ use App\Http\Controllers\Admin\GuruController; use App\Http\Controllers\Admin\WaliMuridController; use App\Http\Controllers\Admin\SiswaController; +use App\Http\Controllers\Api\PerkembanganController as ApiPerkembangan; Route::post('/login', [AuthController::class, 'login']); @@ -41,5 +42,5 @@ 'update' => 'api.siswa.update', 'destroy' => 'api.siswa.destroy', ]); - + Route::middleware('auth:sanctum')->get('/wali/perkembangan', [ApiPerkembangan::class,'index']); }); \ No newline at end of file diff --git a/routes/web.php b/routes/web.php index a605b56..919e81d 100644 --- a/routes/web.php +++ b/routes/web.php @@ -6,6 +6,9 @@ use App\Http\Controllers\Admin\GuruController; use App\Http\Controllers\Admin\WaliMuridController; use App\Http\Controllers\Admin\SiswaController; +use App\Http\Controllers\Admin\PengumumanController; +use App\Http\Controllers\Guru\PerkembanganController as GuruPerkembangan; +use App\Http\Controllers\Admin\PerkembanganController as AdminPerkembangan; // Login routes Route::get('/login', [AuthController::class, 'showLogin'])->name('login'); @@ -20,10 +23,20 @@ // Hanya bisa diakses setelah login Route::middleware('auth')->group(function () { Route::get('/dashboard', [DashboardController::class, 'index'])->name('dashboard'); + Route::resource('pengumuman', \App\Http\Controllers\Admin\PengumumanController::class); Route::prefix('admin')->group(function () { Route::resource('guru', GuruController::class); Route::resource('wali', WaliMuridController::class); Route::resource('siswa', SiswaController::class); + +Route::middleware(['auth','role:guru'])->prefix('guru')->name('guru.')->group(function(){ + Route::resource('perkembangan', GuruPerkembangan::class); +}); + +Route::middleware(['auth','role:admin'])->prefix('admin')->name('admin.')->group(function(){ + Route::get('perkembangan', [AdminPerkembangan::class, 'index'])->name('perkembangan.index'); + Route::get('perkembangan/{id}', [AdminPerkembangan::class, 'show'])->name('perkembangan.show'); +}); }); }); \ No newline at end of file