114 lines
3.7 KiB
PHP
Executable File
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');
|
|
}
|
|
}
|