From ab188f7a1289fa74e1d14207cbe622d9e1738074 Mon Sep 17 00:00:00 2001 From: annajwasz Date: Sat, 15 Mar 2025 01:10:22 +0700 Subject: [PATCH] wizardfrom done --- app/Filament/Pages/WizardForm.php | 264 ++++++++++++------ .../pages/wizard-form-submit-button.blade.php | 7 + 2 files changed, 191 insertions(+), 80 deletions(-) create mode 100644 resources/views/filament/pages/wizard-form-submit-button.blade.php diff --git a/app/Filament/Pages/WizardForm.php b/app/Filament/Pages/WizardForm.php index bd810e41..42e4ac42 100644 --- a/app/Filament/Pages/WizardForm.php +++ b/app/Filament/Pages/WizardForm.php @@ -2,12 +2,16 @@ namespace App\Filament\Pages; -use App\Models\Listform; +use App\Models\Parameter; use App\Models\Mahasiswa; use Filament\Forms\Components\Wizard; use Filament\Forms\Components\TextInput; use Filament\Forms\Components\Select; use Filament\Forms\Components\FileUpload; +use Filament\Forms\Components\Radio; +use Filament\Forms\Components\Section; +use Filament\Forms\Components\Grid; +use Filament\Forms\Components\Fieldset; use Filament\Forms\Concerns\InteractsWithForms; use Filament\Pages\Page; use Filament\Forms\Form; @@ -35,83 +39,178 @@ public function form(Form $form): Form { return $form ->schema([ - Wizard::make() - ->steps([ - Wizard\Step::make('Biodata Mahasiswa') - ->schema([ - 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(), - 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(), - ]), + Wizard::make([ + Wizard\Step::make('Biodata Mahasiswa') + ->schema([ + 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(), + 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(), + ]), - Wizard\Step::make('Parameter Penilaian') - ->schema([ - Select::make('kepemilikan_kip') - ->label('Kepemilikan KIP') - ->options([ - 'Memiliki KIP' => 'Memiliki KIP', - 'Tidak Memiliki KIP' => 'Tidak Memiliki KIP', - ]) - ->required(), + Wizard\Step::make('Parameter Penilaian') + ->schema([ + Section::make('Kepemilikan KIP') + ->schema([ + Radio::make('kepemilikan_kip') + ->options([ + 'Memiliki KIP' => 'Memiliki KIP', + 'Tidak Memiliki KIP' => 'Tidak Memiliki KIP', + ]) + ->required() + ->inline() + ->reactive(), + + FileUpload::make('berkas_kip') + ->label('Bukti Kepemilikan KIP') + ->disk('berkas') + ->directory('kip') + ->visibility('public') + ->preserveFilenames() + ->downloadable() + ->openable() + ->acceptedFileTypes(['application/pdf']) + ->visible(fn (callable $get) => $get('kepemilikan_kip') === 'Memiliki KIP') + ->required(fn (callable $get) => $get('kepemilikan_kip') === 'Memiliki KIP'), + ]), + + Section::make('Tingkatan Desil') + ->schema([ + Radio::make('terdata_dtks') + ->options([ + 'Terdata' => 'Terdata', + 'Tidak Terdata' => 'Tidak Terdata', + ]) + ->required() + ->inline() + ->reactive(), + + FileUpload::make('berkas_dtks') + ->label('Bukti Terdata di DTKS') + ->disk('berkas') + ->directory('dtks') + ->visibility('public') + ->preserveFilenames() + ->downloadable() + ->openable() + ->acceptedFileTypes(['application/pdf']) + ->visible(fn (callable $get) => $get('terdata_dtks') === 'Terdata') + ->required(fn (callable $get) => $get('terdata_dtks') === 'Terdata'), - Select::make('tingkatan_desil') - ->label('Tingkatan Desil') - ->options([ - 'Desil 1' => 'Desil 1', - 'Desil 2' => 'Desil 2', - 'Desil 3' => 'Desil 3', - 'Desil 4' => 'Desil 4', - 'Desil 5' => 'Desil 5', - ]) - ->required(), - - FileUpload::make('berkas_sktm') - ->label('Upload SKTM') - ->directory('berkas-sktm') - ->preserveFilenames() - ->acceptedFileTypes(['application/pdf']) - ->required(), - - FileUpload::make('berkas_ppke') - ->label('Upload PPKE') - ->directory('berkas-ppke') - ->preserveFilenames() - ->acceptedFileTypes(['application/pdf']), - - FileUpload::make('berkas_pmk') - ->label('Upload PMK') - ->directory('berkas-pmk') - ->preserveFilenames() - ->acceptedFileTypes(['application/pdf']), - - FileUpload::make('berkas_pkh') - ->label('Upload PKH') - ->directory('berkas-pkh') - ->preserveFilenames() - ->acceptedFileTypes(['application/pdf']), - - FileUpload::make('berkas_kks') - ->label('Upload KKS') - ->directory('berkas-kks') - ->preserveFilenames() - ->acceptedFileTypes(['application/pdf']), - ]), - ]) - ->submitAction('Submit') // Ubah submitAction ke string + Select::make('tingkatan_desil') + ->options([ + 'Desil 1' => 'Desil 1', + 'Desil 2' => 'Desil 2', + 'Desil 3' => 'Desil 3', + 'Desil 4' => 'Desil 4', + 'Desil 5' => 'Desil 5', + ]) + ->required(), + ]), + + Section::make('Upload Berkas Bukti Bantuan Pemerintah') + ->schema([ + FileUpload::make('berkas_1') + ->label('Berkas Bukti 1') + ->disk('berkas') + ->directory('ekonomi') + ->visibility('public') + ->preserveFilenames() + ->downloadable() + ->openable() + ->acceptedFileTypes(['application/pdf']) + ->required(), + + FileUpload::make('berkas_2') + ->label('Berkas Bukti 2 (Opsional)') + ->disk('berkas') + ->directory('ekonomi') + ->visibility('public') + ->preserveFilenames() + ->downloadable() + ->openable() + ->acceptedFileTypes(['application/pdf']), + + FileUpload::make('berkas_3') + ->label('Berkas Bukti 3 (Opsional)') + ->disk('berkas') + ->directory('ekonomi') + ->visibility('public') + ->preserveFilenames() + ->downloadable() + ->openable() + ->acceptedFileTypes(['application/pdf']), + ]), + + Section::make('Status Orang Tua') + ->schema([ + Grid::make(2) + ->schema([ + Fieldset::make('Status Ayah') + ->schema([ + Radio::make('status_ayah') + ->options([ + 'Hidup' => 'Hidup', + 'Wafat' => 'Wafat', + ]) + ->required() + ->inline() + ->reactive(), + + FileUpload::make('bukti_wafat_ayah') + ->label('Bukti Kematian Ayah') + ->disk('berkas') + ->directory('wafat') + ->visibility('public') + ->preserveFilenames() + ->downloadable() + ->openable() + ->acceptedFileTypes(['application/pdf']) + ->visible(fn (callable $get) => $get('status_ayah') === 'Wafat') + ->required(fn (callable $get) => $get('status_ayah') === 'Wafat'), + ]), + + Fieldset::make('Status Ibu') + ->schema([ + Radio::make('status_ibu') + ->options([ + 'Hidup' => 'Hidup', + 'Wafat' => 'Wafat', + ]) + ->required() + ->inline() + ->reactive(), + + FileUpload::make('bukti_wafat_ibu') + ->label('Bukti Kematian Ibu') + ->disk('berkas') + ->directory('wafat') + ->visibility('public') + ->preserveFilenames() + ->downloadable() + ->openable() + ->acceptedFileTypes(['application/pdf']) + ->visible(fn (callable $get) => $get('status_ibu') === 'Wafat') + ->required(fn (callable $get) => $get('status_ibu') === 'Wafat'), + ]), + ]), + ]), + ]), + ]) + ->submitAction(view('filament.pages.wizard-form-submit-button')) ]) ->statePath('data'); } - public function saveData(): void + public function submit() { - $data = $this->form->getState(); // Ambil data dari form + $data = $this->form->getState(); DB::beginTransaction(); try { @@ -129,17 +228,22 @@ public function saveData(): void 'alamat' => $data['alamat'], ]); - // Simpan data listform - Listform::create([ + // Simpan data parameter + Parameter::create([ 'mahasiswa_id' => $mahasiswa->id, 'kepemilikan_kip' => $data['kepemilikan_kip'], + 'berkas_kip' => $data['berkas_kip'] ?? null, + 'terdata_dtks' => $data['terdata_dtks'], + 'berkas_dtks' => $data['berkas_dtks'] ?? null, 'tingkatan_desil' => $data['tingkatan_desil'], - 'berkas_sktm' => $data['berkas_sktm'] ?? null, - 'berkas_ppke' => $data['berkas_ppke'] ?? null, - 'berkas_pmk' => $data['berkas_pmk'] ?? null, - 'berkas_pkh' => $data['berkas_pkh'] ?? null, - 'berkas_kks' => $data['berkas_kks'] ?? null, - 'status' => 'belum_divalidasi', + 'berkas_1' => $data['berkas_1'], + 'berkas_2' => $data['berkas_2'] ?? null, + 'berkas_3' => $data['berkas_3'] ?? null, + 'status_ayah' => $data['status_ayah'], + 'bukti_wafat_ayah' => $data['bukti_wafat_ayah'] ?? null, + 'status_ibu' => $data['status_ibu'], + 'bukti_wafat_ibu' => $data['bukti_wafat_ibu'] ?? null, + 'status' => 'belum_validasi', ]); DB::commit(); @@ -150,7 +254,7 @@ public function saveData(): void ->body('Data berhasil disimpan') ->send(); - $this->redirect('/admin/listforms'); + $this->redirect('/admin/parameters'); } catch (\Exception $e) { DB::rollBack(); diff --git a/resources/views/filament/pages/wizard-form-submit-button.blade.php b/resources/views/filament/pages/wizard-form-submit-button.blade.php new file mode 100644 index 00000000..89047c8e --- /dev/null +++ b/resources/views/filament/pages/wizard-form-submit-button.blade.php @@ -0,0 +1,7 @@ + + Simpan Data + \ No newline at end of file