Add SettingView action
This commit is contained in:
parent
3a4908f505
commit
ad8cd58b4f
|
@ -1,24 +0,0 @@
|
|||
<?php
|
||||
|
||||
namespace App\Fileshare\Actions;
|
||||
|
||||
use App\Fileshare\Models\Fileshare;
|
||||
use App\Fileshare\Resources\FileshareResource;
|
||||
use Inertia\Inertia;
|
||||
use Inertia\Response;
|
||||
use Lorisleiva\Actions\Concerns\AsAction;
|
||||
|
||||
class FileshareIndexAction
|
||||
{
|
||||
use AsAction;
|
||||
|
||||
public function handle(): Response
|
||||
{
|
||||
session()->put('menu', 'setting');
|
||||
session()->put('title', 'Datei-Verbindungen');
|
||||
|
||||
return Inertia::render('fileshare/Index', [
|
||||
'data' => FileshareResource::collection(Fileshare::paginate(15)),
|
||||
]);
|
||||
}
|
||||
}
|
|
@ -2,7 +2,8 @@
|
|||
|
||||
namespace App\Fileshare;
|
||||
|
||||
use App\Fileshare\Actions\FileshareIndexAction;
|
||||
use App\Fileshare\Models\Fileshare;
|
||||
use App\Fileshare\Resources\FileshareResource;
|
||||
use App\Setting\Contracts\Viewable;
|
||||
use App\Setting\LocalSettings;
|
||||
|
||||
|
@ -18,13 +19,18 @@ class FileshareSettings extends LocalSettings implements Viewable
|
|||
return 'fileshare';
|
||||
}
|
||||
|
||||
public static function indexAction(): string
|
||||
{
|
||||
return FileshareIndexAction::class;
|
||||
}
|
||||
|
||||
public static function title(): string
|
||||
{
|
||||
return 'Datei-Verbindungen';
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function viewData(): array
|
||||
{
|
||||
return [
|
||||
'data' => FileshareResource::collection(Fileshare::paginate(15))
|
||||
];
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,36 +0,0 @@
|
|||
<?php
|
||||
|
||||
namespace App\Form\Actions;
|
||||
|
||||
use App\Form\FormSettings;
|
||||
use Inertia\Inertia;
|
||||
use Inertia\Response;
|
||||
use Lorisleiva\Actions\Concerns\AsAction;
|
||||
|
||||
class SettingIndexAction
|
||||
{
|
||||
use AsAction;
|
||||
|
||||
/**
|
||||
* @return array<string, mixed>
|
||||
*/
|
||||
public function handle(FormSettings $settings): array
|
||||
{
|
||||
return [
|
||||
'data' => [
|
||||
'register_url' => $settings->registerUrl,
|
||||
'clear_cache_url' => $settings->clearCacheUrl,
|
||||
],
|
||||
];
|
||||
}
|
||||
|
||||
public function asController(FormSettings $settings): Response
|
||||
{
|
||||
session()->put('menu', 'setting');
|
||||
session()->put('title', 'Module');
|
||||
|
||||
return Inertia::render('setting/Form', [
|
||||
'data' => $this->handle($settings),
|
||||
]);
|
||||
}
|
||||
}
|
|
@ -2,7 +2,6 @@
|
|||
|
||||
namespace App\Form;
|
||||
|
||||
use App\Form\Actions\SettingIndexAction;
|
||||
use App\Form\Actions\SettingStoreAction;
|
||||
use App\Setting\Contracts\Viewable;
|
||||
use App\Setting\Contracts\Storeable;
|
||||
|
@ -28,13 +27,23 @@ class FormSettings extends LocalSettings implements Viewable, Storeable
|
|||
return 'Formulare';
|
||||
}
|
||||
|
||||
public static function indexAction(): string
|
||||
{
|
||||
return SettingIndexAction::class;
|
||||
}
|
||||
|
||||
public static function storeAction(): string
|
||||
{
|
||||
return SettingStoreAction::class;
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function viewData(): array
|
||||
{
|
||||
return [
|
||||
'data' => [
|
||||
'data' => [
|
||||
'register_url' => $this->registerUrl,
|
||||
'clear_cache_url' => $this->clearCacheUrl,
|
||||
]
|
||||
]
|
||||
];
|
||||
}
|
||||
}
|
||||
|
|
|
@ -40,9 +40,26 @@ class InvoiceSettings extends LocalSettings implements Viewable, Storeable
|
|||
return 'bill';
|
||||
}
|
||||
|
||||
public static function indexAction(): string
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function viewData(): array
|
||||
{
|
||||
return SettingIndexAction::class;
|
||||
return [
|
||||
'data' => [
|
||||
'from_long' => $this->from_long,
|
||||
'from' => $this->from,
|
||||
'mobile' => $this->mobile,
|
||||
'email' => $this->email,
|
||||
'website' => $this->website,
|
||||
'address' => $this->address,
|
||||
'place' => $this->place,
|
||||
'zip' => $this->zip,
|
||||
'iban' => $this->iban,
|
||||
'bic' => $this->bic,
|
||||
'remember_weeks' => $this->rememberWeeks,
|
||||
]
|
||||
];
|
||||
}
|
||||
|
||||
public static function storeAction(): string
|
||||
|
|
|
@ -1,42 +0,0 @@
|
|||
<?php
|
||||
|
||||
namespace App\Invoice;
|
||||
|
||||
use Inertia\Inertia;
|
||||
use Inertia\Response;
|
||||
use Lorisleiva\Actions\Concerns\AsAction;
|
||||
|
||||
class SettingIndexAction
|
||||
{
|
||||
use AsAction;
|
||||
|
||||
/**
|
||||
* @return array<string, string>
|
||||
*/
|
||||
public function handle(InvoiceSettings $settings): array
|
||||
{
|
||||
return [
|
||||
'from_long' => $settings->from_long,
|
||||
'from' => $settings->from,
|
||||
'mobile' => $settings->mobile,
|
||||
'email' => $settings->email,
|
||||
'website' => $settings->website,
|
||||
'address' => $settings->address,
|
||||
'place' => $settings->place,
|
||||
'zip' => $settings->zip,
|
||||
'iban' => $settings->iban,
|
||||
'bic' => $settings->bic,
|
||||
'remember_weeks' => $settings->rememberWeeks,
|
||||
];
|
||||
}
|
||||
|
||||
public function asController(InvoiceSettings $settings): Response
|
||||
{
|
||||
session()->put('menu', 'setting');
|
||||
session()->put('title', 'Rechnungs-Einstellungen');
|
||||
|
||||
return Inertia::render('setting/Bill', [
|
||||
'data' => $this->handle($settings),
|
||||
]);
|
||||
}
|
||||
}
|
|
@ -1,33 +0,0 @@
|
|||
<?php
|
||||
|
||||
namespace App\Mailgateway\Actions;
|
||||
|
||||
use App\Mailgateway\Models\Mailgateway;
|
||||
use App\Mailgateway\Resources\MailgatewayResource;
|
||||
use Illuminate\Database\Eloquent\Builder;
|
||||
use Inertia\Inertia;
|
||||
use Inertia\Response;
|
||||
use Lorisleiva\Actions\Concerns\AsAction;
|
||||
|
||||
class IndexAction
|
||||
{
|
||||
use AsAction;
|
||||
|
||||
/**
|
||||
* @return Builder<Mailgateway>
|
||||
*/
|
||||
public function handle(): Builder
|
||||
{
|
||||
return (new Mailgateway())->newQuery();
|
||||
}
|
||||
|
||||
public function asController(): Response
|
||||
{
|
||||
session()->put('menu', 'setting');
|
||||
session()->put('title', 'E-Mail-Verbindungen');
|
||||
|
||||
return Inertia::render('mailgateway/Index', [
|
||||
'data' => MailgatewayResource::collection($this->handle()->paginate(10)),
|
||||
]);
|
||||
}
|
||||
}
|
|
@ -3,6 +3,8 @@
|
|||
namespace App\Mailgateway;
|
||||
|
||||
use App\Mailgateway\Actions\IndexAction;
|
||||
use App\Mailgateway\Models\Mailgateway;
|
||||
use App\Mailgateway\Resources\MailgatewayResource;
|
||||
use App\Setting\Contracts\Viewable;
|
||||
use App\Setting\LocalSettings;
|
||||
|
||||
|
@ -18,13 +20,18 @@ class MailgatewaySettings extends LocalSettings implements Viewable
|
|||
return 'mailgateway';
|
||||
}
|
||||
|
||||
public static function indexAction(): string
|
||||
{
|
||||
return IndexAction::class;
|
||||
}
|
||||
|
||||
public static function title(): string
|
||||
{
|
||||
return 'E-Mail-Verbindungen';
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function viewData(): array
|
||||
{
|
||||
return [
|
||||
'data' => MailgatewayResource::collection(Mailgateway::paginate(10)),
|
||||
];
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,35 +0,0 @@
|
|||
<?php
|
||||
|
||||
namespace App\Module;
|
||||
|
||||
use Inertia\Inertia;
|
||||
use Inertia\Response;
|
||||
use Lorisleiva\Actions\Concerns\AsAction;
|
||||
|
||||
class ModuleIndexAction
|
||||
{
|
||||
use AsAction;
|
||||
|
||||
/**
|
||||
* @return array<string, mixed>
|
||||
*/
|
||||
public function handle(ModuleSettings $settings): array
|
||||
{
|
||||
return [
|
||||
'data' => [
|
||||
'modules' => $settings->modules,
|
||||
],
|
||||
'meta' => ['modules' => Module::forSelect()],
|
||||
];
|
||||
}
|
||||
|
||||
public function asController(ModuleSettings $settings): Response
|
||||
{
|
||||
session()->put('menu', 'setting');
|
||||
session()->put('title', 'Module');
|
||||
|
||||
return Inertia::render('setting/Module', [
|
||||
'data' => $this->handle($settings),
|
||||
]);
|
||||
}
|
||||
}
|
|
@ -26,11 +26,6 @@ class ModuleSettings extends LocalSettings implements Viewable, Storeable
|
|||
return 'Module';
|
||||
}
|
||||
|
||||
public static function indexAction(): string
|
||||
{
|
||||
return ModuleIndexAction::class;
|
||||
}
|
||||
|
||||
public static function storeAction(): string
|
||||
{
|
||||
return ModuleStoreAction::class;
|
||||
|
@ -40,4 +35,19 @@ class ModuleSettings extends LocalSettings implements Viewable, Storeable
|
|||
{
|
||||
return in_array($module, $this->modules);
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function viewData(): array
|
||||
{
|
||||
return [
|
||||
'data' => [
|
||||
'data' => [
|
||||
'modules' => $this->modules,
|
||||
],
|
||||
'meta' => ['modules' => Module::forSelect()],
|
||||
]
|
||||
];
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,35 +0,0 @@
|
|||
<?php
|
||||
|
||||
namespace App\Nami\Actions;
|
||||
|
||||
use App\Setting\NamiSettings;
|
||||
use Inertia\Inertia;
|
||||
use Inertia\Response;
|
||||
use Lorisleiva\Actions\Concerns\AsAction;
|
||||
|
||||
class SettingIndexAction
|
||||
{
|
||||
use AsAction;
|
||||
|
||||
/**
|
||||
* @return array<string, string>
|
||||
*/
|
||||
public function handle(NamiSettings $settings): array
|
||||
{
|
||||
return [
|
||||
'mglnr' => $settings->mglnr,
|
||||
'password' => '',
|
||||
'default_group_id' => $settings->default_group_id,
|
||||
];
|
||||
}
|
||||
|
||||
public function asController(NamiSettings $settings): Response
|
||||
{
|
||||
session()->put('menu', 'setting');
|
||||
session()->put('title', 'NaMi-Settings');
|
||||
|
||||
return Inertia::render('setting/Nami', [
|
||||
'data' => $this->handle($settings),
|
||||
]);
|
||||
}
|
||||
}
|
|
@ -1,20 +0,0 @@
|
|||
<?php
|
||||
|
||||
namespace App\Prevention\Actions;
|
||||
|
||||
use Inertia\Inertia;
|
||||
use Inertia\Response;
|
||||
use Lorisleiva\Actions\Concerns\AsAction;
|
||||
|
||||
class PreventionIndexAction
|
||||
{
|
||||
use AsAction;
|
||||
|
||||
public function handle(): Response
|
||||
{
|
||||
session()->put('menu', 'setting');
|
||||
session()->put('title', 'Prävention');
|
||||
|
||||
return Inertia::render('setting/Prevention');
|
||||
}
|
||||
}
|
|
@ -3,7 +3,6 @@
|
|||
namespace App\Prevention;
|
||||
|
||||
use App\Lib\Editor\EditorData;
|
||||
use App\Prevention\Actions\PreventionIndexAction;
|
||||
use App\Setting\Contracts\Viewable;
|
||||
use App\Setting\LocalSettings;
|
||||
|
||||
|
@ -22,13 +21,16 @@ class PreventionSettings extends LocalSettings implements Viewable
|
|||
return 'prevention';
|
||||
}
|
||||
|
||||
public static function indexAction(): string
|
||||
{
|
||||
return PreventionIndexAction::class;
|
||||
}
|
||||
|
||||
public static function title(): string
|
||||
{
|
||||
return 'Prävention';
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function viewData(): array
|
||||
{
|
||||
return [];
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,21 @@
|
|||
<?php
|
||||
|
||||
namespace App\Setting\Actions;
|
||||
|
||||
use App\Setting\Contracts\Viewable;
|
||||
use Inertia\Inertia;
|
||||
use Inertia\Response;
|
||||
use Lorisleiva\Actions\Concerns\AsAction;
|
||||
|
||||
class ViewAction
|
||||
{
|
||||
use AsAction;
|
||||
|
||||
public function handle(Viewable $settingGroup): Response
|
||||
{
|
||||
session()->put('menu', 'setting');
|
||||
session()->put('title', $settingGroup::title());
|
||||
|
||||
return Inertia::render('setting/' . ucfirst($settingGroup::group()), $settingGroup->viewData());
|
||||
}
|
||||
}
|
|
@ -4,8 +4,14 @@ namespace App\Setting\Contracts;
|
|||
|
||||
interface Viewable
|
||||
{
|
||||
public static function url(): string;
|
||||
|
||||
public static function title(): string;
|
||||
|
||||
public static function group(): string;
|
||||
|
||||
/**
|
||||
* @return class-string
|
||||
* @return array<string, mixed>
|
||||
*/
|
||||
public static function indexAction(): string;
|
||||
public function viewData(): array;
|
||||
}
|
||||
|
|
|
@ -41,11 +41,6 @@ class NamiSettings extends LocalSettings implements Viewable, Storeable
|
|||
return 'nami';
|
||||
}
|
||||
|
||||
public static function indexAction(): string
|
||||
{
|
||||
return SettingIndexAction::class;
|
||||
}
|
||||
|
||||
public static function storeAction(): string
|
||||
{
|
||||
return SettingSaveAction::class;
|
||||
|
@ -55,4 +50,18 @@ class NamiSettings extends LocalSettings implements Viewable, Storeable
|
|||
{
|
||||
return 'NaMi-Login';
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
*/
|
||||
public function viewData(): array
|
||||
{
|
||||
return [
|
||||
'data' => [
|
||||
'mglnr' => $this->mglnr,
|
||||
'password' => '',
|
||||
'default_group_id' => $this->default_group_id,
|
||||
]
|
||||
];
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,8 +2,9 @@
|
|||
|
||||
namespace App\Setting;
|
||||
|
||||
use App\Setting\Contracts\Viewable;
|
||||
use App\Invoice\InvoiceSettings;
|
||||
use App\Setting\Contracts\Storeable;
|
||||
use App\Setting\Contracts\Viewable;
|
||||
use Illuminate\Routing\Router;
|
||||
|
||||
class SettingFactory
|
||||
|
@ -20,10 +21,6 @@ class SettingFactory
|
|||
{
|
||||
$this->settings[] = $setting;
|
||||
|
||||
if (new $setting() instanceof Viewable) {
|
||||
app(Router::class)->middleware(['web', 'auth:web', SettingMiddleware::class])->get($setting::url(), $setting::indexAction());
|
||||
}
|
||||
|
||||
if (new $setting() instanceof Storeable) {
|
||||
app(Router::class)->middleware(['web', 'auth:web'])->post($setting::url(), $setting::storeAction());
|
||||
}
|
||||
|
@ -45,4 +42,11 @@ class SettingFactory
|
|||
])
|
||||
->toArray();
|
||||
}
|
||||
|
||||
public function resolveGroupName(string $name): Viewable
|
||||
{
|
||||
$settingClass = collect($this->settings)->filter(fn ($setting) => new $setting() instanceof Viewable)->first(fn ($setting) => $setting::group() === $name);
|
||||
|
||||
return app($settingClass);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -8,6 +8,8 @@ use App\Invoice\InvoiceSettings;
|
|||
use App\Mailgateway\MailgatewaySettings;
|
||||
use App\Module\ModuleSettings;
|
||||
use App\Prevention\PreventionSettings;
|
||||
use App\Setting\Actions\ViewAction;
|
||||
use Illuminate\Routing\Router;
|
||||
use Illuminate\Support\ServiceProvider;
|
||||
|
||||
class SettingServiceProvider extends ServiceProvider
|
||||
|
@ -20,6 +22,8 @@ class SettingServiceProvider extends ServiceProvider
|
|||
public function register()
|
||||
{
|
||||
app()->singleton(SettingFactory::class, fn () => new SettingFactory());
|
||||
app(Router::class)->bind('settingGroup', fn ($param) => app(SettingFactory::class)->resolveGroupName($param));
|
||||
app(Router::class)->middleware(['web', 'auth:web', SettingMiddleware::class])->get('/setting/{settingGroup}', ViewAction::class);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
Loading…
Reference in New Issue