From fae905acd6ca3b2199fcc2f4ecda401f4825fc33 Mon Sep 17 00:00:00 2001 From: annajwasz Date: Sun, 23 Mar 2025 02:01:02 +0700 Subject: [PATCH] dashboard done --- app/Filament/Pages/Dashboard.php | 8 +++ app/Filament/Resources/PengumumanResource.php | 70 +++++++++++++++++++ .../Pages/ListPengumuman.php | 11 +++ app/Filament/Widgets/CustomAccountWidget.php | 10 +++ app/Filament/Widgets/DataMaster.php | 56 +++++++++++++++ app/Filament/Widgets/TestWidget.php | 40 +++++++++++ app/Http/Controllers/PengumumanController.php | 17 +++++ app/Providers/Filament/AdminPanelProvider.php | 7 +- .../columns/keterangan-pengumuman.blade.php | 31 ++++++++ resources/views/pengumuman.blade.php | 60 ++++++++++++++++ routes/web.php | 5 ++ 11 files changed, 312 insertions(+), 3 deletions(-) create mode 100644 app/Filament/Pages/Dashboard.php create mode 100644 app/Filament/Resources/PengumumanResource.php create mode 100644 app/Filament/Resources/PengumumanResource/Pages/ListPengumuman.php create mode 100644 app/Filament/Widgets/CustomAccountWidget.php create mode 100644 app/Filament/Widgets/DataMaster.php create mode 100644 app/Filament/Widgets/TestWidget.php create mode 100644 app/Http/Controllers/PengumumanController.php create mode 100644 resources/views/filament/tables/columns/keterangan-pengumuman.blade.php create mode 100644 resources/views/pengumuman.blade.php diff --git a/app/Filament/Pages/Dashboard.php b/app/Filament/Pages/Dashboard.php new file mode 100644 index 00000000..e5026021 --- /dev/null +++ b/app/Filament/Pages/Dashboard.php @@ -0,0 +1,8 @@ +columns([ + TextColumn::make('mahasiswa.nama') + ->label('Nama Mahasiswa') + ->searchable() + ->sortable(), + + TextColumn::make('status') + ->label('Status Berkas') + ->badge() + ->color(fn (string $state): string => match ($state) { + 'valid' => 'success', + 'tidak_valid' => 'danger', + 'belum_validasi' => 'warning', + default => 'gray', + }), + + TextColumn::make('hasil') + ->label('Hasil Seleksi') + ->badge() + ->color(fn (string $state): string => match ($state) { + 'Layak' => 'success', + 'Dipertimbangkan' => 'warning', + 'Tidak Layak' => 'danger', + default => 'gray', + }), + + ViewColumn::make('keterangan') + ->label('Keterangan') + ->view('filament.tables.columns.keterangan-pengumuman'), + ]) + ->defaultSort('total_nilai', 'desc'); + } + + public static function getPages(): array + { + return [ + 'index' => Pages\ListPengumuman::route('/'), + ]; + } +} \ No newline at end of file diff --git a/app/Filament/Resources/PengumumanResource/Pages/ListPengumuman.php b/app/Filament/Resources/PengumumanResource/Pages/ListPengumuman.php new file mode 100644 index 00000000..22209b2e --- /dev/null +++ b/app/Filament/Resources/PengumumanResource/Pages/ListPengumuman.php @@ -0,0 +1,11 @@ +query(SubKriteriaResource::getEloquentQuery()) + ->defaultPaginationPageOption(5) + ->columns([ + TextColumn::make('kriteria.nama') + ->label('Kriteria') + ->sortable() + ->searchable(), + TextColumn::make('nama') + ->label('Sub Kriteria') + ->sortable() + ->searchable(), + TextColumn::make('deskripsi') + ->sortable() + ->searchable(), + TextColumn::make('prioritas') + ->label('Prioritas') + ->sortable(), + TextColumn::make('bobot') + ->label('Bobot') + ->formatStateUsing(fn ($state) => number_format($state, 4)) + ->sortable(), + ]) + ->contentGrid([ + 'md' => 2, + 'lg' => 3, + 'xl' => 4, + ]) + ->striped(); + } + + public static function canView(): bool + { + return true; + } +} diff --git a/app/Filament/Widgets/TestWidget.php b/app/Filament/Widgets/TestWidget.php new file mode 100644 index 00000000..1f6a6f5d --- /dev/null +++ b/app/Filament/Widgets/TestWidget.php @@ -0,0 +1,40 @@ +description('Total Mahasiswa yang telah mendaftar') + ->color('info') + ->chart(Mahasiswa::selectRaw('DATE(created_at) as date, COUNT(*) as total') + ->groupBy('date') + ->orderBy('date') + ->pluck('total') + ->toArray()), + Stat::make('Validasi Data', Parameter::whereIn('status', ['valid', 'tidak_valid'])->count() . '/' . Parameter::count()) + ->description('Total data yang telah divalidasi') + // ->descriptionIcon('heroicon-m-check-circle') + ->color('info') + ->chart(Parameter::selectRaw('DATE(created_at) as date, COUNT(*) as total') + ->whereIn('status', ['valid', 'tidak_valid']) + ->groupBy('date') + ->orderBy('date') + ->pluck('total') + ->toArray()), + + ]; + } +} diff --git a/app/Http/Controllers/PengumumanController.php b/app/Http/Controllers/PengumumanController.php new file mode 100644 index 00000000..45587c35 --- /dev/null +++ b/app/Http/Controllers/PengumumanController.php @@ -0,0 +1,17 @@ +user()->mahasiswa->id) + ->first(); + + return view('pengumuman', compact('pengumuman')); + } +} \ No newline at end of file diff --git a/app/Providers/Filament/AdminPanelProvider.php b/app/Providers/Filament/AdminPanelProvider.php index ed4c5b17..cbe082fa 100644 --- a/app/Providers/Filament/AdminPanelProvider.php +++ b/app/Providers/Filament/AdminPanelProvider.php @@ -18,6 +18,7 @@ use Illuminate\Session\Middleware\StartSession; use Illuminate\View\Middleware\ShareErrorsFromSession; use App\Filament\Pages\WizardForm; +use App\Filament\Widgets\CustomAccountWidget; class AdminPanelProvider extends PanelProvider { @@ -34,13 +35,13 @@ public function panel(Panel $panel): Panel ->discoverResources(in: app_path('Filament/Resources'), for: 'App\\Filament\\Resources') ->discoverPages(in: app_path('Filament/Pages'), for: 'App\\Filament\\Pages') ->pages([ - Pages\Dashboard::class, + // Pages\Dashboard::class, WizardForm::class, ]) ->discoverWidgets(in: app_path('Filament/Widgets'), for: 'App\\Filament\\Widgets') ->widgets([ - Widgets\AccountWidget::class, - Widgets\FilamentInfoWidget::class, + CustomAccountWidget::class, + // Widgets\FilamentInfoWidget::class, ]) ->spa() ->middleware([ diff --git a/resources/views/filament/tables/columns/keterangan-pengumuman.blade.php b/resources/views/filament/tables/columns/keterangan-pengumuman.blade.php new file mode 100644 index 00000000..902bdc1c --- /dev/null +++ b/resources/views/filament/tables/columns/keterangan-pengumuman.blade.php @@ -0,0 +1,31 @@ +@php + $record = $getRecord(); +@endphp + +@if($record->status === 'tidak_valid') +
+ Mohon maaf, berkas Anda dinyatakan tidak valid. + @if($record->alasan_tidak_valid) +
+ Alasan: {{ $record->alasan_tidak_valid }} + @endif +
+@elseif($record->status === 'valid') + @if($record->hasil === 'Layak') +
+ Selamat! Anda dinyatakan LULUS seleksi dan berhak menerima KIP-K. +
+ @elseif($record->hasil === 'Dipertimbangkan') +
+ Anda masuk dalam daftar pertimbangan. Mohon tunggu pengumuman selanjutnya. +
+ @else +
+ Mohon maaf, Anda dinyatakan TIDAK LULUS seleksi KIP-K. +
+ @endif +@else +
+ Berkas Anda masih dalam proses validasi. +
+@endif \ No newline at end of file diff --git a/resources/views/pengumuman.blade.php b/resources/views/pengumuman.blade.php new file mode 100644 index 00000000..79ca57a5 --- /dev/null +++ b/resources/views/pengumuman.blade.php @@ -0,0 +1,60 @@ + +
+
+
+

Hasil Pengumuman KIP-K

+ + @if($pengumuman) +
+

Status Berkas:

+
+ @if($pengumuman->status === 'valid') + Valid + @elseif($pengumuman->status === 'tidak_valid') + Tidak Valid + @else + Dalam Proses Validasi + @endif +
+
+ + @if($pengumuman->status === 'tidak_valid') +
+

Mohon maaf, berkas Anda dinyatakan tidak valid.

+ @if($pengumuman->alasan_tidak_valid) +

Alasan: {{ $pengumuman->alasan_tidak_valid }}

+ @endif +
+ @elseif($pengumuman->status === 'valid') +
+

Hasil Seleksi:

+
+ @if($pengumuman->hasil === 'Layak') +
+

Selamat! Anda dinyatakan LULUS seleksi dan berhak menerima KIP-K.

+
+ @elseif($pengumuman->hasil === 'Dipertimbangkan') +
+

Anda masuk dalam daftar pertimbangan. Mohon tunggu pengumuman selanjutnya.

+
+ @else +
+

Mohon maaf, Anda dinyatakan TIDAK LULUS seleksi KIP-K.

+
+ @endif +
+
+ @else +
+

Berkas Anda masih dalam proses validasi. Silakan cek kembali nanti.

+
+ @endif + @else +
+

Anda belum mengajukan pendaftaran KIP-K.

+
+ @endif +
+
+
+
\ No newline at end of file diff --git a/routes/web.php b/routes/web.php index 4efb0b07..545edb22 100644 --- a/routes/web.php +++ b/routes/web.php @@ -3,6 +3,7 @@ use Illuminate\Support\Facades\Route; use Illuminate\Support\Facades\Storage; use App\Http\Controllers\PdfViewController; +use App\Http\Controllers\PengumumanController; Route::get('/', function () { return view('welcome'); @@ -23,3 +24,7 @@ 'Content-Disposition' => 'inline; filename="' . basename($path) . '"' ]); })->where('path', '.*'); + +Route::middleware(['auth'])->group(function () { + Route::get('/pengumuman', [PengumumanController::class, 'show'])->name('pengumuman'); +});