fixing set kuota akreditasi
This commit is contained in:
parent
f59f93b885
commit
183a7bf01b
|
@ -4,6 +4,8 @@
|
|||
|
||||
use App\Models\Parameter;
|
||||
use App\Models\Mahasiswa;
|
||||
use App\Models\Jurusan;
|
||||
use App\Models\Prodi;
|
||||
use Filament\Forms\Components\Wizard;
|
||||
use Filament\Forms\Components\TextInput;
|
||||
use Filament\Forms\Components\Select;
|
||||
|
@ -57,10 +59,36 @@ public function form(Form $form): Form
|
|||
TextInput::make('noreg_kipk')->label('No. Registrasi KIP-K')->required(),
|
||||
TextInput::make('nama')->label('Nama Lengkap')->required(),
|
||||
TextInput::make('nim')->label('NIM')->required(),
|
||||
TextInput::make('jurusan')->label('Jurusan')->required(),
|
||||
TextInput::make('prodi')->label('Program Studi')->required(),
|
||||
Select::make('jurusan_id')
|
||||
->label('Jurusan')
|
||||
->options(Jurusan::all()->pluck('nama', 'id'))
|
||||
->required()
|
||||
->reactive()
|
||||
->afterStateUpdated(fn (callable $set) => $set('prodi_id', null)),
|
||||
Select::make('prodi_id')
|
||||
->label('Program Studi')
|
||||
->options(function (callable $get) {
|
||||
$jurusanId = $get('jurusan_id');
|
||||
if (!$jurusanId) {
|
||||
return [];
|
||||
}
|
||||
return Prodi::where('jurusan_id', $jurusanId)
|
||||
->pluck('nama', 'id');
|
||||
})
|
||||
->required()
|
||||
->reactive()
|
||||
->afterStateUpdated(function (callable $set, callable $get) {
|
||||
$prodiId = $get('prodi_id');
|
||||
if ($prodiId) {
|
||||
$prodi = Prodi::find($prodiId);
|
||||
$set('akreditasi', $prodi->akreditasi);
|
||||
}
|
||||
}),
|
||||
TextInput::make('akreditasi')
|
||||
->label('Akreditasi Prodi')
|
||||
->disabled()
|
||||
->required(),
|
||||
TextInput::make('angkatan')->label('Angkatan')->required(),
|
||||
TextInput::make('semester')->label('Semester')->required(),
|
||||
TextInput::make('jalur_masuk')->label('Jalur Masuk')->required(),
|
||||
TextInput::make('ponsel')->label('No. Handphone')->tel()->required(),
|
||||
TextInput::make('alamat')->label('Alamat')->required(),
|
||||
|
@ -231,11 +259,11 @@ public function submit()
|
|||
'user_id' => auth()->id(),
|
||||
'noreg_kipk' => $data['noreg_kipk'],
|
||||
'nama' => $data['nama'],
|
||||
'nim' => $data['nim'],
|
||||
'jurusan' => $data['jurusan'],
|
||||
'prodi' => $data['prodi'],
|
||||
'NIM' => $data['nim'],
|
||||
'jurusan_id' => $data['jurusan_id'],
|
||||
'prodi_id' => $data['prodi_id'],
|
||||
'akreditasi' => $data['akreditasi'] ?? Prodi::find($data['prodi_id'])->akreditasi,
|
||||
'angkatan' => $data['angkatan'],
|
||||
'semester' => $data['semester'],
|
||||
'jalur_masuk' => $data['jalur_masuk'],
|
||||
'ponsel' => $data['ponsel'],
|
||||
'alamat' => $data['alamat'],
|
||||
|
|
|
@ -32,63 +32,102 @@ public static function table(Table $table): Table
|
|||
{
|
||||
return $table
|
||||
->headerActions([
|
||||
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')
|
||||
Tables\Actions\Action::make('exportPdf')
|
||||
->label('Export PDF')
|
||||
->icon('heroicon-o-document-arrow-down')
|
||||
->color('info')
|
||||
->action(function () {
|
||||
$data = Parameter::with(['mahasiswa.jurusan', 'mahasiswa.prodi'])
|
||||
->where('status', 'valid')
|
||||
->orderBy('total_nilai', 'desc')
|
||||
->get();
|
||||
|
||||
$kuota = (int) $data['kuota'];
|
||||
$index = 0;
|
||||
$pdf = \PDF::loadView('exports.hasil-penilaian', [
|
||||
'data' => $data,
|
||||
'title' => 'Hasil Penilaian KIPK',
|
||||
'date' => now()->format('d F Y'),
|
||||
]);
|
||||
|
||||
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++;
|
||||
}
|
||||
return response()->streamDownload(function () use ($pdf) {
|
||||
echo $pdf->output();
|
||||
}, 'hasil-penilaian-' . now()->format('Y-m-d') . '.pdf');
|
||||
}),
|
||||
|
||||
DB::commit();
|
||||
Tables\Actions\Action::make('akreditasiA')
|
||||
->label('Set Akreditasi A')
|
||||
->url(fn () => route('filament.admin.resources.hasil-penilaian.akreditasi-a'))
|
||||
->color('success')
|
||||
->icon('heroicon-o-bookmark'),
|
||||
|
||||
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'),
|
||||
Tables\Actions\Action::make('akreditasiB')
|
||||
->label('Set Akreditasi B')
|
||||
->url(fn () => route('filament.admin.resources.hasil-penilaian.akreditasi-b'))
|
||||
->color('warning')
|
||||
->icon('heroicon-o-bookmark'),
|
||||
|
||||
Tables\Actions\Action::make('akreditasiC')
|
||||
->label('Set Akreditasi C')
|
||||
->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([
|
||||
|
@ -102,6 +141,21 @@ public static function table(Table $table): Table
|
|||
->searchable()
|
||||
->sortable(),
|
||||
|
||||
TextColumn::make('mahasiswa.jurusan.nama')
|
||||
->label('Jurusan')
|
||||
->searchable()
|
||||
->sortable(),
|
||||
|
||||
TextColumn::make('mahasiswa.prodi.nama')
|
||||
->label('Program Studi')
|
||||
->searchable()
|
||||
->sortable(),
|
||||
|
||||
TextColumn::make('mahasiswa.prodi.akreditasi')
|
||||
->label('Akreditasi Prodi')
|
||||
->searchable()
|
||||
->sortable(),
|
||||
|
||||
TextColumn::make('total_nilai')
|
||||
->label('Total Nilai')
|
||||
->formatStateUsing(fn ($state) => number_format($state, 4))
|
||||
|
@ -115,6 +169,11 @@ public static function table(Table $table): Table
|
|||
'Dipertimbangkan' => 'warning',
|
||||
'Tidak Layak' => 'danger',
|
||||
default => 'gray',
|
||||
})
|
||||
->formatStateUsing(fn (string $state): string => match ($state) {
|
||||
'Layak' => 'Diterima',
|
||||
'Tidak Layak' => 'Tidak Diterima',
|
||||
default => $state,
|
||||
}),
|
||||
])
|
||||
->defaultSort('total_nilai', 'desc')
|
||||
|
@ -132,6 +191,9 @@ public static function getPages(): array
|
|||
{
|
||||
return [
|
||||
'index' => Pages\ListHasil::route('/'),
|
||||
'akreditasi-a' => Pages\HasilAkreditasiA::route('/akreditasi-a'),
|
||||
'akreditasi-b' => Pages\HasilAkreditasiB::route('/akreditasi-b'),
|
||||
'akreditasi-c' => Pages\HasilAkreditasiC::route('/akreditasi-c'),
|
||||
];
|
||||
}
|
||||
}
|
|
@ -0,0 +1,158 @@
|
|||
<?php
|
||||
|
||||
namespace App\Filament\Resources\HasilResource\Pages;
|
||||
|
||||
use App\Filament\Resources\HasilResource;
|
||||
use Filament\Resources\Pages\ListRecords;
|
||||
use Filament\Tables\Table;
|
||||
use Filament\Tables\Columns\TextColumn;
|
||||
use Filament\Tables\Actions\Action;
|
||||
use Filament\Forms\Components\TextInput;
|
||||
use Filament\Notifications\Notification;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use App\Models\Parameter;
|
||||
|
||||
class HasilAkreditasiA extends ListRecords
|
||||
{
|
||||
protected static string $resource = HasilResource::class;
|
||||
|
||||
protected static ?string $title = 'Hasil Penilaian Akreditasi A';
|
||||
|
||||
public function table(Table $table): Table
|
||||
{
|
||||
return $table
|
||||
->headerActions([
|
||||
Action::make('setKuota')
|
||||
->label('Set Kuota Penerimaan')
|
||||
->form([
|
||||
TextInput::make('kuota')
|
||||
->label('Jumlah Kuota')
|
||||
->numeric()
|
||||
->required()
|
||||
->minValue(1)
|
||||
->helperText('Masukkan jumlah kuota penerimaan untuk akreditasi A.'),
|
||||
])
|
||||
->action(function (array $data): void {
|
||||
DB::beginTransaction();
|
||||
try {
|
||||
// Reset hasil untuk akreditasi A
|
||||
Parameter::whereHas('mahasiswa.prodi', function ($query) {
|
||||
$query->where('akreditasi', 'A');
|
||||
})->update(['hasil' => 'Tidak Layak']);
|
||||
|
||||
// Ambil data parameter yang valid dengan akreditasi A
|
||||
$validParameters = Parameter::where('status', 'valid')
|
||||
->whereHas('mahasiswa.prodi', function ($query) {
|
||||
$query->where('akreditasi', 'A');
|
||||
})
|
||||
->orderBy('total_nilai', 'desc')
|
||||
->get();
|
||||
|
||||
$kuota = (int) $data['kuota'];
|
||||
$index = 0;
|
||||
|
||||
foreach ($validParameters as $parameter) {
|
||||
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 akreditasi A")
|
||||
->success()
|
||||
->send();
|
||||
} catch (\Exception $e) {
|
||||
DB::rollBack();
|
||||
Notification::make()
|
||||
->title('Terjadi kesalahan: ' . $e->getMessage())
|
||||
->danger()
|
||||
->send();
|
||||
}
|
||||
})
|
||||
->requiresConfirmation()
|
||||
->modalHeading('Set Kuota Penerimaan Akreditasi A')
|
||||
->modalDescription('Apakah Anda yakin ingin mengatur kuota penerimaan untuk akreditasi A?')
|
||||
->modalSubmitActionLabel('Ya, Set Kuota')
|
||||
->successNotificationTitle('Kuota berhasil diatur'),
|
||||
|
||||
Action::make('resetKuota')
|
||||
->label('Reset')
|
||||
->color('danger')
|
||||
->icon('heroicon-o-arrow-path')
|
||||
->action(function (): void {
|
||||
DB::beginTransaction();
|
||||
try {
|
||||
Parameter::whereHas('mahasiswa.prodi', function ($query) {
|
||||
$query->where('akreditasi', 'A');
|
||||
})->update(['hasil' => null]);
|
||||
|
||||
DB::commit();
|
||||
|
||||
Notification::make()
|
||||
->title('Berhasil mereset hasil kuota penerimaan')
|
||||
->success()
|
||||
->send();
|
||||
} catch (\Exception $e) {
|
||||
DB::rollBack();
|
||||
Notification::make()
|
||||
->title('Terjadi kesalahan: ' . $e->getMessage())
|
||||
->danger()
|
||||
->send();
|
||||
}
|
||||
})
|
||||
->requiresConfirmation()
|
||||
->modalHeading('Reset Kuota Penerimaan')
|
||||
->modalDescription('Apakah Anda yakin ingin mereset hasil kuota penerimaan? Semua hasil akan dikosongkan.')
|
||||
->modalSubmitActionLabel('Ya, Reset Kuota')
|
||||
->successNotificationTitle('Kuota berhasil direset'),
|
||||
])
|
||||
->modifyQueryUsing(fn ($query) => $query->where('status', 'valid')
|
||||
->whereHas('mahasiswa.prodi', function ($query) {
|
||||
$query->where('akreditasi', 'A');
|
||||
}))
|
||||
->columns([
|
||||
TextColumn::make('no')
|
||||
->label('No.')
|
||||
->rowIndex(false)
|
||||
->alignCenter(),
|
||||
|
||||
TextColumn::make('mahasiswa.nama')
|
||||
->label('Nama Mahasiswa')
|
||||
->searchable()
|
||||
->sortable(),
|
||||
|
||||
TextColumn::make('total_nilai')
|
||||
->label('Total Nilai')
|
||||
->formatStateUsing(fn ($state) => number_format($state, 4))
|
||||
->sortable(),
|
||||
|
||||
TextColumn::make('hasil')
|
||||
->label('Hasil')
|
||||
->badge()
|
||||
->color(fn (string $state): string => match ($state) {
|
||||
'Layak' => 'success',
|
||||
'Dipertimbangkan' => 'warning',
|
||||
'Tidak Layak' => 'danger',
|
||||
default => 'gray',
|
||||
}),
|
||||
])
|
||||
->defaultSort('total_nilai', 'desc')
|
||||
->filters([
|
||||
\Filament\Tables\Filters\SelectFilter::make('hasil')
|
||||
->options([
|
||||
'Layak' => 'Layak',
|
||||
'Dipertimbangkan' => 'Dipertimbangkan',
|
||||
'Tidak Layak' => 'Tidak Layak',
|
||||
]),
|
||||
]);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,159 @@
|
|||
<?php
|
||||
|
||||
namespace App\Filament\Resources\HasilResource\Pages;
|
||||
|
||||
use App\Filament\Resources\HasilResource;
|
||||
use Filament\Resources\Pages\ListRecords;
|
||||
use Filament\Tables\Table;
|
||||
use Filament\Tables\Columns\TextColumn;
|
||||
use Filament\Tables\Actions\Action;
|
||||
use Filament\Forms\Components\TextInput;
|
||||
use Filament\Notifications\Notification;
|
||||
use Filament\Tables\Filters\SelectFilter;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use App\Models\Parameter;
|
||||
|
||||
class HasilAkreditasiB extends ListRecords
|
||||
{
|
||||
protected static string $resource = HasilResource::class;
|
||||
|
||||
protected static ?string $title = 'Hasil Penilaian Akreditasi B';
|
||||
|
||||
public function table(Table $table): Table
|
||||
{
|
||||
return $table
|
||||
->headerActions([
|
||||
Action::make('setKuota')
|
||||
->label('Set Kuota Penerimaan')
|
||||
->form([
|
||||
TextInput::make('kuota')
|
||||
->label('Jumlah Kuota')
|
||||
->numeric()
|
||||
->required()
|
||||
->minValue(1)
|
||||
->helperText('Masukkan jumlah kuota penerimaan untuk akreditasi B.'),
|
||||
])
|
||||
->action(function (array $data): void {
|
||||
DB::beginTransaction();
|
||||
try {
|
||||
// Reset hasil untuk akreditasi B
|
||||
Parameter::whereHas('mahasiswa.prodi', function ($query) {
|
||||
$query->where('akreditasi', 'B');
|
||||
})->update(['hasil' => 'Tidak Layak']);
|
||||
|
||||
// Ambil data parameter yang valid dengan akreditasi B
|
||||
$validParameters = Parameter::where('status', 'valid')
|
||||
->whereHas('mahasiswa.prodi', function ($query) {
|
||||
$query->where('akreditasi', 'B');
|
||||
})
|
||||
->orderBy('total_nilai', 'desc')
|
||||
->get();
|
||||
|
||||
$kuota = (int) $data['kuota'];
|
||||
$index = 0;
|
||||
|
||||
foreach ($validParameters as $parameter) {
|
||||
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 akreditasi B")
|
||||
->success()
|
||||
->send();
|
||||
} catch (\Exception $e) {
|
||||
DB::rollBack();
|
||||
Notification::make()
|
||||
->title('Terjadi kesalahan: ' . $e->getMessage())
|
||||
->danger()
|
||||
->send();
|
||||
}
|
||||
})
|
||||
->requiresConfirmation()
|
||||
->modalHeading('Set Kuota Penerimaan Akreditasi B')
|
||||
->modalDescription('Apakah Anda yakin ingin mengatur kuota penerimaan untuk akreditasi B?')
|
||||
->modalSubmitActionLabel('Ya, Set Kuota')
|
||||
->successNotificationTitle('Kuota berhasil diatur'),
|
||||
|
||||
Action::make('resetKuota')
|
||||
->label('Reset')
|
||||
->color('danger')
|
||||
->icon('heroicon-o-arrow-path')
|
||||
->action(function (): void {
|
||||
DB::beginTransaction();
|
||||
try {
|
||||
Parameter::whereHas('mahasiswa.prodi', function ($query) {
|
||||
$query->where('akreditasi', 'B');
|
||||
})->update(['hasil' => null]);
|
||||
|
||||
DB::commit();
|
||||
|
||||
Notification::make()
|
||||
->title('Berhasil mereset hasil kuota penerimaan')
|
||||
->success()
|
||||
->send();
|
||||
} catch (\Exception $e) {
|
||||
DB::rollBack();
|
||||
Notification::make()
|
||||
->title('Terjadi kesalahan: ' . $e->getMessage())
|
||||
->danger()
|
||||
->send();
|
||||
}
|
||||
})
|
||||
->requiresConfirmation()
|
||||
->modalHeading('Reset Kuota Penerimaan')
|
||||
->modalDescription('Apakah Anda yakin ingin mereset hasil kuota penerimaan? Semua hasil akan dikosongkan.')
|
||||
->modalSubmitActionLabel('Ya, Reset Kuota')
|
||||
->successNotificationTitle('Kuota berhasil direset'),
|
||||
])
|
||||
->modifyQueryUsing(fn ($query) => $query->where('status', 'valid')
|
||||
->whereHas('mahasiswa.prodi', function ($query) {
|
||||
$query->where('akreditasi', 'B');
|
||||
}))
|
||||
->columns([
|
||||
TextColumn::make('no')
|
||||
->label('No.')
|
||||
->rowIndex(false)
|
||||
->alignCenter(),
|
||||
|
||||
TextColumn::make('mahasiswa.nama')
|
||||
->label('Nama Mahasiswa')
|
||||
->searchable()
|
||||
->sortable(),
|
||||
|
||||
TextColumn::make('total_nilai')
|
||||
->label('Total Nilai')
|
||||
->formatStateUsing(fn ($state) => number_format($state, 4))
|
||||
->sortable(),
|
||||
|
||||
TextColumn::make('hasil')
|
||||
->label('Hasil')
|
||||
->badge()
|
||||
->color(fn (string $state): string => match ($state) {
|
||||
'Layak' => 'success',
|
||||
'Dipertimbangkan' => 'warning',
|
||||
'Tidak Layak' => 'danger',
|
||||
default => 'gray',
|
||||
}),
|
||||
])
|
||||
->defaultSort('total_nilai', 'desc')
|
||||
->filters([
|
||||
\Filament\Tables\Filters\SelectFilter::make('hasil')
|
||||
->options([
|
||||
'Layak' => 'Layak',
|
||||
'Dipertimbangkan' => 'Dipertimbangkan',
|
||||
'Tidak Layak' => 'Tidak Layak',
|
||||
]),
|
||||
]);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,159 @@
|
|||
<?php
|
||||
|
||||
namespace App\Filament\Resources\HasilResource\Pages;
|
||||
|
||||
use App\Filament\Resources\HasilResource;
|
||||
use Filament\Resources\Pages\ListRecords;
|
||||
use Filament\Tables\Table;
|
||||
use Filament\Tables\Columns\TextColumn;
|
||||
use Filament\Tables\Actions\Action;
|
||||
use Filament\Forms\Components\TextInput;
|
||||
use Filament\Notifications\Notification;
|
||||
use Filament\Tables\Filters\SelectFilter;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use App\Models\Parameter;
|
||||
|
||||
class HasilAkreditasiC extends ListRecords
|
||||
{
|
||||
protected static string $resource = HasilResource::class;
|
||||
|
||||
protected static ?string $title = 'Hasil Penilaian Akreditasi C';
|
||||
|
||||
public function table(Table $table): Table
|
||||
{
|
||||
return $table
|
||||
->headerActions([
|
||||
Action::make('setKuota')
|
||||
->label('Set Kuota Penerimaan')
|
||||
->form([
|
||||
TextInput::make('kuota')
|
||||
->label('Jumlah Kuota')
|
||||
->numeric()
|
||||
->required()
|
||||
->minValue(1)
|
||||
->helperText('Masukkan jumlah kuota penerimaan untuk akreditasi C.'),
|
||||
])
|
||||
->action(function (array $data): void {
|
||||
DB::beginTransaction();
|
||||
try {
|
||||
// Reset hasil untuk akreditasi C
|
||||
Parameter::whereHas('mahasiswa.prodi', function ($query) {
|
||||
$query->where('akreditasi', 'C');
|
||||
})->update(['hasil' => 'Tidak Layak']);
|
||||
|
||||
// Ambil data parameter yang valid dengan akreditasi C
|
||||
$validParameters = Parameter::where('status', 'valid')
|
||||
->whereHas('mahasiswa.prodi', function ($query) {
|
||||
$query->where('akreditasi', 'C');
|
||||
})
|
||||
->orderBy('total_nilai', 'desc')
|
||||
->get();
|
||||
|
||||
$kuota = (int) $data['kuota'];
|
||||
$index = 0;
|
||||
|
||||
foreach ($validParameters as $parameter) {
|
||||
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 akreditasi C")
|
||||
->success()
|
||||
->send();
|
||||
} catch (\Exception $e) {
|
||||
DB::rollBack();
|
||||
Notification::make()
|
||||
->title('Terjadi kesalahan: ' . $e->getMessage())
|
||||
->danger()
|
||||
->send();
|
||||
}
|
||||
})
|
||||
->requiresConfirmation()
|
||||
->modalHeading('Set Kuota Penerimaan Akreditasi C')
|
||||
->modalDescription('Apakah Anda yakin ingin mengatur kuota penerimaan untuk akreditasi C?')
|
||||
->modalSubmitActionLabel('Ya, Set Kuota')
|
||||
->successNotificationTitle('Kuota berhasil diatur'),
|
||||
|
||||
Action::make('resetKuota')
|
||||
->label('Reset')
|
||||
->color('danger')
|
||||
->icon('heroicon-o-arrow-path')
|
||||
->action(function (): void {
|
||||
DB::beginTransaction();
|
||||
try {
|
||||
Parameter::whereHas('mahasiswa.prodi', function ($query) {
|
||||
$query->where('akreditasi', 'C');
|
||||
})->update(['hasil' => null]);
|
||||
|
||||
DB::commit();
|
||||
|
||||
Notification::make()
|
||||
->title('Berhasil mereset hasil kuota penerimaan')
|
||||
->success()
|
||||
->send();
|
||||
} catch (\Exception $e) {
|
||||
DB::rollBack();
|
||||
Notification::make()
|
||||
->title('Terjadi kesalahan: ' . $e->getMessage())
|
||||
->danger()
|
||||
->send();
|
||||
}
|
||||
})
|
||||
->requiresConfirmation()
|
||||
->modalHeading('Reset Kuota Penerimaan')
|
||||
->modalDescription('Apakah Anda yakin ingin mereset hasil kuota penerimaan? Semua hasil akan dikosongkan.')
|
||||
->modalSubmitActionLabel('Ya, Reset Kuota')
|
||||
->successNotificationTitle('Kuota berhasil direset'),
|
||||
])
|
||||
->modifyQueryUsing(fn ($query) => $query->where('status', 'valid')
|
||||
->whereHas('mahasiswa.prodi', function ($query) {
|
||||
$query->where('akreditasi', 'C');
|
||||
}))
|
||||
->columns([
|
||||
TextColumn::make('no')
|
||||
->label('No.')
|
||||
->rowIndex(false)
|
||||
->alignCenter(),
|
||||
|
||||
TextColumn::make('mahasiswa.nama')
|
||||
->label('Nama Mahasiswa')
|
||||
->searchable()
|
||||
->sortable(),
|
||||
|
||||
TextColumn::make('total_nilai')
|
||||
->label('Total Nilai')
|
||||
->formatStateUsing(fn ($state) => number_format($state, 4))
|
||||
->sortable(),
|
||||
|
||||
TextColumn::make('hasil')
|
||||
->label('Hasil')
|
||||
->badge()
|
||||
->color(fn (string $state): string => match ($state) {
|
||||
'Layak' => 'success',
|
||||
'Dipertimbangkan' => 'warning',
|
||||
'Tidak Layak' => 'danger',
|
||||
default => 'gray',
|
||||
}),
|
||||
])
|
||||
->defaultSort('total_nilai', 'desc')
|
||||
->filters([
|
||||
\Filament\Tables\Filters\SelectFilter::make('hasil')
|
||||
->options([
|
||||
'Layak' => 'Layak',
|
||||
'Dipertimbangkan' => 'Dipertimbangkan',
|
||||
'Tidak Layak' => 'Tidak Layak',
|
||||
]),
|
||||
]);
|
||||
}
|
||||
}
|
|
@ -14,6 +14,7 @@
|
|||
use Illuminate\Database\Eloquent\SoftDeletingScope;
|
||||
use Filament\Forms\Components\TextInput;
|
||||
use Filament\Tables\Columns\TextColumn;
|
||||
use Filament\Forms\Components\Select;
|
||||
|
||||
class MahasiswaResource extends Resource
|
||||
{
|
||||
|
@ -39,15 +40,20 @@ public static function form(Form $form): Form
|
|||
TextInput::make('NIM')
|
||||
->label('NIM')
|
||||
->required(),
|
||||
TextInput::make('jurusan')
|
||||
Select::make('jurusan_id')
|
||||
->label('Jurusan')
|
||||
->relationship('jurusan', 'nama')
|
||||
->required(),
|
||||
TextInput::make('prodi')
|
||||
Select::make('prodi_id')
|
||||
->label('Program Studi')
|
||||
->relationship('prodi', 'nama')
|
||||
->required(),
|
||||
Select::make('akreditasi')
|
||||
->label('Akreditasi Program Studi')
|
||||
->relationship('prodi', 'akreditasi')
|
||||
->required(),
|
||||
TextInput::make('angkatan')
|
||||
->required(),
|
||||
TextInput::make('semester')
|
||||
->required(),
|
||||
TextInput::make('jalur_masuk')
|
||||
->required(),
|
||||
TextInput::make('ponsel')
|
||||
|
@ -68,11 +74,10 @@ public static function table(Table $table): Table
|
|||
// ->shortable(), //biar urut berdasarkan abjad
|
||||
TextColumn::make('NIM')
|
||||
->label('NIM'),
|
||||
TextColumn::make('jurusan'),
|
||||
TextColumn::make('prodi')
|
||||
->label('Program Studi'),
|
||||
TextColumn::make('jurusan.nama')->label('Jurusan'),
|
||||
TextColumn::make('prodi.nama')->label('Program Studi'),
|
||||
TextColumn::make('prodi.akreditasi')->label('Akreditasi Prodi'),
|
||||
TextColumn::make('angkatan'),
|
||||
TextColumn::make('semester'),
|
||||
TextColumn::make('jalur_masuk'),
|
||||
TextColumn::make('ponsel'),
|
||||
TextColumn::make('alamat'),
|
||||
|
|
|
@ -30,12 +30,14 @@ class ParameterResource extends Resource
|
|||
|
||||
protected static ?string $navigationIcon = 'heroicon-o-clipboard-document-list';
|
||||
|
||||
protected static ?string $navigationLabel = 'Form Penilaian KIP-K';
|
||||
protected static ?string $navigationLabel = 'Validasi Data';
|
||||
|
||||
protected static ?string $navigationGroup = 'Penilaian';
|
||||
|
||||
protected static ?int $navigationSort = 1;
|
||||
|
||||
protected static ?string $title = 'Validasi Data';
|
||||
|
||||
public static function form(Form $form): Form
|
||||
{
|
||||
return $form
|
||||
|
@ -298,15 +300,15 @@ public static function table(Table $table): Table
|
|||
->label('Total Nilai')
|
||||
->sortable(),
|
||||
|
||||
Tables\Columns\TextColumn::make('hasil')
|
||||
->label('Hasil')
|
||||
->badge()
|
||||
->color(fn (string $state): string => match ($state) {
|
||||
'Layak' => 'success',
|
||||
'Dipertimbangkan' => 'warning',
|
||||
'Tidak Layak' => 'danger',
|
||||
default => 'gray',
|
||||
}),
|
||||
// Tables\Columns\TextColumn::make('hasil')
|
||||
// ->label('Hasil')
|
||||
// ->badge()
|
||||
// ->color(fn (string $state): string => match ($state) {
|
||||
// 'Layak' => 'success',
|
||||
// 'Dipertimbangkan' => 'warning',
|
||||
// 'Tidak Layak' => 'danger',
|
||||
// default => 'gray',
|
||||
// }),
|
||||
|
||||
Tables\Columns\TextColumn::make('status')
|
||||
->label('Status Validasi')
|
||||
|
|
|
@ -10,6 +10,8 @@ class ListParameters extends ListRecords
|
|||
{
|
||||
protected static string $resource = ParameterResource::class;
|
||||
|
||||
protected static ?string $title = 'Validasi Data';
|
||||
|
||||
protected function getHeaderActions(): array
|
||||
{
|
||||
return [
|
||||
|
|
|
@ -0,0 +1,25 @@
|
|||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class Jurusan extends Model
|
||||
{
|
||||
use HasFactory;
|
||||
|
||||
protected $fillable = [
|
||||
'nama'
|
||||
];
|
||||
|
||||
public function prodis()
|
||||
{
|
||||
return $this->hasMany(Prodi::class);
|
||||
}
|
||||
|
||||
public function mahasiswas()
|
||||
{
|
||||
return $this->hasMany(Mahasiswa::class);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,27 @@
|
|||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class Prodi extends Model
|
||||
{
|
||||
use HasFactory;
|
||||
|
||||
protected $fillable = [
|
||||
'nama',
|
||||
'jurusan_id',
|
||||
'akreditasi'
|
||||
];
|
||||
|
||||
public function jurusan()
|
||||
{
|
||||
return $this->belongsTo(Jurusan::class);
|
||||
}
|
||||
|
||||
public function mahasiswas()
|
||||
{
|
||||
return $this->hasMany(Mahasiswa::class);
|
||||
}
|
||||
}
|
|
@ -9,7 +9,34 @@ class Mahasiswa extends Model
|
|||
{
|
||||
use HasFactory;
|
||||
|
||||
protected $guarded = [];
|
||||
protected $fillable = [
|
||||
'user_id',
|
||||
'noreg_kipk',
|
||||
'nama',
|
||||
'NIM',
|
||||
'jurusan_id',
|
||||
'prodi_id',
|
||||
'akreditasi',
|
||||
'angkatan',
|
||||
'jalur_masuk',
|
||||
'ponsel',
|
||||
'alamat'
|
||||
];
|
||||
|
||||
public function user()
|
||||
{
|
||||
return $this->belongsTo(User::class);
|
||||
}
|
||||
|
||||
public function jurusan()
|
||||
{
|
||||
return $this->belongsTo(Jurusan::class);
|
||||
}
|
||||
|
||||
public function prodi()
|
||||
{
|
||||
return $this->belongsTo(Prodi::class);
|
||||
}
|
||||
|
||||
public function parameter()
|
||||
{
|
||||
|
|
|
@ -173,14 +173,14 @@ protected static function boot()
|
|||
|
||||
$parameter->total_nilai = $totalNilai;
|
||||
|
||||
// Tentukan hasil berdasarkan total nilai
|
||||
if ($totalNilai >= 0.75) {
|
||||
$parameter->hasil = 'Layak';
|
||||
} elseif ($totalNilai >= 0.5) {
|
||||
$parameter->hasil = 'Dipertimbangkan';
|
||||
} else {
|
||||
$parameter->hasil = 'Tidak Layak';
|
||||
}
|
||||
// // Tentukan hasil berdasarkan total nilai ini kayanya engga dipake deh
|
||||
// if ($totalNilai >= 0.75) {
|
||||
// $parameter->hasil = 'Layak';
|
||||
// } elseif ($totalNilai >= 0.5) {
|
||||
// $parameter->hasil = 'Dipertimbangkan';
|
||||
// } else {
|
||||
// $parameter->hasil = 'Tidak Layak';
|
||||
// }
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
"license": "MIT",
|
||||
"require": {
|
||||
"php": "^8.2",
|
||||
"barryvdh/laravel-dompdf": "^3.1",
|
||||
"bezhansalleh/filament-shield": "^3.3",
|
||||
"filament/filament": "^3.2",
|
||||
"laravel/framework": "^11.31",
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||
"This file is @generated automatically"
|
||||
],
|
||||
"content-hash": "b7799fc8d95c29ec920219812daf4b93",
|
||||
"content-hash": "37d23fa0748ae9cc0599922cd0df01a3",
|
||||
"packages": [
|
||||
{
|
||||
"name": "anourvalar/eloquent-serialize",
|
||||
|
@ -72,6 +72,83 @@
|
|||
},
|
||||
"time": "2025-02-25T05:18:46+00:00"
|
||||
},
|
||||
{
|
||||
"name": "barryvdh/laravel-dompdf",
|
||||
"version": "v3.1.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/barryvdh/laravel-dompdf.git",
|
||||
"reference": "8e71b99fc53bb8eb77f316c3c452dd74ab7cb25d"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/barryvdh/laravel-dompdf/zipball/8e71b99fc53bb8eb77f316c3c452dd74ab7cb25d",
|
||||
"reference": "8e71b99fc53bb8eb77f316c3c452dd74ab7cb25d",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"dompdf/dompdf": "^3.0",
|
||||
"illuminate/support": "^9|^10|^11|^12",
|
||||
"php": "^8.1"
|
||||
},
|
||||
"require-dev": {
|
||||
"larastan/larastan": "^2.7|^3.0",
|
||||
"orchestra/testbench": "^7|^8|^9|^10",
|
||||
"phpro/grumphp": "^2.5",
|
||||
"squizlabs/php_codesniffer": "^3.5"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"laravel": {
|
||||
"aliases": {
|
||||
"PDF": "Barryvdh\\DomPDF\\Facade\\Pdf",
|
||||
"Pdf": "Barryvdh\\DomPDF\\Facade\\Pdf"
|
||||
},
|
||||
"providers": [
|
||||
"Barryvdh\\DomPDF\\ServiceProvider"
|
||||
]
|
||||
},
|
||||
"branch-alias": {
|
||||
"dev-master": "3.0-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Barryvdh\\DomPDF\\": "src"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Barry vd. Heuvel",
|
||||
"email": "barryvdh@gmail.com"
|
||||
}
|
||||
],
|
||||
"description": "A DOMPDF Wrapper for Laravel",
|
||||
"keywords": [
|
||||
"dompdf",
|
||||
"laravel",
|
||||
"pdf"
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/barryvdh/laravel-dompdf/issues",
|
||||
"source": "https://github.com/barryvdh/laravel-dompdf/tree/v3.1.1"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
"url": "https://fruitcake.nl",
|
||||
"type": "custom"
|
||||
},
|
||||
{
|
||||
"url": "https://github.com/barryvdh",
|
||||
"type": "github"
|
||||
}
|
||||
],
|
||||
"time": "2025-02-13T15:07:54+00:00"
|
||||
},
|
||||
{
|
||||
"name": "bezhansalleh/filament-shield",
|
||||
"version": "3.3.5",
|
||||
|
@ -937,6 +1014,161 @@
|
|||
],
|
||||
"time": "2024-02-05T11:56:58+00:00"
|
||||
},
|
||||
{
|
||||
"name": "dompdf/dompdf",
|
||||
"version": "v3.1.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/dompdf/dompdf.git",
|
||||
"reference": "a51bd7a063a65499446919286fb18b518177155a"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/dompdf/dompdf/zipball/a51bd7a063a65499446919286fb18b518177155a",
|
||||
"reference": "a51bd7a063a65499446919286fb18b518177155a",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"dompdf/php-font-lib": "^1.0.0",
|
||||
"dompdf/php-svg-lib": "^1.0.0",
|
||||
"ext-dom": "*",
|
||||
"ext-mbstring": "*",
|
||||
"masterminds/html5": "^2.0",
|
||||
"php": "^7.1 || ^8.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"ext-gd": "*",
|
||||
"ext-json": "*",
|
||||
"ext-zip": "*",
|
||||
"mockery/mockery": "^1.3",
|
||||
"phpunit/phpunit": "^7.5 || ^8 || ^9 || ^10 || ^11",
|
||||
"squizlabs/php_codesniffer": "^3.5",
|
||||
"symfony/process": "^4.4 || ^5.4 || ^6.2 || ^7.0"
|
||||
},
|
||||
"suggest": {
|
||||
"ext-gd": "Needed to process images",
|
||||
"ext-gmagick": "Improves image processing performance",
|
||||
"ext-imagick": "Improves image processing performance",
|
||||
"ext-zlib": "Needed for pdf stream compression"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Dompdf\\": "src/"
|
||||
},
|
||||
"classmap": [
|
||||
"lib/"
|
||||
]
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"LGPL-2.1"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "The Dompdf Community",
|
||||
"homepage": "https://github.com/dompdf/dompdf/blob/master/AUTHORS.md"
|
||||
}
|
||||
],
|
||||
"description": "DOMPDF is a CSS 2.1 compliant HTML to PDF converter",
|
||||
"homepage": "https://github.com/dompdf/dompdf",
|
||||
"support": {
|
||||
"issues": "https://github.com/dompdf/dompdf/issues",
|
||||
"source": "https://github.com/dompdf/dompdf/tree/v3.1.0"
|
||||
},
|
||||
"time": "2025-01-15T14:09:04+00:00"
|
||||
},
|
||||
{
|
||||
"name": "dompdf/php-font-lib",
|
||||
"version": "1.0.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/dompdf/php-font-lib.git",
|
||||
"reference": "6137b7d4232b7f16c882c75e4ca3991dbcf6fe2d"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/dompdf/php-font-lib/zipball/6137b7d4232b7f16c882c75e4ca3991dbcf6fe2d",
|
||||
"reference": "6137b7d4232b7f16c882c75e4ca3991dbcf6fe2d",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"ext-mbstring": "*",
|
||||
"php": "^7.1 || ^8.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"symfony/phpunit-bridge": "^3 || ^4 || ^5 || ^6"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"FontLib\\": "src/FontLib"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"LGPL-2.1-or-later"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "The FontLib Community",
|
||||
"homepage": "https://github.com/dompdf/php-font-lib/blob/master/AUTHORS.md"
|
||||
}
|
||||
],
|
||||
"description": "A library to read, parse, export and make subsets of different types of font files.",
|
||||
"homepage": "https://github.com/dompdf/php-font-lib",
|
||||
"support": {
|
||||
"issues": "https://github.com/dompdf/php-font-lib/issues",
|
||||
"source": "https://github.com/dompdf/php-font-lib/tree/1.0.1"
|
||||
},
|
||||
"time": "2024-12-02T14:37:59+00:00"
|
||||
},
|
||||
{
|
||||
"name": "dompdf/php-svg-lib",
|
||||
"version": "1.0.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/dompdf/php-svg-lib.git",
|
||||
"reference": "eb045e518185298eb6ff8d80d0d0c6b17aecd9af"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/dompdf/php-svg-lib/zipball/eb045e518185298eb6ff8d80d0d0c6b17aecd9af",
|
||||
"reference": "eb045e518185298eb6ff8d80d0d0c6b17aecd9af",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"ext-mbstring": "*",
|
||||
"php": "^7.1 || ^8.0",
|
||||
"sabberworm/php-css-parser": "^8.4"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpunit/phpunit": "^7.5 || ^8.5 || ^9.5"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Svg\\": "src/Svg"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"LGPL-3.0-or-later"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "The SvgLib Community",
|
||||
"homepage": "https://github.com/dompdf/php-svg-lib/blob/master/AUTHORS.md"
|
||||
}
|
||||
],
|
||||
"description": "A library to read, parse and export to PDF SVG files.",
|
||||
"homepage": "https://github.com/dompdf/php-svg-lib",
|
||||
"support": {
|
||||
"issues": "https://github.com/dompdf/php-svg-lib/issues",
|
||||
"source": "https://github.com/dompdf/php-svg-lib/tree/1.0.0"
|
||||
},
|
||||
"time": "2024-04-29T13:26:35+00:00"
|
||||
},
|
||||
{
|
||||
"name": "dragonmantank/cron-expression",
|
||||
"version": "v3.4.0",
|
||||
|
@ -4794,6 +5026,71 @@
|
|||
],
|
||||
"time": "2025-02-25T09:09:36+00:00"
|
||||
},
|
||||
{
|
||||
"name": "sabberworm/php-css-parser",
|
||||
"version": "v8.8.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/MyIntervals/PHP-CSS-Parser.git",
|
||||
"reference": "3de493bdddfd1f051249af725c7e0d2c38fed740"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/MyIntervals/PHP-CSS-Parser/zipball/3de493bdddfd1f051249af725c7e0d2c38fed740",
|
||||
"reference": "3de493bdddfd1f051249af725c7e0d2c38fed740",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"ext-iconv": "*",
|
||||
"php": "^5.6.20 || ^7.0.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpunit/phpunit": "5.7.27 || 6.5.14 || 7.5.20 || 8.5.41"
|
||||
},
|
||||
"suggest": {
|
||||
"ext-mbstring": "for parsing UTF-8 CSS"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-main": "9.0.x-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Sabberworm\\CSS\\": "src/"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Raphael Schweikert"
|
||||
},
|
||||
{
|
||||
"name": "Oliver Klee",
|
||||
"email": "github@oliverklee.de"
|
||||
},
|
||||
{
|
||||
"name": "Jake Hotson",
|
||||
"email": "jake.github@qzdesign.co.uk"
|
||||
}
|
||||
],
|
||||
"description": "Parser for CSS Files written in PHP",
|
||||
"homepage": "https://www.sabberworm.com/blog/2010/6/10/php-css-parser",
|
||||
"keywords": [
|
||||
"css",
|
||||
"parser",
|
||||
"stylesheet"
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/MyIntervals/PHP-CSS-Parser/issues",
|
||||
"source": "https://github.com/MyIntervals/PHP-CSS-Parser/tree/v8.8.0"
|
||||
},
|
||||
"time": "2025-03-23T17:59:05+00:00"
|
||||
},
|
||||
{
|
||||
"name": "spatie/color",
|
||||
"version": "1.8.0",
|
||||
|
|
|
@ -0,0 +1,22 @@
|
|||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
return new class extends Migration
|
||||
{
|
||||
public function up(): void
|
||||
{
|
||||
Schema::create('jurusans', function (Blueprint $table) {
|
||||
$table->id();
|
||||
$table->string('nama');
|
||||
$table->timestamps();
|
||||
});
|
||||
}
|
||||
|
||||
public function down(): void
|
||||
{
|
||||
Schema::dropIfExists('jurusans');
|
||||
}
|
||||
};
|
|
@ -0,0 +1,24 @@
|
|||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
return new class extends Migration
|
||||
{
|
||||
public function up(): void
|
||||
{
|
||||
Schema::create('prodis', function (Blueprint $table) {
|
||||
$table->id();
|
||||
$table->foreignId('jurusan_id')->constrained('jurusans')->cascadeOnDelete();
|
||||
$table->string('nama');
|
||||
$table->string('akreditasi');
|
||||
$table->timestamps();
|
||||
});
|
||||
}
|
||||
|
||||
public function down(): void
|
||||
{
|
||||
Schema::dropIfExists('prodis');
|
||||
}
|
||||
};
|
|
@ -17,10 +17,10 @@ public function up(): void
|
|||
$table->string('noreg_kipk');
|
||||
$table->string('nama');
|
||||
$table->string('NIM');
|
||||
$table->string('jurusan');
|
||||
$table->string('prodi');
|
||||
$table->foreignId('jurusan_id')->constrained('jurusans')->cascadeOnDelete();
|
||||
$table->foreignId('prodi_id')->constrained('prodis')->cascadeOnDelete();
|
||||
$table->string('akreditasi');
|
||||
$table->string('angkatan');
|
||||
$table->string('semester');
|
||||
$table->string('jalur_masuk');
|
||||
$table->string('ponsel');
|
||||
$table->string('alamat');
|
||||
|
|
|
@ -19,6 +19,8 @@ public function run(): void
|
|||
MahasiswaSeeder::class,
|
||||
// SuperAdminPermissionSeeder::class,
|
||||
PermissionSeeder::class,
|
||||
JurusanSeeder::class,
|
||||
ProdiSeeder::class,
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,28 @@
|
|||
<?php
|
||||
|
||||
namespace Database\Seeders;
|
||||
|
||||
use App\Models\Jurusan;
|
||||
use Illuminate\Database\Seeder;
|
||||
|
||||
class JurusanSeeder extends Seeder
|
||||
{
|
||||
public function run(): void
|
||||
{
|
||||
$jurusans = [
|
||||
['nama' => 'Produksi Pertanian'],
|
||||
['nama' => 'Teknologi Pertanian'],
|
||||
['nama' => 'Peternakan'],
|
||||
['nama' => 'Manajemen Agribisnis'],
|
||||
['nama' => 'Teknologi Informasi'],
|
||||
['nama' => 'Bahasa, Komunikasi dan Pariwisata'],
|
||||
['nama' => 'Kesehatan'],
|
||||
['nama' => 'Teknik'],
|
||||
['nama' => 'Bisnis'],
|
||||
];
|
||||
|
||||
foreach ($jurusans as $jurusan) {
|
||||
Jurusan::create($jurusan);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -4,6 +4,8 @@
|
|||
|
||||
use App\Models\Mahasiswa;
|
||||
use App\Models\User;
|
||||
use App\Models\Jurusan;
|
||||
use App\Models\Prodi;
|
||||
use Illuminate\Database\Console\Seeds\WithoutModelEvents;
|
||||
use Illuminate\Database\Seeder;
|
||||
|
||||
|
@ -14,54 +16,58 @@ class MahasiswaSeeder extends Seeder
|
|||
*/
|
||||
public function run(): void
|
||||
{
|
||||
// Ambil user dengan role mahasiswa
|
||||
$users = User::role('mahasiswa')->get();
|
||||
// // Ambil user dengan role mahasiswa
|
||||
// $users = User::role('mahasiswa')->get();
|
||||
|
||||
$mahasiswas = [
|
||||
[
|
||||
'noreg_kipk' => 'KIP001',
|
||||
'nama' => 'Ahmad Fauzi',
|
||||
'NIM' => '2021573010001',
|
||||
'jurusan' => 'Teknik',
|
||||
'prodi' => 'Teknik Informatika',
|
||||
'angkatan' => '2021',
|
||||
'semester' => '5',
|
||||
'jalur_masuk' => 'SNMPTN',
|
||||
'ponsel' => '081234567890',
|
||||
'alamat' => 'Jl. Pendidikan No. 1',
|
||||
],
|
||||
[
|
||||
'noreg_kipk' => 'KIP002',
|
||||
'nama' => 'Siti Nurhaliza',
|
||||
'NIM' => '2021573010002',
|
||||
'jurusan' => 'Teknik',
|
||||
'prodi' => 'Teknik Informatika',
|
||||
'angkatan' => '2021',
|
||||
'semester' => '5',
|
||||
'jalur_masuk' => 'SBMPTN',
|
||||
'ponsel' => '081234567891',
|
||||
'alamat' => 'Jl. Pendidikan No. 2',
|
||||
],
|
||||
[
|
||||
'noreg_kipk' => 'KIP003',
|
||||
'nama' => 'Budi Santoso',
|
||||
'NIM' => '2021573010003',
|
||||
'jurusan' => 'Teknik',
|
||||
'prodi' => 'Teknik Informatika',
|
||||
'angkatan' => '2021',
|
||||
'semester' => '5',
|
||||
'jalur_masuk' => 'SNMPTN',
|
||||
'ponsel' => '081234567892',
|
||||
'alamat' => 'Jl. Pendidikan No. 3',
|
||||
],
|
||||
];
|
||||
// // Ambil jurusan dan prodi
|
||||
// $jurusanTI = Jurusan::where('nama', 'Teknologi Informasi')->first();
|
||||
// $prodiInformatika = Prodi::where('nama', 'Teknik Informatika')->first();
|
||||
|
||||
foreach ($users as $index => $user) {
|
||||
if (isset($mahasiswas[$index])) {
|
||||
Mahasiswa::create(array_merge($mahasiswas[$index], [
|
||||
'user_id' => $user->id
|
||||
]));
|
||||
}
|
||||
}
|
||||
// $mahasiswas = [
|
||||
// [
|
||||
// 'noreg_kipk' => 'KIP001',
|
||||
// 'nama' => 'Ahmad Fauzi',
|
||||
// 'NIM' => '2021573010001',
|
||||
// 'jurusan_id' => $jurusanTI->id,
|
||||
// 'prodi_id' => $prodiInformatika->id,
|
||||
// 'akreditasi' => $prodiInformatika->akreditasi,
|
||||
// 'angkatan' => '2021',
|
||||
// 'jalur_masuk' => 'SNMPTN',
|
||||
// 'ponsel' => '081234567890',
|
||||
// 'alamat' => 'Jl. Pendidikan No. 1',
|
||||
// ],
|
||||
// [
|
||||
// 'noreg_kipk' => 'KIP002',
|
||||
// 'nama' => 'Siti Nurhaliza',
|
||||
// 'NIM' => '2021573010002',
|
||||
// 'jurusan_id' => $jurusanTI->id,
|
||||
// 'prodi_id' => $prodiInformatika->id,
|
||||
// 'akreditasi' => $prodiInformatika->akreditasi,
|
||||
// 'angkatan' => '2021',
|
||||
// 'jalur_masuk' => 'SBMPTN',
|
||||
// 'ponsel' => '081234567891',
|
||||
// 'alamat' => 'Jl. Pendidikan No. 2',
|
||||
// ],
|
||||
// [
|
||||
// 'noreg_kipk' => 'KIP003',
|
||||
// 'nama' => 'Budi Santoso',
|
||||
// 'NIM' => '2021573010003',
|
||||
// 'jurusan_id' => $jurusanTI->id,
|
||||
// 'prodi_id' => $prodiInformatika->id,
|
||||
// 'akreditasi' => $prodiInformatika->akreditasi,
|
||||
// 'angkatan' => '2021',
|
||||
// 'jalur_masuk' => 'SNMPTN',
|
||||
// 'ponsel' => '081234567892',
|
||||
// 'alamat' => 'Jl. Pendidikan No. 3',
|
||||
// ],
|
||||
// ];
|
||||
|
||||
// foreach ($users as $index => $user) {
|
||||
// if (isset($mahasiswas[$index])) {
|
||||
// Mahasiswa::create(array_merge($mahasiswas[$index], [
|
||||
// 'user_id' => $user->id
|
||||
// ]));
|
||||
// }
|
||||
// }
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,174 @@
|
|||
<?php
|
||||
|
||||
namespace Database\Seeders;
|
||||
|
||||
use App\Models\Prodi;
|
||||
use Illuminate\Database\Seeder;
|
||||
|
||||
class ProdiSeeder extends Seeder
|
||||
{
|
||||
public function run(): void
|
||||
{
|
||||
$prodis = [
|
||||
// Produksi Pertanian
|
||||
[
|
||||
'jurusan_id' => 1,
|
||||
'nama' => 'Produksi Tanaman Hortikultura',
|
||||
'akreditasi' => 'A'
|
||||
],
|
||||
[
|
||||
'jurusan_id' => 1,
|
||||
'nama' => 'Produksi Tanaman Perkebunan',
|
||||
'akreditasi' => 'A'
|
||||
],
|
||||
[
|
||||
'jurusan_id' => 1,
|
||||
'nama' => 'Teknik Produksi Benih',
|
||||
'akreditasi' => 'B'
|
||||
],
|
||||
[
|
||||
'jurusan_id' => 1,
|
||||
'nama' => 'Teknologi Produksi Tanaman Pangan',
|
||||
'akreditasi' => 'B'
|
||||
],
|
||||
[
|
||||
'jurusan_id' => 1,
|
||||
'nama' => 'Budidaya Tanaman Perkebunan',
|
||||
'akreditasi' => 'B'
|
||||
],
|
||||
[
|
||||
'jurusan_id' => 1,
|
||||
'nama' => 'Pengelolaan Perkebunan Kopi',
|
||||
'akreditasi' => 'C'
|
||||
],
|
||||
|
||||
|
||||
// Teknologi Pertanian
|
||||
[
|
||||
'jurusan_id' => 2,
|
||||
'nama' => 'Keteknikan Pertanian',
|
||||
'akreditasi' => 'A'
|
||||
],
|
||||
[
|
||||
'jurusan_id' => 2,
|
||||
'nama' => 'Teknologi Industri Pangan',
|
||||
'akreditasi' => 'A'
|
||||
],
|
||||
[
|
||||
'jurusan_id' => 2,
|
||||
'nama' => 'Teknologi Rekayasa Pangan',
|
||||
'akreditasi' => 'C'
|
||||
],
|
||||
|
||||
// Peternakan
|
||||
[
|
||||
'jurusan_id' => 3,
|
||||
'nama' => 'Produksi Ternak',
|
||||
'akreditasi' => 'A'
|
||||
],
|
||||
[
|
||||
'jurusan_id' => 3,
|
||||
'nama' => 'Manajemen Bisnis Unggas',
|
||||
'akreditasi' => 'B'
|
||||
],
|
||||
[
|
||||
'jurusan_id' => 3,
|
||||
'nama' => 'Teknologi Pakan Ternak',
|
||||
'akreditasi' => 'C'
|
||||
],
|
||||
|
||||
// Manajemen Agribisnis
|
||||
[
|
||||
'jurusan_id' => 4,
|
||||
'nama' => 'Manajemen Agribisnis',
|
||||
'akreditasi' => 'A'
|
||||
],
|
||||
[
|
||||
'jurusan_id' => 4,
|
||||
'nama' => 'Manajemen Agroindustri',
|
||||
'akreditasi' => 'A'
|
||||
],
|
||||
// Teknologi Informasi
|
||||
[
|
||||
'jurusan_id' => 5,
|
||||
'nama' => 'Manajemen Informatika',
|
||||
'akreditasi' => 'A'
|
||||
],
|
||||
[
|
||||
'jurusan_id' => 5,
|
||||
'nama' => 'Teknik Komputer',
|
||||
'akreditasi' => 'A'
|
||||
],
|
||||
[
|
||||
'jurusan_id' => 5,
|
||||
'nama' => 'Teknik Informatika',
|
||||
'akreditasi' => 'A'
|
||||
],
|
||||
[
|
||||
'jurusan_id' => 5,
|
||||
'nama' => 'Bisnis Digital',
|
||||
'akreditasi' => 'C'
|
||||
],
|
||||
// Bahasa, Komunikasi dan Pariwisata
|
||||
[
|
||||
'jurusan_id' => 6,
|
||||
'nama' => 'Bahasa Inggris',
|
||||
'akreditasi' => 'B'
|
||||
],
|
||||
[
|
||||
'jurusan_id' => 6,
|
||||
'nama' => 'Destinasi Pariwisata',
|
||||
'akreditasi' => 'C'
|
||||
],
|
||||
// Kesehatan
|
||||
[
|
||||
'jurusan_id' => 7,
|
||||
'nama' => 'Manajemen Informasi Kesehatan',
|
||||
'akreditasi' => 'A'
|
||||
],
|
||||
[
|
||||
'jurusan_id' => 7,
|
||||
'nama' => 'Gizi Klinik',
|
||||
'akreditasi' => 'B'
|
||||
],
|
||||
[
|
||||
'jurusan_id' => 7,
|
||||
'nama' => 'Promosi Kesehatan',
|
||||
'akreditasi' => 'C'
|
||||
],
|
||||
//Teknik
|
||||
[
|
||||
'jurusan_id' => 8,
|
||||
'nama' => 'Teknik Energi Terbarukan',
|
||||
'akreditasi' => 'A'
|
||||
],
|
||||
[
|
||||
'jurusan_id' => 8,
|
||||
'nama' => 'Mesin Otomotif',
|
||||
'akreditasi' => 'B'
|
||||
],
|
||||
[
|
||||
'jurusan_id' => 8,
|
||||
'nama' => 'Teknologi Rekayasa Mekatronika',
|
||||
'akreditasi' => 'C'
|
||||
],
|
||||
//Bisnis
|
||||
[
|
||||
'jurusan_id' => 9,
|
||||
'nama' => 'Akuntansi Sektor Publik',
|
||||
'akreditasi' => 'C'
|
||||
],
|
||||
[
|
||||
'jurusan_id' => 9,
|
||||
'nama' => 'Manajemen Pemasaran Internasional',
|
||||
'akreditasi' => 'C'
|
||||
],
|
||||
|
||||
|
||||
];
|
||||
|
||||
foreach ($prodis as $prodi) {
|
||||
Prodi::create($prodi);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,175 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>{{ $title }}</title>
|
||||
<style>
|
||||
body {
|
||||
font-family: Arial, sans-serif;
|
||||
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;
|
||||
}
|
||||
|
||||
.title {
|
||||
text-align: center;
|
||||
font-size: 14px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.subtitle {
|
||||
text-align: center;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
table {
|
||||
width: 100%;
|
||||
border-collapse: collapse;
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
th, td {
|
||||
border: 1px solid #000;
|
||||
padding: 5px;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
th {
|
||||
background-color: #f0f0f0;
|
||||
}
|
||||
|
||||
.badge {
|
||||
padding: 3px 6px;
|
||||
border-radius: 3px;
|
||||
font-size: 11px;
|
||||
}
|
||||
|
||||
.success {
|
||||
background-color: #d4edda;
|
||||
color: #155724;
|
||||
}
|
||||
|
||||
.warning {
|
||||
background-color: #fff3cd;
|
||||
color: #856404;
|
||||
}
|
||||
|
||||
.danger {
|
||||
background-color: #f8d7da;
|
||||
color: #721c24;
|
||||
}
|
||||
|
||||
.footer {
|
||||
text-align: right;
|
||||
margin-top: 40px;
|
||||
}
|
||||
</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>
|
||||
|
||||
<!-- INFO DOKUMEN -->
|
||||
<div class="document-info">
|
||||
<div><strong>Kode Dokumen</strong>: FR-JUR-031</div>
|
||||
<div><strong>Tanggal Berlaku</strong>: {{ \Carbon\Carbon::parse($date)->format('d/m/Y') }}</div>
|
||||
<div><strong>Revisi</strong>: 0</div>
|
||||
<div><strong>Halaman</strong>: 1</div>
|
||||
</div>
|
||||
|
||||
<!-- JUDUL -->
|
||||
<div class="title">{{ $title }}</div>
|
||||
<div class="subtitle">Tanggal: {{ \Carbon\Carbon::parse($date)->format('d F Y') }}</div>
|
||||
|
||||
<!-- TABEL -->
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>No</th>
|
||||
<th>Nama Mahasiswa</th>
|
||||
<th>Jurusan</th>
|
||||
<th>Program Studi</th>
|
||||
<th>Akreditasi</th>
|
||||
<th>Total Nilai</th>
|
||||
<th>Hasil</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach($data as $index => $item)
|
||||
<tr>
|
||||
<td>{{ $index + 1 }}</td>
|
||||
<td>{{ $item->mahasiswa->nama }}</td>
|
||||
<td>{{ $item->mahasiswa->jurusan->nama }}</td>
|
||||
<td>{{ $item->mahasiswa->prodi->nama }}</td>
|
||||
<td>{{ $item->mahasiswa->prodi->akreditasi }}</td>
|
||||
<td>{{ number_format($item->total_nilai, 4) }}</td>
|
||||
<td>
|
||||
@if($item->hasil == 'Layak')
|
||||
<span class="badge success">Diterima</span>
|
||||
@elseif($item->hasil == 'Dipertimbangkan')
|
||||
<span class="badge warning">Dipertimbangkan</span>
|
||||
@else
|
||||
<span class="badge danger">Tidak Diterima</span>
|
||||
@endif
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<div class="footer">
|
||||
<p>Dicetak pada: {{ now()->format('d F Y H:i:s') }}</p>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
Loading…
Reference in New Issue