pp-planer/app/Http/Controllers/ServiceImageController.php

49 lines
1.7 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Models\Service;
use App\Models\Setting;
use App\Services\FileConversionService;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Illuminate\Validation\Rule;
class ServiceImageController extends Controller
{
public function storeKeyVisual(Request $request, Service $service): RedirectResponse
{
return $this->store($request, $service, 'key_visual_filename', 'current_key_visual');
}
public function storeBackground(Request $request, Service $service): RedirectResponse
{
return $this->store($request, $service, 'background_filename', 'current_background');
}
private function store(Request $request, Service $service, string $column, string $settingKey): RedirectResponse
{
$request->validate([
'file' => ['required', 'file', 'mimes:jpg,jpeg,png', 'max:20480'],
'scope' => ['required', Rule::in(['service', 'default'])],
], [
'file.required' => 'Bitte wähle eine Bilddatei aus.',
'file.file' => 'Die hochgeladene Datei ist ungültig.',
'file.mimes' => 'Nur Bilddateien (jpg, png) sind erlaubt.',
'file.max' => 'Die Datei darf maximal 20 MB groß sein.',
'scope.required' => 'Bitte wähle einen Geltungsbereich.',
'scope.in' => 'Der gewählte Geltungsbereich ist ungültig.',
]);
$result = app(FileConversionService::class)->convertImageCover($request->file('file'));
$service->update([$column => $result['filename']]);
if ($request->input('scope') === 'default') {
Setting::set($settingKey, $result['filename']);
}
return back()->with('success', 'Bild wurde gespeichert.');
}
}