wizardfrom done

This commit is contained in:
annajwasz 2025-03-15 01:10:22 +07:00
parent 5284a36bc6
commit ab188f7a12
2 changed files with 191 additions and 80 deletions

View File

@ -2,12 +2,16 @@
namespace App\Filament\Pages; namespace App\Filament\Pages;
use App\Models\Listform; use App\Models\Parameter;
use App\Models\Mahasiswa; use App\Models\Mahasiswa;
use Filament\Forms\Components\Wizard; use Filament\Forms\Components\Wizard;
use Filament\Forms\Components\TextInput; use Filament\Forms\Components\TextInput;
use Filament\Forms\Components\Select; use Filament\Forms\Components\Select;
use Filament\Forms\Components\FileUpload; 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\Forms\Concerns\InteractsWithForms;
use Filament\Pages\Page; use Filament\Pages\Page;
use Filament\Forms\Form; use Filament\Forms\Form;
@ -35,83 +39,178 @@ public function form(Form $form): Form
{ {
return $form return $form
->schema([ ->schema([
Wizard::make() Wizard::make([
->steps([ Wizard\Step::make('Biodata Mahasiswa')
Wizard\Step::make('Biodata Mahasiswa') ->schema([
->schema([ TextInput::make('noreg_kipk')->label('No. Registrasi KIP-K')->required(),
TextInput::make('noreg_kipk')->label('No. Registrasi KIP-K')->required(), TextInput::make('nama')->label('Nama Lengkap')->required(),
TextInput::make('nama')->label('Nama Lengkap')->required(), TextInput::make('nim')->label('NIM')->required(),
TextInput::make('nim')->label('NIM')->required(), TextInput::make('jurusan')->label('Jurusan')->required(),
TextInput::make('jurusan')->label('Jurusan')->required(), TextInput::make('prodi')->label('Program Studi')->required(),
TextInput::make('prodi')->label('Program Studi')->required(), TextInput::make('angkatan')->label('Angkatan')->required(),
TextInput::make('angkatan')->label('Angkatan')->required(), TextInput::make('semester')->label('Semester')->required(),
TextInput::make('semester')->label('Semester')->required(), TextInput::make('jalur_masuk')->label('Jalur Masuk')->required(),
TextInput::make('jalur_masuk')->label('Jalur Masuk')->required(), TextInput::make('ponsel')->label('No. Handphone')->tel()->required(),
TextInput::make('ponsel')->label('No. Handphone')->tel()->required(), TextInput::make('alamat')->label('Alamat')->required(),
TextInput::make('alamat')->label('Alamat')->required(), ]),
]),
Wizard\Step::make('Parameter Penilaian') Wizard\Step::make('Parameter Penilaian')
->schema([ ->schema([
Select::make('kepemilikan_kip') Section::make('Kepemilikan KIP')
->label('Kepemilikan KIP') ->schema([
->options([ Radio::make('kepemilikan_kip')
'Memiliki KIP' => 'Memiliki KIP', ->options([
'Tidak Memiliki KIP' => 'Tidak Memiliki KIP', 'Memiliki KIP' => 'Memiliki KIP',
]) 'Tidak Memiliki KIP' => 'Tidak Memiliki KIP',
->required(), ])
->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') Select::make('tingkatan_desil')
->label('Tingkatan Desil') ->options([
->options([ 'Desil 1' => 'Desil 1',
'Desil 1' => 'Desil 1', 'Desil 2' => 'Desil 2',
'Desil 2' => 'Desil 2', 'Desil 3' => 'Desil 3',
'Desil 3' => 'Desil 3', 'Desil 4' => 'Desil 4',
'Desil 4' => 'Desil 4', 'Desil 5' => 'Desil 5',
'Desil 5' => 'Desil 5', ])
]) ->required(),
->required(), ]),
FileUpload::make('berkas_sktm') Section::make('Upload Berkas Bukti Bantuan Pemerintah')
->label('Upload SKTM') ->schema([
->directory('berkas-sktm') FileUpload::make('berkas_1')
->preserveFilenames() ->label('Berkas Bukti 1')
->acceptedFileTypes(['application/pdf']) ->disk('berkas')
->required(), ->directory('ekonomi')
->visibility('public')
FileUpload::make('berkas_ppke') ->preserveFilenames()
->label('Upload PPKE') ->downloadable()
->directory('berkas-ppke') ->openable()
->preserveFilenames() ->acceptedFileTypes(['application/pdf'])
->acceptedFileTypes(['application/pdf']), ->required(),
FileUpload::make('berkas_pmk') FileUpload::make('berkas_2')
->label('Upload PMK') ->label('Berkas Bukti 2 (Opsional)')
->directory('berkas-pmk') ->disk('berkas')
->preserveFilenames() ->directory('ekonomi')
->acceptedFileTypes(['application/pdf']), ->visibility('public')
->preserveFilenames()
FileUpload::make('berkas_pkh') ->downloadable()
->label('Upload PKH') ->openable()
->directory('berkas-pkh') ->acceptedFileTypes(['application/pdf']),
->preserveFilenames()
->acceptedFileTypes(['application/pdf']), FileUpload::make('berkas_3')
->label('Berkas Bukti 3 (Opsional)')
FileUpload::make('berkas_kks') ->disk('berkas')
->label('Upload KKS') ->directory('ekonomi')
->directory('berkas-kks') ->visibility('public')
->preserveFilenames() ->preserveFilenames()
->acceptedFileTypes(['application/pdf']), ->downloadable()
]), ->openable()
]) ->acceptedFileTypes(['application/pdf']),
->submitAction('Submit') // Ubah submitAction ke string ]),
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'); ->statePath('data');
} }
public function saveData(): void public function submit()
{ {
$data = $this->form->getState(); // Ambil data dari form $data = $this->form->getState();
DB::beginTransaction(); DB::beginTransaction();
try { try {
@ -129,17 +228,22 @@ public function saveData(): void
'alamat' => $data['alamat'], 'alamat' => $data['alamat'],
]); ]);
// Simpan data listform // Simpan data parameter
Listform::create([ Parameter::create([
'mahasiswa_id' => $mahasiswa->id, 'mahasiswa_id' => $mahasiswa->id,
'kepemilikan_kip' => $data['kepemilikan_kip'], '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'], 'tingkatan_desil' => $data['tingkatan_desil'],
'berkas_sktm' => $data['berkas_sktm'] ?? null, 'berkas_1' => $data['berkas_1'],
'berkas_ppke' => $data['berkas_ppke'] ?? null, 'berkas_2' => $data['berkas_2'] ?? null,
'berkas_pmk' => $data['berkas_pmk'] ?? null, 'berkas_3' => $data['berkas_3'] ?? null,
'berkas_pkh' => $data['berkas_pkh'] ?? null, 'status_ayah' => $data['status_ayah'],
'berkas_kks' => $data['berkas_kks'] ?? null, 'bukti_wafat_ayah' => $data['bukti_wafat_ayah'] ?? null,
'status' => 'belum_divalidasi', 'status_ibu' => $data['status_ibu'],
'bukti_wafat_ibu' => $data['bukti_wafat_ibu'] ?? null,
'status' => 'belum_validasi',
]); ]);
DB::commit(); DB::commit();
@ -150,7 +254,7 @@ public function saveData(): void
->body('Data berhasil disimpan') ->body('Data berhasil disimpan')
->send(); ->send();
$this->redirect('/admin/listforms'); $this->redirect('/admin/parameters');
} catch (\Exception $e) { } catch (\Exception $e) {
DB::rollBack(); DB::rollBack();

View File

@ -0,0 +1,7 @@
<x-filament::button
type="submit"
wire:click="submit"
class="w-full"
>
Simpan Data
</x-filament::button>