fix testing
This commit is contained in:
parent
183a7bf01b
commit
c4d8bfb4d9
|
@ -3,12 +3,16 @@
|
|||
namespace App\Filament\Pages;
|
||||
|
||||
use App\Models\Parameter;
|
||||
use App\Models\Mahasiswa;
|
||||
use Filament\Pages\Page;
|
||||
use Filament\Infolists\Infolist;
|
||||
use Filament\Infolists\Components\Section;
|
||||
use Filament\Infolists\Components\TextEntry;
|
||||
use Filament\Infolists\Components\Grid;
|
||||
use Filament\Navigation\NavigationItem;
|
||||
use Filament\Actions\Action;
|
||||
use Barryvdh\DomPDF\Facade\Pdf;
|
||||
use Illuminate\Support\Facades\Storage;
|
||||
|
||||
class ProgresDataPage extends Page
|
||||
{
|
||||
|
@ -27,7 +31,46 @@ public function getTitle(): string
|
|||
public function infolist(Infolist $infolist): Infolist
|
||||
{
|
||||
$user = auth()->user();
|
||||
$data = Parameter::where('mahasiswa_id', $user->id)->first();
|
||||
|
||||
// Cari data mahasiswa berdasarkan user_id
|
||||
$mahasiswa = Mahasiswa::where('user_id', $user->id)->first();
|
||||
|
||||
// Jika mahasiswa ditemukan, cari data parameter
|
||||
$data = $mahasiswa ? Parameter::where('mahasiswa_id', $mahasiswa->id)->first() : null;
|
||||
|
||||
// Siapkan state untuk infolist
|
||||
$state = [
|
||||
'status' => 'Belum Mengisi Form',
|
||||
'hasil' => 'Belum Ada Hasil',
|
||||
'keterangan' => 'Silahkan lengkapi form pendaftaran KIP-K terlebih dahulu.'
|
||||
];
|
||||
|
||||
// Jika data ada, update state sesuai data di database
|
||||
if ($data) {
|
||||
$state['status'] = match($data->status) {
|
||||
'valid' => 'Berkas Valid',
|
||||
'tidak_valid' => 'Berkas Tidak Valid',
|
||||
'belum_validasi' => 'Belum Divalidasi',
|
||||
default => 'Belum Mengisi Form'
|
||||
};
|
||||
|
||||
$state['hasil'] = match($data->hasil) {
|
||||
'Diterima' => 'Diterima',
|
||||
'Tidak Diterima' => 'Tidak Diterima',
|
||||
default => 'Belum Ada Hasil'
|
||||
};
|
||||
|
||||
$state['keterangan'] = match($data->status) {
|
||||
'valid' => match($data->hasil) {
|
||||
'Diterima' => 'Selamat! Anda telah diterima sebagai penerima KIP-K. Silahkan cek pengumuman resmi untuk informasi lebih lanjut.',
|
||||
'Tidak Diterima' => 'Mohon maaf, Anda belum berhasil menjadi penerima KIP-K. Tetap semangat dan jangan menyerah!',
|
||||
default => 'Berkas Anda telah divalidasi. Hasil seleksi akan diumumkan segera.'
|
||||
},
|
||||
'tidak_valid' => "Berkas Anda tidak valid. Alasan: {$data->alasan_tidak_valid}",
|
||||
'belum_validasi' => 'Berkas Anda sedang dalam proses validasi. Mohon tunggu informasi selanjutnya.',
|
||||
default => 'Silahkan lengkapi form pendaftaran KIP-K terlebih dahulu.'
|
||||
};
|
||||
}
|
||||
|
||||
return $infolist
|
||||
->schema([
|
||||
|
@ -39,18 +82,17 @@ public function infolist(Infolist $infolist): Infolist
|
|||
->label('Status Berkas')
|
||||
->badge()
|
||||
->color(fn (string $state): string => match ($state) {
|
||||
'valid' => 'success',
|
||||
'tidak_valid' => 'danger',
|
||||
'belum_validasi' => 'warning',
|
||||
'Berkas Valid' => 'success',
|
||||
'Berkas Tidak Valid' => 'danger',
|
||||
'Belum Divalidasi' => 'warning',
|
||||
default => 'gray',
|
||||
}),
|
||||
TextEntry::make('hasil')
|
||||
->label('Hasil Seleksi')
|
||||
->badge()
|
||||
->color(fn (string $state): string => match ($state) {
|
||||
'Layak' => 'success',
|
||||
'Dipertimbangkan' => 'warning',
|
||||
'Tidak Layak' => 'danger',
|
||||
'Diterima' => 'success',
|
||||
'Tidak Diterima' => 'danger',
|
||||
default => 'gray',
|
||||
}),
|
||||
]),
|
||||
|
@ -63,11 +105,34 @@ public function infolist(Infolist $infolist): Infolist
|
|||
->columnSpanFull(),
|
||||
]),
|
||||
])
|
||||
->state([
|
||||
'status' => $data?->status ?? 'belum_validasi',
|
||||
'hasil' => $data?->hasil ?? 'Belum Ada Hasil',
|
||||
'keterangan' => $data?->keterangan ?? 'Data Anda sedang dalam proses validasi',
|
||||
]);
|
||||
->state($state);
|
||||
}
|
||||
|
||||
protected function getHeaderActions(): array
|
||||
{
|
||||
$user = auth()->user();
|
||||
$mahasiswa = Mahasiswa::with(['prodi', 'jurusan'])->where('user_id', $user->id)->first();
|
||||
$data = $mahasiswa ? Parameter::where('mahasiswa_id', $mahasiswa->id)->first() : null;
|
||||
|
||||
if ($data && $data->status === 'valid' && $data->hasil === 'Diterima') {
|
||||
return [
|
||||
Action::make('exportSurat')
|
||||
->label('Download Surat Keterangan')
|
||||
->icon('heroicon-o-document-arrow-down')
|
||||
->action(function () use ($mahasiswa) {
|
||||
$pdf = PDF::loadView('surat.keterangan', [
|
||||
'mahasiswa' => $mahasiswa,
|
||||
'tanggal' => now()->format('Y-m-d'),
|
||||
]);
|
||||
|
||||
return response()->streamDownload(function () use ($pdf) {
|
||||
echo $pdf->output();
|
||||
}, 'surat-keterangan-kipk.pdf');
|
||||
})
|
||||
];
|
||||
}
|
||||
|
||||
return [];
|
||||
}
|
||||
|
||||
public static function shouldRegisterNavigation(): bool
|
||||
|
|
|
@ -61,7 +61,8 @@ public static function table(Table $table): Table
|
|||
TextColumn::make('nama'),
|
||||
TextColumn::make('tgl_pembuatan')
|
||||
->label('Tanggal'),
|
||||
TextColumn::make('kuota'),
|
||||
TextColumn::make('kuota')
|
||||
->visible(fn () => !Auth::user()->hasRole('mahasiswa')),
|
||||
TextColumn::make('status')
|
||||
->badge()
|
||||
->color(fn (string $state): string => match ($state) {
|
||||
|
|
|
@ -70,64 +70,6 @@ public static function table(Table $table): Table
|
|||
->url(fn () => route('filament.admin.resources.hasil-penilaian.akreditasi-c'))
|
||||
->color('danger')
|
||||
->icon('heroicon-o-bookmark'),
|
||||
|
||||
// Tables\Actions\Action::make('setKuota')
|
||||
// ->label('Set Kuota Penerimaan')
|
||||
// ->form([
|
||||
// TextInput::make('kuota')
|
||||
// ->label('Jumlah Kuota')
|
||||
// ->numeric()
|
||||
// ->required()
|
||||
// ->minValue(1)
|
||||
// ->helperText('Masukkan jumlah kuota penerimaan. Hanya mahasiswa dengan nilai tertinggi dan berkas valid yang akan diterima.'),
|
||||
// ])
|
||||
// ->action(function (array $data): void {
|
||||
// DB::beginTransaction();
|
||||
// try {
|
||||
// // Reset semua hasil terlebih dahulu
|
||||
// Parameter::query()->update(['hasil' => 'Tidak Layak']);
|
||||
|
||||
// // Ambil semua data parameter yang valid dan urutkan berdasarkan total nilai
|
||||
// $validParameters = Parameter::where('status', 'valid')
|
||||
// ->orderBy('total_nilai', 'desc')
|
||||
// ->get();
|
||||
|
||||
// $kuota = (int) $data['kuota'];
|
||||
// $index = 0;
|
||||
|
||||
// foreach ($validParameters as $parameter) {
|
||||
// // Gunakan update langsung ke database untuk memastikan perubahan tersimpan
|
||||
// if ($index < $kuota) {
|
||||
// DB::table('parameters')
|
||||
// ->where('id', $parameter->id)
|
||||
// ->update(['hasil' => 'Layak']);
|
||||
// } elseif ($index < ($kuota + 3)) {
|
||||
// DB::table('parameters')
|
||||
// ->where('id', $parameter->id)
|
||||
// ->update(['hasil' => 'Dipertimbangkan']);
|
||||
// }
|
||||
// $index++;
|
||||
// }
|
||||
|
||||
// DB::commit();
|
||||
|
||||
// Notification::make()
|
||||
// ->title("Berhasil mengatur kuota penerimaan untuk {$kuota} mahasiswa")
|
||||
// ->success()
|
||||
// ->send();
|
||||
// } catch (\Exception $e) {
|
||||
// DB::rollBack();
|
||||
// Notification::make()
|
||||
// ->title('Terjadi kesalahan: ' . $e->getMessage())
|
||||
// ->danger()
|
||||
// ->send();
|
||||
// }
|
||||
// })
|
||||
// ->requiresConfirmation()
|
||||
// ->modalHeading('Set Kuota Penerimaan')
|
||||
// ->modalDescription('Apakah Anda yakin ingin mengatur kuota penerimaan? Tindakan ini akan mengubah status kelayakan semua mahasiswa.')
|
||||
// ->modalSubmitActionLabel('Ya, Set Kuota')
|
||||
// ->successNotificationTitle('Kuota berhasil diatur'),
|
||||
])
|
||||
->modifyQueryUsing(fn ($query) => $query->where('status', 'valid'))
|
||||
->columns([
|
||||
|
@ -165,24 +107,17 @@ public static function table(Table $table): Table
|
|||
->label('Hasil')
|
||||
->badge()
|
||||
->color(fn (string $state): string => match ($state) {
|
||||
'Layak' => 'success',
|
||||
'Dipertimbangkan' => 'warning',
|
||||
'Tidak Layak' => 'danger',
|
||||
'Diterima' => 'success',
|
||||
'Tidak Diterima' => 'danger',
|
||||
default => 'gray',
|
||||
})
|
||||
->formatStateUsing(fn (string $state): string => match ($state) {
|
||||
'Layak' => 'Diterima',
|
||||
'Tidak Layak' => 'Tidak Diterima',
|
||||
default => $state,
|
||||
}),
|
||||
])
|
||||
->defaultSort('total_nilai', 'desc')
|
||||
->filters([
|
||||
Tables\Filters\SelectFilter::make('hasil')
|
||||
->options([
|
||||
'Layak' => 'Layak',
|
||||
'Dipertimbangkan' => 'Dipertimbangkan',
|
||||
'Tidak Layak' => 'Tidak Layak',
|
||||
'Diterima' => 'Diterima',
|
||||
'Tidak Diterima' => 'Tidak Diterima',
|
||||
]),
|
||||
]);
|
||||
}
|
||||
|
|
|
@ -38,7 +38,7 @@ public function table(Table $table): Table
|
|||
// Reset hasil untuk akreditasi A
|
||||
Parameter::whereHas('mahasiswa.prodi', function ($query) {
|
||||
$query->where('akreditasi', 'A');
|
||||
})->update(['hasil' => 'Tidak Layak']);
|
||||
})->update(['hasil' => 'Tidak Diterima']);
|
||||
|
||||
// Ambil data parameter yang valid dengan akreditasi A
|
||||
$validParameters = Parameter::where('status', 'valid')
|
||||
|
@ -55,11 +55,7 @@ public function table(Table $table): Table
|
|||
if ($index < $kuota) {
|
||||
DB::table('parameters')
|
||||
->where('id', $parameter->id)
|
||||
->update(['hasil' => 'Layak']);
|
||||
} elseif ($index < ($kuota + 3)) {
|
||||
DB::table('parameters')
|
||||
->where('id', $parameter->id)
|
||||
->update(['hasil' => 'Dipertimbangkan']);
|
||||
->update(['hasil' => 'Diterima']);
|
||||
}
|
||||
$index++;
|
||||
}
|
||||
|
@ -139,9 +135,8 @@ public function table(Table $table): Table
|
|||
->label('Hasil')
|
||||
->badge()
|
||||
->color(fn (string $state): string => match ($state) {
|
||||
'Layak' => 'success',
|
||||
'Dipertimbangkan' => 'warning',
|
||||
'Tidak Layak' => 'danger',
|
||||
'Diterima' => 'success',
|
||||
'Tidak Diterima' => 'danger',
|
||||
default => 'gray',
|
||||
}),
|
||||
])
|
||||
|
@ -149,9 +144,8 @@ public function table(Table $table): Table
|
|||
->filters([
|
||||
\Filament\Tables\Filters\SelectFilter::make('hasil')
|
||||
->options([
|
||||
'Layak' => 'Layak',
|
||||
'Dipertimbangkan' => 'Dipertimbangkan',
|
||||
'Tidak Layak' => 'Tidak Layak',
|
||||
'Diterima' => 'success',
|
||||
'Tidak Diterima' => 'danger',
|
||||
]),
|
||||
]);
|
||||
}
|
||||
|
|
|
@ -39,7 +39,7 @@ public function table(Table $table): Table
|
|||
// Reset hasil untuk akreditasi B
|
||||
Parameter::whereHas('mahasiswa.prodi', function ($query) {
|
||||
$query->where('akreditasi', 'B');
|
||||
})->update(['hasil' => 'Tidak Layak']);
|
||||
})->update(['hasil' => 'Tidak Diterima']);
|
||||
|
||||
// Ambil data parameter yang valid dengan akreditasi B
|
||||
$validParameters = Parameter::where('status', 'valid')
|
||||
|
@ -56,11 +56,7 @@ public function table(Table $table): Table
|
|||
if ($index < $kuota) {
|
||||
DB::table('parameters')
|
||||
->where('id', $parameter->id)
|
||||
->update(['hasil' => 'Layak']);
|
||||
} elseif ($index < ($kuota + 3)) {
|
||||
DB::table('parameters')
|
||||
->where('id', $parameter->id)
|
||||
->update(['hasil' => 'Dipertimbangkan']);
|
||||
->update(['hasil' => 'Diterima']);
|
||||
}
|
||||
$index++;
|
||||
}
|
||||
|
@ -140,9 +136,8 @@ public function table(Table $table): Table
|
|||
->label('Hasil')
|
||||
->badge()
|
||||
->color(fn (string $state): string => match ($state) {
|
||||
'Layak' => 'success',
|
||||
'Dipertimbangkan' => 'warning',
|
||||
'Tidak Layak' => 'danger',
|
||||
'Diterima' => 'success',
|
||||
'Tidak Diterima' => 'danger',
|
||||
default => 'gray',
|
||||
}),
|
||||
])
|
||||
|
@ -150,9 +145,8 @@ public function table(Table $table): Table
|
|||
->filters([
|
||||
\Filament\Tables\Filters\SelectFilter::make('hasil')
|
||||
->options([
|
||||
'Layak' => 'Layak',
|
||||
'Dipertimbangkan' => 'Dipertimbangkan',
|
||||
'Tidak Layak' => 'Tidak Layak',
|
||||
'Diterima' => 'success',
|
||||
'Tidak Diterima' => 'danger',
|
||||
]),
|
||||
]);
|
||||
}
|
||||
|
|
|
@ -39,7 +39,7 @@ public function table(Table $table): Table
|
|||
// Reset hasil untuk akreditasi C
|
||||
Parameter::whereHas('mahasiswa.prodi', function ($query) {
|
||||
$query->where('akreditasi', 'C');
|
||||
})->update(['hasil' => 'Tidak Layak']);
|
||||
})->update(['hasil' => 'Tidak Diterima']);
|
||||
|
||||
// Ambil data parameter yang valid dengan akreditasi C
|
||||
$validParameters = Parameter::where('status', 'valid')
|
||||
|
@ -56,11 +56,7 @@ public function table(Table $table): Table
|
|||
if ($index < $kuota) {
|
||||
DB::table('parameters')
|
||||
->where('id', $parameter->id)
|
||||
->update(['hasil' => 'Layak']);
|
||||
} elseif ($index < ($kuota + 3)) {
|
||||
DB::table('parameters')
|
||||
->where('id', $parameter->id)
|
||||
->update(['hasil' => 'Dipertimbangkan']);
|
||||
->update(['hasil' => 'Diterima']);
|
||||
}
|
||||
$index++;
|
||||
}
|
||||
|
@ -140,9 +136,8 @@ public function table(Table $table): Table
|
|||
->label('Hasil')
|
||||
->badge()
|
||||
->color(fn (string $state): string => match ($state) {
|
||||
'Layak' => 'success',
|
||||
'Dipertimbangkan' => 'warning',
|
||||
'Tidak Layak' => 'danger',
|
||||
'Diterima' => 'success',
|
||||
'Tidak Diterima' => 'danger',
|
||||
default => 'gray',
|
||||
}),
|
||||
])
|
||||
|
@ -150,9 +145,8 @@ public function table(Table $table): Table
|
|||
->filters([
|
||||
\Filament\Tables\Filters\SelectFilter::make('hasil')
|
||||
->options([
|
||||
'Layak' => 'Layak',
|
||||
'Dipertimbangkan' => 'Dipertimbangkan',
|
||||
'Tidak Layak' => 'Tidak Layak',
|
||||
'Diterima' => 'success',
|
||||
'Tidak Diterima' => 'danger',
|
||||
]),
|
||||
]);
|
||||
}
|
||||
|
|
|
@ -36,6 +36,8 @@ public static function form(Form $form): Form
|
|||
TextInput::make('prioritas')
|
||||
->required(),
|
||||
TextInput::make('bobot')
|
||||
->disabled()
|
||||
->helperText('Bobot akan dihitung otomatis oleh sistem')
|
||||
// ->required(),
|
||||
]);
|
||||
}
|
||||
|
|
|
@ -38,6 +38,11 @@ class ParameterResource extends Resource
|
|||
|
||||
protected static ?string $title = 'Validasi Data';
|
||||
|
||||
public static function canCreate(): bool
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
public static function form(Form $form): Form
|
||||
{
|
||||
return $form
|
||||
|
@ -304,9 +309,8 @@ public static function table(Table $table): Table
|
|||
// ->label('Hasil')
|
||||
// ->badge()
|
||||
// ->color(fn (string $state): string => match ($state) {
|
||||
// 'Layak' => 'success',
|
||||
// 'Dipertimbangkan' => 'warning',
|
||||
// 'Tidak Layak' => 'danger',
|
||||
// 'Diterima' => 'success',
|
||||
// 'Tidak Diterima' => 'danger',
|
||||
// default => 'gray',
|
||||
// }),
|
||||
|
||||
|
@ -376,6 +380,12 @@ public static function table(Table $table): Table
|
|||
'valid' => 'Valid',
|
||||
'tidak_valid' => 'Tidak Valid',
|
||||
]),
|
||||
|
||||
Tables\Filters\SelectFilter::make('hasil')
|
||||
->options([
|
||||
'Diterima' => 'Diterima',
|
||||
'Tidak Diterima' => 'Tidak Diterima',
|
||||
]),
|
||||
])
|
||||
->actions([
|
||||
Tables\Actions\Action::make('validasi')
|
||||
|
@ -590,7 +600,6 @@ public static function getPages(): array
|
|||
{
|
||||
return [
|
||||
'index' => Pages\ListParameters::route('/'),
|
||||
'create' => Pages\CreateParameter::route('/create'),
|
||||
'edit' => Pages\EditParameter::route('/{record}/edit'),
|
||||
];
|
||||
}
|
||||
|
|
|
@ -1,78 +1,78 @@
|
|||
<?php
|
||||
|
||||
namespace App\Filament\Resources;
|
||||
// namespace App\Filament\Resources;
|
||||
|
||||
use App\Filament\Resources\PengumumanResource\Pages;
|
||||
use App\Models\Parameter;
|
||||
use Filament\Forms\Form;
|
||||
use Filament\Resources\Resource;
|
||||
use Filament\Tables;
|
||||
use Filament\Tables\Table;
|
||||
use Filament\Tables\Columns\TextColumn;
|
||||
use Filament\Tables\Columns\ViewColumn;
|
||||
use Illuminate\Database\Eloquent\Builder;
|
||||
// use App\Filament\Resources\PengumumanResource\Pages;
|
||||
// use App\Models\Parameter;
|
||||
// use Filament\Forms\Form;
|
||||
// use Filament\Resources\Resource;
|
||||
// use Filament\Tables;
|
||||
// use Filament\Tables\Table;
|
||||
// use Filament\Tables\Columns\TextColumn;
|
||||
// use Filament\Tables\Columns\ViewColumn;
|
||||
// use Illuminate\Database\Eloquent\Builder;
|
||||
|
||||
class PengumumanResource extends Resource
|
||||
{
|
||||
protected static ?string $model = Parameter::class;
|
||||
// class PengumumanResource extends Resource
|
||||
// {
|
||||
// protected static ?string $model = Parameter::class;
|
||||
|
||||
protected static ?string $navigationIcon = 'heroicon-o-document-text';
|
||||
protected static ?string $navigationGroup = 'Penilaian';
|
||||
protected static ?string $navigationLabel = 'Pengumuman';
|
||||
protected static ?int $navigationSort = 3;
|
||||
protected static ?string $slug = 'pengumuman';
|
||||
// protected static ?string $navigationIcon = 'heroicon-o-document-text';
|
||||
// protected static ?string $navigationGroup = 'Penilaian';
|
||||
// protected static ?string $navigationLabel = 'Pengumuman';
|
||||
// protected static ?int $navigationSort = 3;
|
||||
// protected static ?string $slug = 'pengumuman';
|
||||
|
||||
protected static ?string $modelLabel = 'Pengumuman';
|
||||
protected static ?string $pluralModelLabel = 'Pengumuman';
|
||||
protected static ?string $breadcrumb = 'Pengumuman';
|
||||
// protected static ?string $modelLabel = 'Pengumuman';
|
||||
// protected static ?string $pluralModelLabel = 'Pengumuman';
|
||||
// protected static ?string $breadcrumb = 'Pengumuman';
|
||||
|
||||
public static function table(Table $table): Table
|
||||
{
|
||||
return $table
|
||||
->columns([
|
||||
TextColumn::make('mahasiswa.nama')
|
||||
->label('Nama Mahasiswa')
|
||||
->searchable()
|
||||
->sortable(),
|
||||
// public static function table(Table $table): Table
|
||||
// {
|
||||
// return $table
|
||||
// ->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('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',
|
||||
}),
|
||||
// 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')
|
||||
->modifyQueryUsing(function (Builder $query): Builder {
|
||||
$user = auth()->user();
|
||||
if ($user->roles[0]->name == 'Mahasiswa') {
|
||||
return $query->where('mahasiswa_id', $user->id);
|
||||
}
|
||||
return $query;
|
||||
});
|
||||
}
|
||||
// ViewColumn::make('keterangan')
|
||||
// ->label('Keterangan')
|
||||
// ->view('filament.tables.columns.keterangan-pengumuman'),
|
||||
// ])
|
||||
// ->defaultSort('total_nilai', 'desc')
|
||||
// ->modifyQueryUsing(function (Builder $query): Builder {
|
||||
// $user = auth()->user();
|
||||
// if ($user->roles[0]->name == 'Mahasiswa') {
|
||||
// return $query->where('mahasiswa_id', $user->id);
|
||||
// }
|
||||
// return $query;
|
||||
// });
|
||||
// }
|
||||
|
||||
public static function getPages(): array
|
||||
{
|
||||
return [
|
||||
'index' => Pages\ListPengumuman::route('/'),
|
||||
];
|
||||
}
|
||||
}
|
||||
// public static function getPages(): array
|
||||
// {
|
||||
// return [
|
||||
// 'index' => Pages\ListPengumuman::route('/'),
|
||||
// ];
|
||||
// }
|
||||
// }
|
||||
|
|
|
@ -55,6 +55,8 @@ public static function form(Form $form): Form
|
|||
->required(),
|
||||
TextInput::make('bobot')
|
||||
->numeric()
|
||||
->disabled()
|
||||
->helperText('Bobot akan dihitung otomatis oleh sistem')
|
||||
// ->required(),
|
||||
]);
|
||||
}
|
||||
|
|
|
@ -1,30 +1,30 @@
|
|||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
// namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
||||
// use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
// use Illuminate\Database\Eloquent\Model;
|
||||
// use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
||||
|
||||
class Pengumuman extends Model
|
||||
{
|
||||
use HasFactory;
|
||||
// class Pengumuman extends Model
|
||||
// {
|
||||
// use HasFactory;
|
||||
|
||||
protected $table = 'pengumumans';
|
||||
// protected $table = 'pengumumans';
|
||||
|
||||
protected $fillable = [
|
||||
'parameter_id',
|
||||
'user_id',
|
||||
'keterangan'
|
||||
];
|
||||
// protected $fillable = [
|
||||
// 'parameter_id',
|
||||
// 'user_id',
|
||||
// 'keterangan'
|
||||
// ];
|
||||
|
||||
public function parameter(): BelongsTo
|
||||
{
|
||||
return $this->belongsTo(Parameter::class);
|
||||
}
|
||||
// public function parameter(): BelongsTo
|
||||
// {
|
||||
// return $this->belongsTo(Parameter::class);
|
||||
// }
|
||||
|
||||
public function user(): BelongsTo
|
||||
{
|
||||
return $this->belongsTo(User::class);
|
||||
}
|
||||
}
|
||||
// public function user(): BelongsTo
|
||||
// {
|
||||
// return $this->belongsTo(User::class);
|
||||
// }
|
||||
// }
|
|
@ -117,6 +117,16 @@ protected static function boot()
|
|||
}
|
||||
break;
|
||||
|
||||
case 'Terdata DTKS':
|
||||
// Ambil SubKriteria berdasarkan status terdata DTKS
|
||||
$subKriteria = SubKriteria::where('kriteria_id', $kriteria->id)
|
||||
->where('nama', $parameter->terdata_dtks)
|
||||
->first();
|
||||
if ($subKriteria) {
|
||||
$totalNilai += $subKriteria->bobot;
|
||||
}
|
||||
break;
|
||||
|
||||
case 'Kondisi Ekonomi':
|
||||
// Hitung jumlah berkas yang diupload
|
||||
$berkasCount = 0;
|
||||
|
|
|
@ -75,7 +75,7 @@ public function up()
|
|||
$table->decimal('total_nilai', 10, 7)->default(0);
|
||||
|
||||
// Hasil penilaian
|
||||
$table->enum('hasil', ['Layak', 'Dipertimbangkan', 'Tidak Layak'])->nullable();
|
||||
$table->enum('hasil', ['Diterima', 'Tidak Diterima'])->nullable();
|
||||
|
||||
|
||||
$table->timestamps();
|
||||
|
|
|
@ -1,24 +0,0 @@
|
|||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
return new class extends Migration
|
||||
{
|
||||
public function up()
|
||||
{
|
||||
Schema::create('pengumumans', function (Blueprint $table) {
|
||||
$table->id();
|
||||
$table->foreignId('parameter_id')->constrained('parameters')->cascadeOnDelete();
|
||||
$table->foreignId('user_id')->constrained('users')->cascadeOnDelete();
|
||||
$table->text('keterangan')->nullable();
|
||||
$table->timestamps();
|
||||
});
|
||||
}
|
||||
|
||||
public function down()
|
||||
{
|
||||
Schema::dropIfExists('pengumumans');
|
||||
}
|
||||
};
|
|
@ -17,22 +17,27 @@ public function run(): void
|
|||
[
|
||||
'nama' => 'Kepemilikan KIP',
|
||||
'prioritas' => 1,
|
||||
'bobot' => 0.5208333,
|
||||
'bobot' => 0.4566667,
|
||||
],
|
||||
[
|
||||
'nama' => 'Terdata DTKS',
|
||||
'prioritas' => 2,
|
||||
'bobot' => 0.2566667,
|
||||
],
|
||||
[
|
||||
'nama' => 'Tingkatan Desil',
|
||||
'prioritas' => 2,
|
||||
'bobot' => 0.2708333,
|
||||
'prioritas' => 3,
|
||||
'bobot' => 0.1566667,
|
||||
],
|
||||
[
|
||||
'nama' => 'Kondisi Ekonomi',
|
||||
'prioritas' => 3,
|
||||
'bobot' => 0.1458333,
|
||||
'prioritas' => 4,
|
||||
'bobot' => 0.09,
|
||||
],
|
||||
[
|
||||
'nama' => 'Status Orang Tua',
|
||||
'prioritas' => 4,
|
||||
'bobot' => 0.0625000,
|
||||
'prioritas' => 5,
|
||||
'bobot' => 0.04,
|
||||
],
|
||||
];
|
||||
|
||||
|
|
|
@ -20,104 +20,118 @@ public function run(): void
|
|||
'nama' => 'Memiliki KIP',
|
||||
'deskripsi' => 'Mahasiswa memiliki Kartu Indonesia Pintar',
|
||||
'prioritas' => 1,
|
||||
'bobot' => 0.3906250,
|
||||
'bobot' => 0.3425000,
|
||||
],
|
||||
[
|
||||
'kriteria_id' => 1,
|
||||
'nama' => 'Tidak Memiliki KIP',
|
||||
'deskripsi' => 'Mahasiswa tidak memiliki Kartu Indonesia Pintar',
|
||||
'prioritas' => 2,
|
||||
'bobot' => 0.1302083,
|
||||
'bobot' => 0.1141667,
|
||||
],
|
||||
|
||||
// Subkriteria untuk Tingkatan Desil (kriteria_id: 2)
|
||||
// Subkriteria untuk Terdata dalam DTKS (kriteria_id: 2)
|
||||
[
|
||||
'kriteria_id' => 2,
|
||||
'nama' => 'Terdata',
|
||||
'deskripsi' => 'Mahasiswa yang datanya tercatat dalam Data Terpadu Kesejahteraan Sosial (DTKS).',
|
||||
'prioritas' => 1,
|
||||
'bobot' => 0.1925000,
|
||||
],
|
||||
[
|
||||
'kriteria_id' => 2,
|
||||
'nama' => 'Tidak Terdata',
|
||||
'deskripsi' => 'Mahasiswa yang datanya tidak tercatat dalam Data Terpadu Kesejahteraan Sosial (DTKS).',
|
||||
'prioritas' => 2,
|
||||
'bobot' => 0.0641667,
|
||||
],
|
||||
// Subkriteria untuk Tingkatan Desil (kriteria_id: 3)
|
||||
[
|
||||
'kriteria_id' => 3,
|
||||
'nama' => 'Desil 1',
|
||||
'deskripsi' => 'Tingkat kesejahteraan terendah',
|
||||
'prioritas' => 1,
|
||||
'bobot' => 0.1238805,
|
||||
'bobot' => 0.0715445,
|
||||
],
|
||||
[
|
||||
'kriteria_id' => 2,
|
||||
'kriteria_id' => 3,
|
||||
'nama' => 'Desil 2',
|
||||
'deskripsi' => 'Tingkat kesejahteraan sangat rendah',
|
||||
'prioritas' => 2,
|
||||
'bobot' => 0.0695139,
|
||||
'bobot' => 0.0402111,
|
||||
],
|
||||
[
|
||||
'kriteria_id' => 2,
|
||||
'kriteria_id' => 3,
|
||||
'nama' => 'Desil 3',
|
||||
'deskripsi' => 'Tingkat kesejahteraan rendah',
|
||||
'prioritas' => 3,
|
||||
'bobot' => 0.0424306,
|
||||
'bobot' => 0.0245444,
|
||||
],
|
||||
[
|
||||
'kriteria_id' => 2,
|
||||
'kriteria_id' => 3,
|
||||
'nama' => 'Desil 4',
|
||||
'deskripsi' => 'Tingkat kesejahteraan menengah bawah',
|
||||
'prioritas' => 4,
|
||||
'bobot' => 0.0243750,
|
||||
'bobot' => 0.0141000,
|
||||
],
|
||||
[
|
||||
'kriteria_id' => 2,
|
||||
'kriteria_id' => 3,
|
||||
'nama' => 'Desil 5',
|
||||
'deskripsi' => 'Tingkat kesejahteraan menengah',
|
||||
'prioritas' => 5,
|
||||
'bobot' => 0.0108333,
|
||||
'bobot' => 0.0062667,
|
||||
],
|
||||
|
||||
// Subkriteria untuk Kondisi Ekonomi (kriteria_id: 3)
|
||||
// Subkriteria untuk Kondisi Ekonomi (kriteria_id: 4)
|
||||
[
|
||||
'kriteria_id' => 3,
|
||||
'kriteria_id' => 4,
|
||||
'nama' => 'Sangat Kurang Mampu',
|
||||
'deskripsi' => 'Memiliki lebih dari 2 bantuan pemerintah',
|
||||
'prioritas' => 1,
|
||||
'bobot' => 0.0759548,
|
||||
'bobot' => 0.0468750,
|
||||
],
|
||||
[
|
||||
'kriteria_id' => 3,
|
||||
'kriteria_id' => 4,
|
||||
'nama' => 'Kurang Mampu',
|
||||
'deskripsi' => 'Memiliki 2 bantuan pemerintah',
|
||||
'prioritas' => 2,
|
||||
'bobot' => 0.0394965,
|
||||
'bobot' => 0.0243750,
|
||||
],
|
||||
[
|
||||
'kriteria_id' => 3,
|
||||
'kriteria_id' => 4,
|
||||
'nama' => 'Cukup Mampu',
|
||||
'deskripsi' => 'Mahasiswa memiliki 1 bantuan pemerintah',
|
||||
'prioritas' => 3,
|
||||
'bobot' => 0.0212674,
|
||||
'bobot' => 0.0131250,
|
||||
],
|
||||
[
|
||||
'kriteria_id' => 3,
|
||||
'kriteria_id' => 4,
|
||||
'nama' => 'Tidak Menerima Bantuan',
|
||||
'deskripsi' => 'Mahasiswa tidak memiliki bantuan pemerintah',
|
||||
'prioritas' => 4,
|
||||
'bobot' => 0.0091146,
|
||||
'bobot' => 0.0056250,
|
||||
],
|
||||
|
||||
// Subkriteria untuk Status Orang Tua (kriteria_id: 4)
|
||||
// Subkriteria untuk Status Orang Tua (kriteria_id: 5)
|
||||
[
|
||||
'kriteria_id' => 4,
|
||||
'kriteria_id' => 5,
|
||||
'nama' => 'Kedua Orang Tua Wafat',
|
||||
'deskripsi' => 'Ayah dan Ibu wafat',
|
||||
'prioritas' => 1,
|
||||
'bobot' => 0.0381944,
|
||||
'bobot' => 0.0244444,
|
||||
],
|
||||
[
|
||||
'kriteria_id' => 4,
|
||||
'kriteria_id' => 5,
|
||||
'nama' => 'Salah Satu Orang Tua Wafat',
|
||||
'deskripsi' => 'Ayah atau Ibu-nya wafat',
|
||||
'prioritas' => 2,
|
||||
'bobot' => 0.0173611,
|
||||
'bobot' => 0.0111111,
|
||||
],
|
||||
[
|
||||
'kriteria_id' => 4,
|
||||
'kriteria_id' => 5,
|
||||
'nama' => 'Kedua Orang Tua Masih Hidup',
|
||||
'deskripsi' => 'Ayah dan Ibu-nya masih hidup',
|
||||
'prioritas' => 3,
|
||||
'bobot' => 0.0069444,
|
||||
'bobot' => 0.0044444,
|
||||
],
|
||||
];
|
||||
|
||||
|
|
|
@ -0,0 +1,165 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Surat Keterangan KIP-K</title>
|
||||
<style>
|
||||
body {
|
||||
font-family: Arial, sans-serif;
|
||||
line-height: 1.6;
|
||||
margin: 40px;
|
||||
font-size: 12px;
|
||||
}
|
||||
.header-table {
|
||||
width: 100%;
|
||||
border-collapse: collapse;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
.header-table td {
|
||||
vertical-align: top;
|
||||
}
|
||||
.logo {
|
||||
width: 70px;
|
||||
height: 70px;
|
||||
}
|
||||
.instansi-text {
|
||||
text-align: center;
|
||||
font-size: 14px;
|
||||
font-weight: bold;
|
||||
line-height: 1.5;
|
||||
}
|
||||
.line {
|
||||
border-top: 2px solid black;
|
||||
margin-top: 5px;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
.document-info {
|
||||
font-size: 11px;
|
||||
margin-top: 5px;
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
.document-info div {
|
||||
margin-bottom: 2px;
|
||||
}
|
||||
.header {
|
||||
text-align: center;
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
.content {
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
.footer {
|
||||
margin-top: 50px;
|
||||
text-align: right;
|
||||
}
|
||||
.signature {
|
||||
margin-top: 50px;
|
||||
text-align: right;
|
||||
}
|
||||
.signature-line {
|
||||
margin-top: 50px;
|
||||
border-top: 1px solid black;
|
||||
width: 200px;
|
||||
margin-left: auto;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<!-- HEADER -->
|
||||
<table class="header-table" style="border: none;">
|
||||
<tr>
|
||||
<td style="width: 15%; border: none;">
|
||||
<img src="{{ public_path('images/logo-polije.png') }}" class="logo" alt="Logo">
|
||||
</td>
|
||||
<td style="width: 85%; border: none;" class="instansi-text">
|
||||
KEMENTERIAN PENDIDIKAN TINGGI, SAINS, DAN TEKNOLOGI<br>
|
||||
POLITEKNIK NEGERI JEMBER<br>
|
||||
JL. Mastrip PO BOX 164 Jember 68101
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<div class="line"></div>
|
||||
|
||||
<div class="header">
|
||||
<h2>SURAT KETERANGAN</h2>
|
||||
<h3>PENERIMA KIP-K</h3>
|
||||
<p>Nomor: {{ date('Y') }}/KIP-K/{{ str_pad($mahasiswa->id, 4, '0', STR_PAD_LEFT) }}</p>
|
||||
</div>
|
||||
|
||||
<div class="content">
|
||||
<p>Yang bertanda tangan di bawah ini, Kepala Program Studi {{ $mahasiswa->prodi->nama ?? '-' }}, menyatakan bahwa:</p>
|
||||
|
||||
<table style="margin-left: 40px;">
|
||||
<tr>
|
||||
<td>No. Registrasi KIP-K</td>
|
||||
<td>: {{ $mahasiswa->noreg_kipk }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Nama Lengkap</td>
|
||||
<td>: {{ $mahasiswa->nama }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>NIM</td>
|
||||
<td>: {{ $mahasiswa->NIM }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Program Studi</td>
|
||||
<td>: {{ $mahasiswa->prodi->nama ?? '-' }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Jurusan</td>
|
||||
<td>: {{ $mahasiswa->jurusan->nama ?? '-' }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Akreditasi Prodi</td>
|
||||
<td>: {{ $mahasiswa->akreditasi }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Angkatan</td>
|
||||
<td>: {{ $mahasiswa->angkatan }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Jalur Masuk</td>
|
||||
<td>: {{ $mahasiswa->jalur_masuk }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>No. Handphone</td>
|
||||
<td>: {{ $mahasiswa->ponsel }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Alamat</td>
|
||||
<td>: {{ $mahasiswa->alamat }}</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<p style="margin-top: 20px;">
|
||||
Telah dinyatakan <strong>DITERIMA</strong> sebagai penerima Kartu Indonesia Pintar Kuliah (KIP-K)
|
||||
berdasarkan hasil seleksi yang telah dilakukan.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="footer">
|
||||
<p>Jember, {{ \Carbon\Carbon::parse($tanggal)->locale('id')->isoFormat('D MMMM Y') }}</p>
|
||||
<table style="width: 100%; margin-top: 50px;">
|
||||
<tr>
|
||||
<td style="width: 33%; text-align: center;">
|
||||
<p>Penerima KIP-K</p>
|
||||
<div style="border-top: 1px solid black; width: 200px; margin: 50px auto 0;"></div>
|
||||
<p>{{ $mahasiswa->nama }}</p>
|
||||
</td>
|
||||
<td style="width: 33%; text-align: center;">
|
||||
<p>Wali Mahasiswa</p>
|
||||
<div style="border-top: 1px solid black; width: 200px; margin: 50px auto 0;"></div>
|
||||
<p>........................</p>
|
||||
</td>
|
||||
<td style="width: 33%; text-align: center;">
|
||||
<p>Kepala Program Studi</p>
|
||||
<div style="border-top: 1px solid black; width: 200px; margin: 50px auto 0;"></div>
|
||||
<p>........................</p>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
Loading…
Reference in New Issue