user = $user; $this->form->fill(); // Vérifiez si l'utilisateur a un profil avant de remplir le formulaire if ($user->profileinfos) { $profileinfos = $user->profileinfos; $this->form->fill([ 'nom' => profileInfos->nom, 'prenom' => profileInfos->prenom, 'date_naissance' => profileInfos->date_naissance, 'sexe' => profileInfos->sexe, 'pays' => profileInfos->pays, 'fonction' => profileInfos->fonction, 'statut' => profileInfos->statut, 'departement' => profileInfos->departement, 'communes' => profileInfos->communes, 'villes' => profileInfos->villes, 'email' => profileInfos->email, 'numero' => profileInfos->numero, 'contact_urgence' => profileInfos->contact_urgence, 'cv' => profileInfos->cv, 'cni' => profileInfos->cni, 'autres' => profileInfos->autres, 'photo' => profileInfos->photo, ]); } } protected function getFormSchema(): array { return [ Card::make()->schema([ TextInput::make('nom')->required()->maxLength(255), TextInput::make('prenom')->required()->maxLength(255), DatePicker::make('date_naissance')->required(), Select::make('sexe') ->options([ 'homme' => 'Homme', 'femme' => 'Femme', ])->required(), TextInput::make('pays')->required(), TextInput::make('fonction')->required(), Radio::make('statut') ->options([ 'cdd' => 'CDD', 'cdi' => 'CDI', 'stagiaire' => 'Stagiaire', ])->required(), Select::make('departement') ->options([ '1' => '1', '2' => '2', ])->required(), TextInput::make('communes')->required()->maxLength(255), TextInput::make('villes')->required()->maxLength(255), TextInput::make('email')->default(auth()->user()->email), TextInput::make('numero') ->tel()->required(), TextInput::make('contact_urgence') ->tel()->required()->maxLength(10), FileUpload::make('cv') ->preserveFilenames() ->directory('form-attachments') ->visibility('private') ->acceptedFileTypes(['application/pdf']) ->required(), FileUpload::make('cni')->image() ->preserveFilenames() ->directory('form-attachments') ->visibility('private') ->required(), FileUpload::make('autres')->image() ->preserveFilenames() ->directory('form-attachments') ->visibility('private') ->required(), FileUpload::make('photo') ->preserveFilenames() ->directory('profile-photos') ->visibility('public') ->acceptedFileTypes(['image/jpeg', 'image/png']), ]), ]; } public function submit(): void { $user = auth()->user(); $profileData = $this->form->getState(); if ($user->profileinfos) { $existingProfile = $user->profileinfos; $existingProfile->update($profileData); } else { // Aucun profil existant, créer un nouveau profil $profile = new ProfileInfos($profileData); $user->profileinfos()->save($profile); } } public function render() { return view('livewire.infos.infos-form'); } }