fix testing
This commit is contained in:
parent
183a7bf01b
commit
c4d8bfb4d9
|
@ -3,12 +3,16 @@
|
||||||
namespace App\Filament\Pages;
|
namespace App\Filament\Pages;
|
||||||
|
|
||||||
use App\Models\Parameter;
|
use App\Models\Parameter;
|
||||||
|
use App\Models\Mahasiswa;
|
||||||
use Filament\Pages\Page;
|
use Filament\Pages\Page;
|
||||||
use Filament\Infolists\Infolist;
|
use Filament\Infolists\Infolist;
|
||||||
use Filament\Infolists\Components\Section;
|
use Filament\Infolists\Components\Section;
|
||||||
use Filament\Infolists\Components\TextEntry;
|
use Filament\Infolists\Components\TextEntry;
|
||||||
use Filament\Infolists\Components\Grid;
|
use Filament\Infolists\Components\Grid;
|
||||||
use Filament\Navigation\NavigationItem;
|
use Filament\Navigation\NavigationItem;
|
||||||
|
use Filament\Actions\Action;
|
||||||
|
use Barryvdh\DomPDF\Facade\Pdf;
|
||||||
|
use Illuminate\Support\Facades\Storage;
|
||||||
|
|
||||||
class ProgresDataPage extends Page
|
class ProgresDataPage extends Page
|
||||||
{
|
{
|
||||||
|
@ -27,7 +31,46 @@ public function getTitle(): string
|
||||||
public function infolist(Infolist $infolist): Infolist
|
public function infolist(Infolist $infolist): Infolist
|
||||||
{
|
{
|
||||||
$user = auth()->user();
|
$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
|
return $infolist
|
||||||
->schema([
|
->schema([
|
||||||
|
@ -39,18 +82,17 @@ public function infolist(Infolist $infolist): Infolist
|
||||||
->label('Status Berkas')
|
->label('Status Berkas')
|
||||||
->badge()
|
->badge()
|
||||||
->color(fn (string $state): string => match ($state) {
|
->color(fn (string $state): string => match ($state) {
|
||||||
'valid' => 'success',
|
'Berkas Valid' => 'success',
|
||||||
'tidak_valid' => 'danger',
|
'Berkas Tidak Valid' => 'danger',
|
||||||
'belum_validasi' => 'warning',
|
'Belum Divalidasi' => 'warning',
|
||||||
default => 'gray',
|
default => 'gray',
|
||||||
}),
|
}),
|
||||||
TextEntry::make('hasil')
|
TextEntry::make('hasil')
|
||||||
->label('Hasil Seleksi')
|
->label('Hasil Seleksi')
|
||||||
->badge()
|
->badge()
|
||||||
->color(fn (string $state): string => match ($state) {
|
->color(fn (string $state): string => match ($state) {
|
||||||
'Layak' => 'success',
|
'Diterima' => 'success',
|
||||||
'Dipertimbangkan' => 'warning',
|
'Tidak Diterima' => 'danger',
|
||||||
'Tidak Layak' => 'danger',
|
|
||||||
default => 'gray',
|
default => 'gray',
|
||||||
}),
|
}),
|
||||||
]),
|
]),
|
||||||
|
@ -63,11 +105,34 @@ public function infolist(Infolist $infolist): Infolist
|
||||||
->columnSpanFull(),
|
->columnSpanFull(),
|
||||||
]),
|
]),
|
||||||
])
|
])
|
||||||
->state([
|
->state($state);
|
||||||
'status' => $data?->status ?? 'belum_validasi',
|
}
|
||||||
'hasil' => $data?->hasil ?? 'Belum Ada Hasil',
|
|
||||||
'keterangan' => $data?->keterangan ?? 'Data Anda sedang dalam proses validasi',
|
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
|
public static function shouldRegisterNavigation(): bool
|
||||||
|
|
|
@ -61,7 +61,8 @@ public static function table(Table $table): Table
|
||||||
TextColumn::make('nama'),
|
TextColumn::make('nama'),
|
||||||
TextColumn::make('tgl_pembuatan')
|
TextColumn::make('tgl_pembuatan')
|
||||||
->label('Tanggal'),
|
->label('Tanggal'),
|
||||||
TextColumn::make('kuota'),
|
TextColumn::make('kuota')
|
||||||
|
->visible(fn () => !Auth::user()->hasRole('mahasiswa')),
|
||||||
TextColumn::make('status')
|
TextColumn::make('status')
|
||||||
->badge()
|
->badge()
|
||||||
->color(fn (string $state): string => match ($state) {
|
->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'))
|
->url(fn () => route('filament.admin.resources.hasil-penilaian.akreditasi-c'))
|
||||||
->color('danger')
|
->color('danger')
|
||||||
->icon('heroicon-o-bookmark'),
|
->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'))
|
->modifyQueryUsing(fn ($query) => $query->where('status', 'valid'))
|
||||||
->columns([
|
->columns([
|
||||||
|
@ -165,24 +107,17 @@ public static function table(Table $table): Table
|
||||||
->label('Hasil')
|
->label('Hasil')
|
||||||
->badge()
|
->badge()
|
||||||
->color(fn (string $state): string => match ($state) {
|
->color(fn (string $state): string => match ($state) {
|
||||||
'Layak' => 'success',
|
'Diterima' => 'success',
|
||||||
'Dipertimbangkan' => 'warning',
|
'Tidak Diterima' => 'danger',
|
||||||
'Tidak Layak' => 'danger',
|
|
||||||
default => 'gray',
|
default => 'gray',
|
||||||
})
|
|
||||||
->formatStateUsing(fn (string $state): string => match ($state) {
|
|
||||||
'Layak' => 'Diterima',
|
|
||||||
'Tidak Layak' => 'Tidak Diterima',
|
|
||||||
default => $state,
|
|
||||||
}),
|
}),
|
||||||
])
|
])
|
||||||
->defaultSort('total_nilai', 'desc')
|
->defaultSort('total_nilai', 'desc')
|
||||||
->filters([
|
->filters([
|
||||||
Tables\Filters\SelectFilter::make('hasil')
|
Tables\Filters\SelectFilter::make('hasil')
|
||||||
->options([
|
->options([
|
||||||
'Layak' => 'Layak',
|
'Diterima' => 'Diterima',
|
||||||
'Dipertimbangkan' => 'Dipertimbangkan',
|
'Tidak Diterima' => 'Tidak Diterima',
|
||||||
'Tidak Layak' => 'Tidak Layak',
|
|
||||||
]),
|
]),
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
|
@ -38,7 +38,7 @@ public function table(Table $table): Table
|
||||||
// Reset hasil untuk akreditasi A
|
// Reset hasil untuk akreditasi A
|
||||||
Parameter::whereHas('mahasiswa.prodi', function ($query) {
|
Parameter::whereHas('mahasiswa.prodi', function ($query) {
|
||||||
$query->where('akreditasi', 'A');
|
$query->where('akreditasi', 'A');
|
||||||
})->update(['hasil' => 'Tidak Layak']);
|
})->update(['hasil' => 'Tidak Diterima']);
|
||||||
|
|
||||||
// Ambil data parameter yang valid dengan akreditasi A
|
// Ambil data parameter yang valid dengan akreditasi A
|
||||||
$validParameters = Parameter::where('status', 'valid')
|
$validParameters = Parameter::where('status', 'valid')
|
||||||
|
@ -55,11 +55,7 @@ public function table(Table $table): Table
|
||||||
if ($index < $kuota) {
|
if ($index < $kuota) {
|
||||||
DB::table('parameters')
|
DB::table('parameters')
|
||||||
->where('id', $parameter->id)
|
->where('id', $parameter->id)
|
||||||
->update(['hasil' => 'Layak']);
|
->update(['hasil' => 'Diterima']);
|
||||||
} elseif ($index < ($kuota + 3)) {
|
|
||||||
DB::table('parameters')
|
|
||||||
->where('id', $parameter->id)
|
|
||||||
->update(['hasil' => 'Dipertimbangkan']);
|
|
||||||
}
|
}
|
||||||
$index++;
|
$index++;
|
||||||
}
|
}
|
||||||
|
@ -139,9 +135,8 @@ public function table(Table $table): Table
|
||||||
->label('Hasil')
|
->label('Hasil')
|
||||||
->badge()
|
->badge()
|
||||||
->color(fn (string $state): string => match ($state) {
|
->color(fn (string $state): string => match ($state) {
|
||||||
'Layak' => 'success',
|
'Diterima' => 'success',
|
||||||
'Dipertimbangkan' => 'warning',
|
'Tidak Diterima' => 'danger',
|
||||||
'Tidak Layak' => 'danger',
|
|
||||||
default => 'gray',
|
default => 'gray',
|
||||||
}),
|
}),
|
||||||
])
|
])
|
||||||
|
@ -149,9 +144,8 @@ public function table(Table $table): Table
|
||||||
->filters([
|
->filters([
|
||||||
\Filament\Tables\Filters\SelectFilter::make('hasil')
|
\Filament\Tables\Filters\SelectFilter::make('hasil')
|
||||||
->options([
|
->options([
|
||||||
'Layak' => 'Layak',
|
'Diterima' => 'success',
|
||||||
'Dipertimbangkan' => 'Dipertimbangkan',
|
'Tidak Diterima' => 'danger',
|
||||||
'Tidak Layak' => 'Tidak Layak',
|
|
||||||
]),
|
]),
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
|
@ -39,7 +39,7 @@ public function table(Table $table): Table
|
||||||
// Reset hasil untuk akreditasi B
|
// Reset hasil untuk akreditasi B
|
||||||
Parameter::whereHas('mahasiswa.prodi', function ($query) {
|
Parameter::whereHas('mahasiswa.prodi', function ($query) {
|
||||||
$query->where('akreditasi', 'B');
|
$query->where('akreditasi', 'B');
|
||||||
})->update(['hasil' => 'Tidak Layak']);
|
})->update(['hasil' => 'Tidak Diterima']);
|
||||||
|
|
||||||
// Ambil data parameter yang valid dengan akreditasi B
|
// Ambil data parameter yang valid dengan akreditasi B
|
||||||
$validParameters = Parameter::where('status', 'valid')
|
$validParameters = Parameter::where('status', 'valid')
|
||||||
|
@ -56,11 +56,7 @@ public function table(Table $table): Table
|
||||||
if ($index < $kuota) {
|
if ($index < $kuota) {
|
||||||
DB::table('parameters')
|
DB::table('parameters')
|
||||||
->where('id', $parameter->id)
|
->where('id', $parameter->id)
|
||||||
->update(['hasil' => 'Layak']);
|
->update(['hasil' => 'Diterima']);
|
||||||
} elseif ($index < ($kuota + 3)) {
|
|
||||||
DB::table('parameters')
|
|
||||||
->where('id', $parameter->id)
|
|
||||||
->update(['hasil' => 'Dipertimbangkan']);
|
|
||||||
}
|
}
|
||||||
$index++;
|
$index++;
|
||||||
}
|
}
|
||||||
|
@ -140,9 +136,8 @@ public function table(Table $table): Table
|
||||||
->label('Hasil')
|
->label('Hasil')
|
||||||
->badge()
|
->badge()
|
||||||
->color(fn (string $state): string => match ($state) {
|
->color(fn (string $state): string => match ($state) {
|
||||||
'Layak' => 'success',
|
'Diterima' => 'success',
|
||||||
'Dipertimbangkan' => 'warning',
|
'Tidak Diterima' => 'danger',
|
||||||
'Tidak Layak' => 'danger',
|
|
||||||
default => 'gray',
|
default => 'gray',
|
||||||
}),
|
}),
|
||||||
])
|
])
|
||||||
|
@ -150,9 +145,8 @@ public function table(Table $table): Table
|
||||||
->filters([
|
->filters([
|
||||||
\Filament\Tables\Filters\SelectFilter::make('hasil')
|
\Filament\Tables\Filters\SelectFilter::make('hasil')
|
||||||
->options([
|
->options([
|
||||||
'Layak' => 'Layak',
|
'Diterima' => 'success',
|
||||||
'Dipertimbangkan' => 'Dipertimbangkan',
|
'Tidak Diterima' => 'danger',
|
||||||
'Tidak Layak' => 'Tidak Layak',
|
|
||||||
]),
|
]),
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
|
@ -39,7 +39,7 @@ public function table(Table $table): Table
|
||||||
// Reset hasil untuk akreditasi C
|
// Reset hasil untuk akreditasi C
|
||||||
Parameter::whereHas('mahasiswa.prodi', function ($query) {
|
Parameter::whereHas('mahasiswa.prodi', function ($query) {
|
||||||
$query->where('akreditasi', 'C');
|
$query->where('akreditasi', 'C');
|
||||||
})->update(['hasil' => 'Tidak Layak']);
|
})->update(['hasil' => 'Tidak Diterima']);
|
||||||
|
|
||||||
// Ambil data parameter yang valid dengan akreditasi C
|
// Ambil data parameter yang valid dengan akreditasi C
|
||||||
$validParameters = Parameter::where('status', 'valid')
|
$validParameters = Parameter::where('status', 'valid')
|
||||||
|
@ -56,11 +56,7 @@ public function table(Table $table): Table
|
||||||
if ($index < $kuota) {
|
if ($index < $kuota) {
|
||||||
DB::table('parameters')
|
DB::table('parameters')
|
||||||
->where('id', $parameter->id)
|
->where('id', $parameter->id)
|
||||||
->update(['hasil' => 'Layak']);
|
->update(['hasil' => 'Diterima']);
|
||||||
} elseif ($index < ($kuota + 3)) {
|
|
||||||
DB::table('parameters')
|
|
||||||
->where('id', $parameter->id)
|
|
||||||
->update(['hasil' => 'Dipertimbangkan']);
|
|
||||||
}
|
}
|
||||||
$index++;
|
$index++;
|
||||||
}
|
}
|
||||||
|
@ -140,9 +136,8 @@ public function table(Table $table): Table
|
||||||
->label('Hasil')
|
->label('Hasil')
|
||||||
->badge()
|
->badge()
|
||||||
->color(fn (string $state): string => match ($state) {
|
->color(fn (string $state): string => match ($state) {
|
||||||
'Layak' => 'success',
|
'Diterima' => 'success',
|
||||||
'Dipertimbangkan' => 'warning',
|
'Tidak Diterima' => 'danger',
|
||||||
'Tidak Layak' => 'danger',
|
|
||||||
default => 'gray',
|
default => 'gray',
|
||||||
}),
|
}),
|
||||||
])
|
])
|
||||||
|
@ -150,9 +145,8 @@ public function table(Table $table): Table
|
||||||
->filters([
|
->filters([
|
||||||
\Filament\Tables\Filters\SelectFilter::make('hasil')
|
\Filament\Tables\Filters\SelectFilter::make('hasil')
|
||||||
->options([
|
->options([
|
||||||
'Layak' => 'Layak',
|
'Diterima' => 'success',
|
||||||
'Dipertimbangkan' => 'Dipertimbangkan',
|
'Tidak Diterima' => 'danger',
|
||||||
'Tidak Layak' => 'Tidak Layak',
|
|
||||||
]),
|
]),
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
|
@ -36,6 +36,8 @@ public static function form(Form $form): Form
|
||||||
TextInput::make('prioritas')
|
TextInput::make('prioritas')
|
||||||
->required(),
|
->required(),
|
||||||
TextInput::make('bobot')
|
TextInput::make('bobot')
|
||||||
|
->disabled()
|
||||||
|
->helperText('Bobot akan dihitung otomatis oleh sistem')
|
||||||
// ->required(),
|
// ->required(),
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
|
@ -38,6 +38,11 @@ class ParameterResource extends Resource
|
||||||
|
|
||||||
protected static ?string $title = 'Validasi Data';
|
protected static ?string $title = 'Validasi Data';
|
||||||
|
|
||||||
|
public static function canCreate(): bool
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
public static function form(Form $form): Form
|
public static function form(Form $form): Form
|
||||||
{
|
{
|
||||||
return $form
|
return $form
|
||||||
|
@ -304,9 +309,8 @@ public static function table(Table $table): Table
|
||||||
// ->label('Hasil')
|
// ->label('Hasil')
|
||||||
// ->badge()
|
// ->badge()
|
||||||
// ->color(fn (string $state): string => match ($state) {
|
// ->color(fn (string $state): string => match ($state) {
|
||||||
// 'Layak' => 'success',
|
// 'Diterima' => 'success',
|
||||||
// 'Dipertimbangkan' => 'warning',
|
// 'Tidak Diterima' => 'danger',
|
||||||
// 'Tidak Layak' => 'danger',
|
|
||||||
// default => 'gray',
|
// default => 'gray',
|
||||||
// }),
|
// }),
|
||||||
|
|
||||||
|
@ -376,6 +380,12 @@ public static function table(Table $table): Table
|
||||||
'valid' => 'Valid',
|
'valid' => 'Valid',
|
||||||
'tidak_valid' => 'Tidak Valid',
|
'tidak_valid' => 'Tidak Valid',
|
||||||
]),
|
]),
|
||||||
|
|
||||||
|
Tables\Filters\SelectFilter::make('hasil')
|
||||||
|
->options([
|
||||||
|
'Diterima' => 'Diterima',
|
||||||
|
'Tidak Diterima' => 'Tidak Diterima',
|
||||||
|
]),
|
||||||
])
|
])
|
||||||
->actions([
|
->actions([
|
||||||
Tables\Actions\Action::make('validasi')
|
Tables\Actions\Action::make('validasi')
|
||||||
|
@ -590,7 +600,6 @@ public static function getPages(): array
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
'index' => Pages\ListParameters::route('/'),
|
'index' => Pages\ListParameters::route('/'),
|
||||||
'create' => Pages\CreateParameter::route('/create'),
|
|
||||||
'edit' => Pages\EditParameter::route('/{record}/edit'),
|
'edit' => Pages\EditParameter::route('/{record}/edit'),
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,78 +1,78 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Filament\Resources;
|
// namespace App\Filament\Resources;
|
||||||
|
|
||||||
use App\Filament\Resources\PengumumanResource\Pages;
|
// use App\Filament\Resources\PengumumanResource\Pages;
|
||||||
use App\Models\Parameter;
|
// use App\Models\Parameter;
|
||||||
use Filament\Forms\Form;
|
// use Filament\Forms\Form;
|
||||||
use Filament\Resources\Resource;
|
// use Filament\Resources\Resource;
|
||||||
use Filament\Tables;
|
// use Filament\Tables;
|
||||||
use Filament\Tables\Table;
|
// use Filament\Tables\Table;
|
||||||
use Filament\Tables\Columns\TextColumn;
|
// use Filament\Tables\Columns\TextColumn;
|
||||||
use Filament\Tables\Columns\ViewColumn;
|
// use Filament\Tables\Columns\ViewColumn;
|
||||||
use Illuminate\Database\Eloquent\Builder;
|
// use Illuminate\Database\Eloquent\Builder;
|
||||||
|
|
||||||
class PengumumanResource extends Resource
|
// class PengumumanResource extends Resource
|
||||||
{
|
// {
|
||||||
protected static ?string $model = Parameter::class;
|
// protected static ?string $model = Parameter::class;
|
||||||
|
|
||||||
protected static ?string $navigationIcon = 'heroicon-o-document-text';
|
// protected static ?string $navigationIcon = 'heroicon-o-document-text';
|
||||||
protected static ?string $navigationGroup = 'Penilaian';
|
// protected static ?string $navigationGroup = 'Penilaian';
|
||||||
protected static ?string $navigationLabel = 'Pengumuman';
|
// protected static ?string $navigationLabel = 'Pengumuman';
|
||||||
protected static ?int $navigationSort = 3;
|
// protected static ?int $navigationSort = 3;
|
||||||
protected static ?string $slug = 'pengumuman';
|
// protected static ?string $slug = 'pengumuman';
|
||||||
|
|
||||||
protected static ?string $modelLabel = 'Pengumuman';
|
// protected static ?string $modelLabel = 'Pengumuman';
|
||||||
protected static ?string $pluralModelLabel = 'Pengumuman';
|
// protected static ?string $pluralModelLabel = 'Pengumuman';
|
||||||
protected static ?string $breadcrumb = 'Pengumuman';
|
// protected static ?string $breadcrumb = 'Pengumuman';
|
||||||
|
|
||||||
public static function table(Table $table): Table
|
// public static function table(Table $table): Table
|
||||||
{
|
// {
|
||||||
return $table
|
// return $table
|
||||||
->columns([
|
// ->columns([
|
||||||
TextColumn::make('mahasiswa.nama')
|
// TextColumn::make('mahasiswa.nama')
|
||||||
->label('Nama Mahasiswa')
|
// ->label('Nama Mahasiswa')
|
||||||
->searchable()
|
// ->searchable()
|
||||||
->sortable(),
|
// ->sortable(),
|
||||||
|
|
||||||
TextColumn::make('status')
|
// TextColumn::make('status')
|
||||||
->label('Status Berkas')
|
// ->label('Status Berkas')
|
||||||
->badge()
|
// ->badge()
|
||||||
->color(fn (string $state): string => match ($state) {
|
// ->color(fn (string $state): string => match ($state) {
|
||||||
'valid' => 'success',
|
// 'valid' => 'success',
|
||||||
'tidak_valid' => 'danger',
|
// 'tidak_valid' => 'danger',
|
||||||
'belum_validasi' => 'warning',
|
// 'belum_validasi' => 'warning',
|
||||||
default => 'gray',
|
// default => 'gray',
|
||||||
}),
|
// }),
|
||||||
|
|
||||||
TextColumn::make('hasil')
|
// TextColumn::make('hasil')
|
||||||
->label('Hasil Seleksi')
|
// ->label('Hasil Seleksi')
|
||||||
->badge()
|
// ->badge()
|
||||||
->color(fn (string $state): string => match ($state) {
|
// ->color(fn (string $state): string => match ($state) {
|
||||||
'Layak' => 'success',
|
// 'Layak' => 'success',
|
||||||
'Dipertimbangkan' => 'warning',
|
// 'Dipertimbangkan' => 'warning',
|
||||||
'Tidak Layak' => 'danger',
|
// 'Tidak Layak' => 'danger',
|
||||||
default => 'gray',
|
// default => 'gray',
|
||||||
}),
|
// }),
|
||||||
|
|
||||||
ViewColumn::make('keterangan')
|
// ViewColumn::make('keterangan')
|
||||||
->label('Keterangan')
|
// ->label('Keterangan')
|
||||||
->view('filament.tables.columns.keterangan-pengumuman'),
|
// ->view('filament.tables.columns.keterangan-pengumuman'),
|
||||||
])
|
// ])
|
||||||
->defaultSort('total_nilai', 'desc')
|
// ->defaultSort('total_nilai', 'desc')
|
||||||
->modifyQueryUsing(function (Builder $query): Builder {
|
// ->modifyQueryUsing(function (Builder $query): Builder {
|
||||||
$user = auth()->user();
|
// $user = auth()->user();
|
||||||
if ($user->roles[0]->name == 'Mahasiswa') {
|
// if ($user->roles[0]->name == 'Mahasiswa') {
|
||||||
return $query->where('mahasiswa_id', $user->id);
|
// return $query->where('mahasiswa_id', $user->id);
|
||||||
}
|
// }
|
||||||
return $query;
|
// return $query;
|
||||||
});
|
// });
|
||||||
}
|
// }
|
||||||
|
|
||||||
public static function getPages(): array
|
// public static function getPages(): array
|
||||||
{
|
// {
|
||||||
return [
|
// return [
|
||||||
'index' => Pages\ListPengumuman::route('/'),
|
// 'index' => Pages\ListPengumuman::route('/'),
|
||||||
];
|
// ];
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|
|
@ -55,6 +55,8 @@ public static function form(Form $form): Form
|
||||||
->required(),
|
->required(),
|
||||||
TextInput::make('bobot')
|
TextInput::make('bobot')
|
||||||
->numeric()
|
->numeric()
|
||||||
|
->disabled()
|
||||||
|
->helperText('Bobot akan dihitung otomatis oleh sistem')
|
||||||
// ->required(),
|
// ->required(),
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,30 +1,30 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Models;
|
// namespace App\Models;
|
||||||
|
|
||||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
// use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||||
use Illuminate\Database\Eloquent\Model;
|
// use Illuminate\Database\Eloquent\Model;
|
||||||
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
// use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
||||||
|
|
||||||
class Pengumuman extends Model
|
// class Pengumuman extends Model
|
||||||
{
|
// {
|
||||||
use HasFactory;
|
// use HasFactory;
|
||||||
|
|
||||||
protected $table = 'pengumumans';
|
// protected $table = 'pengumumans';
|
||||||
|
|
||||||
protected $fillable = [
|
// protected $fillable = [
|
||||||
'parameter_id',
|
// 'parameter_id',
|
||||||
'user_id',
|
// 'user_id',
|
||||||
'keterangan'
|
// 'keterangan'
|
||||||
];
|
// ];
|
||||||
|
|
||||||
public function parameter(): BelongsTo
|
// public function parameter(): BelongsTo
|
||||||
{
|
// {
|
||||||
return $this->belongsTo(Parameter::class);
|
// return $this->belongsTo(Parameter::class);
|
||||||
}
|
// }
|
||||||
|
|
||||||
public function user(): BelongsTo
|
// public function user(): BelongsTo
|
||||||
{
|
// {
|
||||||
return $this->belongsTo(User::class);
|
// return $this->belongsTo(User::class);
|
||||||
}
|
// }
|
||||||
}
|
// }
|
|
@ -117,6 +117,16 @@ protected static function boot()
|
||||||
}
|
}
|
||||||
break;
|
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':
|
case 'Kondisi Ekonomi':
|
||||||
// Hitung jumlah berkas yang diupload
|
// Hitung jumlah berkas yang diupload
|
||||||
$berkasCount = 0;
|
$berkasCount = 0;
|
||||||
|
|
|
@ -75,7 +75,7 @@ public function up()
|
||||||
$table->decimal('total_nilai', 10, 7)->default(0);
|
$table->decimal('total_nilai', 10, 7)->default(0);
|
||||||
|
|
||||||
// Hasil penilaian
|
// Hasil penilaian
|
||||||
$table->enum('hasil', ['Layak', 'Dipertimbangkan', 'Tidak Layak'])->nullable();
|
$table->enum('hasil', ['Diterima', 'Tidak Diterima'])->nullable();
|
||||||
|
|
||||||
|
|
||||||
$table->timestamps();
|
$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',
|
'nama' => 'Kepemilikan KIP',
|
||||||
'prioritas' => 1,
|
'prioritas' => 1,
|
||||||
'bobot' => 0.5208333,
|
'bobot' => 0.4566667,
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'nama' => 'Terdata DTKS',
|
||||||
|
'prioritas' => 2,
|
||||||
|
'bobot' => 0.2566667,
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
'nama' => 'Tingkatan Desil',
|
'nama' => 'Tingkatan Desil',
|
||||||
'prioritas' => 2,
|
'prioritas' => 3,
|
||||||
'bobot' => 0.2708333,
|
'bobot' => 0.1566667,
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
'nama' => 'Kondisi Ekonomi',
|
'nama' => 'Kondisi Ekonomi',
|
||||||
'prioritas' => 3,
|
'prioritas' => 4,
|
||||||
'bobot' => 0.1458333,
|
'bobot' => 0.09,
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
'nama' => 'Status Orang Tua',
|
'nama' => 'Status Orang Tua',
|
||||||
'prioritas' => 4,
|
'prioritas' => 5,
|
||||||
'bobot' => 0.0625000,
|
'bobot' => 0.04,
|
||||||
],
|
],
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
|
@ -20,104 +20,118 @@ public function run(): void
|
||||||
'nama' => 'Memiliki KIP',
|
'nama' => 'Memiliki KIP',
|
||||||
'deskripsi' => 'Mahasiswa memiliki Kartu Indonesia Pintar',
|
'deskripsi' => 'Mahasiswa memiliki Kartu Indonesia Pintar',
|
||||||
'prioritas' => 1,
|
'prioritas' => 1,
|
||||||
'bobot' => 0.3906250,
|
'bobot' => 0.3425000,
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
'kriteria_id' => 1,
|
'kriteria_id' => 1,
|
||||||
'nama' => 'Tidak Memiliki KIP',
|
'nama' => 'Tidak Memiliki KIP',
|
||||||
'deskripsi' => 'Mahasiswa tidak memiliki Kartu Indonesia Pintar',
|
'deskripsi' => 'Mahasiswa tidak memiliki Kartu Indonesia Pintar',
|
||||||
'prioritas' => 2,
|
'prioritas' => 2,
|
||||||
'bobot' => 0.1302083,
|
'bobot' => 0.1141667,
|
||||||
],
|
],
|
||||||
|
// Subkriteria untuk Terdata dalam DTKS (kriteria_id: 2)
|
||||||
// Subkriteria untuk Tingkatan Desil (kriteria_id: 2)
|
|
||||||
[
|
[
|
||||||
'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',
|
'nama' => 'Desil 1',
|
||||||
'deskripsi' => 'Tingkat kesejahteraan terendah',
|
'deskripsi' => 'Tingkat kesejahteraan terendah',
|
||||||
'prioritas' => 1,
|
'prioritas' => 1,
|
||||||
'bobot' => 0.1238805,
|
'bobot' => 0.0715445,
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
'kriteria_id' => 2,
|
'kriteria_id' => 3,
|
||||||
'nama' => 'Desil 2',
|
'nama' => 'Desil 2',
|
||||||
'deskripsi' => 'Tingkat kesejahteraan sangat rendah',
|
'deskripsi' => 'Tingkat kesejahteraan sangat rendah',
|
||||||
'prioritas' => 2,
|
'prioritas' => 2,
|
||||||
'bobot' => 0.0695139,
|
'bobot' => 0.0402111,
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
'kriteria_id' => 2,
|
'kriteria_id' => 3,
|
||||||
'nama' => 'Desil 3',
|
'nama' => 'Desil 3',
|
||||||
'deskripsi' => 'Tingkat kesejahteraan rendah',
|
'deskripsi' => 'Tingkat kesejahteraan rendah',
|
||||||
'prioritas' => 3,
|
'prioritas' => 3,
|
||||||
'bobot' => 0.0424306,
|
'bobot' => 0.0245444,
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
'kriteria_id' => 2,
|
'kriteria_id' => 3,
|
||||||
'nama' => 'Desil 4',
|
'nama' => 'Desil 4',
|
||||||
'deskripsi' => 'Tingkat kesejahteraan menengah bawah',
|
'deskripsi' => 'Tingkat kesejahteraan menengah bawah',
|
||||||
'prioritas' => 4,
|
'prioritas' => 4,
|
||||||
'bobot' => 0.0243750,
|
'bobot' => 0.0141000,
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
'kriteria_id' => 2,
|
'kriteria_id' => 3,
|
||||||
'nama' => 'Desil 5',
|
'nama' => 'Desil 5',
|
||||||
'deskripsi' => 'Tingkat kesejahteraan menengah',
|
'deskripsi' => 'Tingkat kesejahteraan menengah',
|
||||||
'prioritas' => 5,
|
'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',
|
'nama' => 'Sangat Kurang Mampu',
|
||||||
'deskripsi' => 'Memiliki lebih dari 2 bantuan pemerintah',
|
'deskripsi' => 'Memiliki lebih dari 2 bantuan pemerintah',
|
||||||
'prioritas' => 1,
|
'prioritas' => 1,
|
||||||
'bobot' => 0.0759548,
|
'bobot' => 0.0468750,
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
'kriteria_id' => 3,
|
'kriteria_id' => 4,
|
||||||
'nama' => 'Kurang Mampu',
|
'nama' => 'Kurang Mampu',
|
||||||
'deskripsi' => 'Memiliki 2 bantuan pemerintah',
|
'deskripsi' => 'Memiliki 2 bantuan pemerintah',
|
||||||
'prioritas' => 2,
|
'prioritas' => 2,
|
||||||
'bobot' => 0.0394965,
|
'bobot' => 0.0243750,
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
'kriteria_id' => 3,
|
'kriteria_id' => 4,
|
||||||
'nama' => 'Cukup Mampu',
|
'nama' => 'Cukup Mampu',
|
||||||
'deskripsi' => 'Mahasiswa memiliki 1 bantuan pemerintah',
|
'deskripsi' => 'Mahasiswa memiliki 1 bantuan pemerintah',
|
||||||
'prioritas' => 3,
|
'prioritas' => 3,
|
||||||
'bobot' => 0.0212674,
|
'bobot' => 0.0131250,
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
'kriteria_id' => 3,
|
'kriteria_id' => 4,
|
||||||
'nama' => 'Tidak Menerima Bantuan',
|
'nama' => 'Tidak Menerima Bantuan',
|
||||||
'deskripsi' => 'Mahasiswa tidak memiliki bantuan pemerintah',
|
'deskripsi' => 'Mahasiswa tidak memiliki bantuan pemerintah',
|
||||||
'prioritas' => 4,
|
'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',
|
'nama' => 'Kedua Orang Tua Wafat',
|
||||||
'deskripsi' => 'Ayah dan Ibu wafat',
|
'deskripsi' => 'Ayah dan Ibu wafat',
|
||||||
'prioritas' => 1,
|
'prioritas' => 1,
|
||||||
'bobot' => 0.0381944,
|
'bobot' => 0.0244444,
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
'kriteria_id' => 4,
|
'kriteria_id' => 5,
|
||||||
'nama' => 'Salah Satu Orang Tua Wafat',
|
'nama' => 'Salah Satu Orang Tua Wafat',
|
||||||
'deskripsi' => 'Ayah atau Ibu-nya wafat',
|
'deskripsi' => 'Ayah atau Ibu-nya wafat',
|
||||||
'prioritas' => 2,
|
'prioritas' => 2,
|
||||||
'bobot' => 0.0173611,
|
'bobot' => 0.0111111,
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
'kriteria_id' => 4,
|
'kriteria_id' => 5,
|
||||||
'nama' => 'Kedua Orang Tua Masih Hidup',
|
'nama' => 'Kedua Orang Tua Masih Hidup',
|
||||||
'deskripsi' => 'Ayah dan Ibu-nya masih hidup',
|
'deskripsi' => 'Ayah dan Ibu-nya masih hidup',
|
||||||
'prioritas' => 3,
|
'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