0) { return redirect()->route('dashboard'); } $this->needsAdmin = User::count() === 0; $setting = Setting::first(); if ($setting) { $this->congregazione_nome = $setting->congregazione_nome ?? ''; $this->giorni_giacenza_da_assegnare = $setting->giorni_giacenza_da_assegnare; $this->giorni_giacenza_prioritari = $setting->giorni_giacenza_prioritari; $this->giorni_per_smarrito = $setting->giorni_per_smarrito; $this->home_limit_list = $setting->home_limit_list; } } public function nextStep() { if ($this->step === 1) { $this->validate([ 'congregazione_nome' => 'required|string|max:255', 'logo' => 'nullable|image|max:2048', ]); } if ($this->step === 2) { $this->validate([ 'giorni_giacenza_da_assegnare' => 'required|integer|min:1|max:999', 'giorni_giacenza_prioritari' => 'required|integer|min:1|max:999', 'giorni_per_smarrito' => 'required|integer|min:1|max:999', 'home_limit_list' => 'required|integer|min:1|max:100', ]); } $this->step++; } public function previousStep() { $this->step = max(1, $this->step - 1); } public function finish() { if ($this->needsAdmin) { $this->validate([ 'admin_name' => 'required|string|max:255', 'admin_email' => 'required|email|unique:users,email', 'admin_password' => 'required|min:8|confirmed', ]); } $setting = Setting::instance(); $setting->congregazione_nome = $this->congregazione_nome; $setting->giorni_giacenza_da_assegnare = $this->giorni_giacenza_da_assegnare; $setting->giorni_giacenza_prioritari = $this->giorni_giacenza_prioritari; $setting->giorni_per_smarrito = $this->giorni_per_smarrito; $setting->home_limit_list = $this->home_limit_list; $setting->setup_completed = true; if ($this->logo) { $path = $this->logo->store('logos', 'public'); $setting->logo_path = $path; } $setting->save(); if ($this->needsAdmin && $this->admin_email) { $admin = User::create([ 'name' => $this->admin_name, 'email' => $this->admin_email, 'password' => Hash::make($this->admin_password), ]); $admin->assignRole('amministratore'); Auth::login($admin); request()->session()->regenerate(); } session()->flash('success', 'Setup completato con successo!'); if (auth()->check()) { return redirect()->route('dashboard'); } return redirect()->route('login'); } public function render() { return view('livewire.setup.wizard') ->layout('components.layouts.guest', ['title' => 'Setup iniziale']); } }