From 59d5cf748d51c7853b7f9876fc0cf9077c3ea4af Mon Sep 17 00:00:00 2001 From: BryamE Date: Fri, 9 Jan 2026 01:34:26 -0300 Subject: [PATCH] Cambios en vista de visitante, separada logica de productos y catalogos poara manejo individual, creados catalogo.index y catalogo.show. acomodadas rutas del catalogo para evitar errores. --- app/Http/Controllers/CatalogoController.php | 9 +- .../index.blade.php} | 18 +-- resources/views/catalogo/show.blade.php | 105 ++++++++++++++++++ resources/views/components/navbar.blade.php | 2 +- .../views/components/ui/carrousel.blade.php | 2 +- resources/views/sales/create.blade.php | 12 +- routes/web.php | 32 +++--- 7 files changed, 139 insertions(+), 41 deletions(-) rename resources/views/{catalogo.blade.php => catalogo/index.blade.php} (83%) create mode 100644 resources/views/catalogo/show.blade.php diff --git a/app/Http/Controllers/CatalogoController.php b/app/Http/Controllers/CatalogoController.php index 425580d..8991f3e 100644 --- a/app/Http/Controllers/CatalogoController.php +++ b/app/Http/Controllers/CatalogoController.php @@ -10,7 +10,7 @@ class CatalogoController extends Controller /** * Muestra los registros de ventas con buscador y paginación. */ - public function catalogo(Request $request) + public function index(Request $request) { // Consulta base $query = Product::query(); @@ -31,6 +31,11 @@ class CatalogoController extends Controller $products = $query->paginate(12)->withQueryString(); // withQueryString mantiene la búsqueda al cambiar de página // Devuelve la vista - return view('catalogo', compact('products')); + return view('catalogo.index', compact('products')); + } + + public function show(Product $product) + { + return view('catalogo.show', compact('product')); } } diff --git a/resources/views/catalogo.blade.php b/resources/views/catalogo/index.blade.php similarity index 83% rename from resources/views/catalogo.blade.php rename to resources/views/catalogo/index.blade.php index 0d33c3b..4e22482 100644 --- a/resources/views/catalogo.blade.php +++ b/resources/views/catalogo/index.blade.php @@ -7,11 +7,11 @@ @if ($products->count() > 0)
- @foreach ($products as $prod) + @foreach ($products as $product)
{{-- Imagen si existe --}} - @if (!empty($prod->image_path)) - {{ $prod->name }}image_path)) + {{ $product->name }} @else
@@ -20,22 +20,22 @@ @endif {{-- Nombre --}} -

{{ $prod->name }}

+

{{ $product->name }}

{{-- Descripción corta --}}
- @if (!empty($prod->description)) -

{{ $prod->description }}

+ @if (!empty($product->description)) +

{{ $product->description }}

@endif
{{-- Precio --}} - @if (!empty($prod->price)) -

${{ number_format($prod->price, 2, ',', '.') }}

+ @if (!empty($product->price)) +

${{ number_format($product->price, 2, ',', '.') }}

@endif {{-- Botón --}} - Ver + diff --git a/resources/views/catalogo/show.blade.php b/resources/views/catalogo/show.blade.php new file mode 100644 index 0000000..a7834cb --- /dev/null +++ b/resources/views/catalogo/show.blade.php @@ -0,0 +1,105 @@ + + +
+ + + + + Volver al Catálogo + + +
+
+ + +
+ + @if($product->image_path) + {{ $product->name }} + @else +
+ + Sin Imagen +
+ @endif + + +
+ @if($product->type == 'bike') + Bicicleta + @else + Accesorio + @endif +
+ +
+ + +
+ + +
+

SKU: {{ $product->sku ?? 'N/A' }}

+

{{ $product->name }}

+ + +
+ @if($product->stock_quantity > 5) + + En Stock ({{ $product->stock_quantity }} unid.) + @elseif($product->stock_quantity > 0) + + ¡Últimas Unidades! ({{ $product->stock_quantity }}) + @else + + Agotado + @endif +
+
+ + +
+ Precio Contado +
+ ${{ number_format($product->price, 0, ',', '.') }} + ARG +
+

* Consultar financiación en el local.

+
+ + +
+

Descripción

+

+ {{ $product->description ?? 'Sin descripción detallada disponible para este producto. Por favor, acérquese al local para más información.' }} +

+
+ + +
+ + + + + WhatsApp + +
+ +
+
+
+
+
+ {{-- Editar +
+ @csrf + @method('DELETE') + +
--}} \ No newline at end of file diff --git a/resources/views/components/navbar.blade.php b/resources/views/components/navbar.blade.php index 5bc8c95..a3a1721 100644 --- a/resources/views/components/navbar.blade.php +++ b/resources/views/components/navbar.blade.php @@ -66,7 +66,7 @@
  • -
    +
    diff --git a/resources/views/sales/create.blade.php b/resources/views/sales/create.blade.php index d0bdec9..49d437d 100644 --- a/resources/views/sales/create.blade.php +++ b/resources/views/sales/create.blade.php @@ -38,16 +38,8 @@
    - @if(session('success')) -
    - {{ session('success') }} -
    - @endif - @if(session('error')) -
    - {{ session('error') }} -
    - @endif + + @if($errors->any())
      diff --git a/routes/web.php b/routes/web.php index 74304f5..5e6ba69 100644 --- a/routes/web.php +++ b/routes/web.php @@ -14,31 +14,27 @@ use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Session; Route::get('/',HomeController::class); -Route::get('/catalogo', [CatalogoController::class,'catalogo'])->name('catalogo'); -Route::get('login', function(){ - return view('login'); -})->name('login'); +// Route::get('/catalogo', [CatalogoController::class,'catalogo'])->name('catalogo'); +Route::resource('catalogo', CatalogoController::class)->only(['index', 'show'])->parameters(['catalogo' => 'product']); -Route::post('login', LoginController::class) -->middleware('throttle:5,1') -->name('login.attempt'); - -Route::view('dashboard', 'dashboard')->middleware('auth')->name('dashboard'); - -Route::post('logout', function(){ - Auth::guard('web')->logout(); - - Session::invalidate(); - Session::regenerateToken(); - - return redirect('/'); -})->name('logout'); +Route::get('login', function(){ return view('login'); })->name('login'); +Route::post('login', LoginController::class)->middleware('throttle:5,1')->name('login.attempt'); Route::view('register', 'register')->name('register'); Route::post('register', RegisterController::class)->name('register.store'); +Route::post('logout', function(){ + Auth::guard('web')->logout(); + + Session::invalidate(); + Session::regenerateToken(); + + return redirect('/'); +})->name('logout'); + Route::middleware(['auth'])->group(function () { + Route::view('dashboard', 'dashboard')->name('dashboard'); Route::resource('clients', ClientController::class); Route::resource('productos', ProductosController::class)->parameters([ 'productos' => 'product'