49 lines
1.7 KiB
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.');
|
|
}
|
|
}
|