mailwolt/app/Livewire/Ui/System/GeneralForm.php

70 lines
2.1 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<?php
namespace App\Livewire\Ui\System;
use Illuminate\Validation\Rule;
use Livewire\Component;
class GeneralForm extends Component
{
public array $locales;
public array $timezones;
public string $instance_name = 'MailWolt'; // readonly Anzeige
public string $locale;
public string $timezone;
public int $session_timeout = 120; // Minuten
// Beispieldaten später aus Config/DB füllen
public function mount(): void
{
$this->locales = config('system.locales', []);
$this->timezones = config('system.timezones', []);
// prefill from settings
$this->locale = \App\Models\Setting::get('system.locale', 'de');
$this->timezone = \App\Models\Setting::get('system.timezone', 'Europe/Berlin');
$this->session_timeout= (int)\App\Models\Setting::get('system.session_timeout', 120);
}
protected function rules(): array
{
return [
'locale' => ['required', Rule::in(collect($this->locales)->pluck('value')->all())],
'timezone' => ['required', Rule::in($this->timezones)],
'session_timeout' => ['required','integer','min:5','max:1440'],
];
}
public function save(): void
{
$this->validate();
\App\Models\Setting::setMany([
'system.locale' => $this->locale,
'system.timezone' => $this->timezone,
'system.session_timeout' => $this->session_timeout,
]);
// TODO: persist to settings storage (DB/Config)
// e.g. Settings::set('app.locale', $this->locale);
// Settings::set('app.timezone', $this->timezone);
// Settings::set('session.timeout', $this->session_timeout);
$this->dispatch('toast',
type: 'done',
badge: 'Einstellungen',
title: 'Gespeichert',
text: 'Die allgemeinen Einstellungen wurden erfolgreich gespeichert.',
duration: 6000,
);
// $this->dispatch('toast', body: 'Einstellungen gespeichert.');
}
public function render()
{
return view('livewire.ui.system.general-form');
}
}