Files
lash_vanshy/app/Http/Controllers/Admin/GaleriaController.php

114 lines
3.7 KiB
PHP
Executable File

<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use App\Http\Requests\GaleriaRequest;
use App\Models\Galeria;
use Illuminate\Http\RedirectResponse;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Storage;
use Illuminate\View\View;
class GaleriaController extends Controller
{
public function index(): View
{
$galerias = Galeria::ordenado()->paginate(15);
return view('admin.galeria.index', compact('galerias'));
}
public function create(): View
{
return view('admin.galeria.create');
}
public function store(GaleriaRequest $request): RedirectResponse
{
try {
$data = $request->validated();
Log::info('GaleriaRequest validated', $data);
if ($request->hasFile('archivo')) {
Log::info('Has archivo file', ['file' => $request->file('archivo')->getClientOriginalName()]);
$data['archivo'] = $this->uploadFile($request->file('archivo'), 'galeria');
} else {
Log::warning('No archivo file in request');
Log::info('All files:', ['files' => $request->allFiles()]);
}
if ($request->hasFile('thumbnail')) {
$data['thumbnail'] = $this->uploadFile($request->file('thumbnail'), 'galeria/thumbnails');
}
$data['activo'] = $request->has('activo');
$data['orden'] = $data['orden'] ?? 0;
Galeria::create($data);
return redirect()->route('admin.galeria.index')->with('success', 'Modelo registrado correctamente.');
} catch (\Exception $e) {
Log::error('Error creating Galeria: '.$e->getMessage());
return redirect()->back()->with('error', 'Error al guardar: '.$e->getMessage())->withInput();
}
}
public function edit(Galeria $galeria): View
{
return view('admin.galeria.edit', compact('galeria'));
}
public function update(GaleriaRequest $request, Galeria $galeria): RedirectResponse
{
try {
$data = $request->validated();
if ($request->hasFile('archivo')) {
if ($galeria->archivo) {
Storage::disk('public')->delete($galeria->archivo);
}
$data['archivo'] = $this->uploadFile($request->file('archivo'), 'galeria');
}
if ($request->hasFile('thumbnail')) {
if ($galeria->thumbnail) {
Storage::disk('public')->delete($galeria->thumbnail);
}
$data['thumbnail'] = $this->uploadFile($request->file('thumbnail'), 'galeria/thumbnails');
}
$data['activo'] = $request->has('activo');
$data['orden'] = $data['orden'] ?? $galeria->orden;
$galeria->update($data);
return redirect()->route('admin.galeria.index')->with('success', 'Modelo actualizado correctamente.');
} catch (\Exception $e) {
Log::error('Error updating Galeria: '.$e->getMessage());
return redirect()->back()->with('error', 'Error al actualizar: '.$e->getMessage())->withInput();
}
}
public function destroy(Galeria $galeria): RedirectResponse
{
if ($galeria->archivo) {
Storage::disk('public')->delete($galeria->archivo);
}
if ($galeria->thumbnail) {
Storage::disk('public')->delete($galeria->thumbnail);
}
$galeria->delete();
return redirect()->route('admin.galeria.index')->with('success', 'Modelo eliminado correctamente.');
}
private function uploadFile($file, string $directory): string
{
return $file->store($directory, 'public');
}
}