Initial commit: Lash Vanshy - Complete project with admin panel, gallery, products, and contact
This commit is contained in:
113
app/Http/Controllers/Admin/GaleriaController.php
Executable file
113
app/Http/Controllers/Admin/GaleriaController.php
Executable file
@@ -0,0 +1,113 @@
|
||||
<?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');
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user