MUCHOS CAMBIOS (IMPORTANTES)

This commit is contained in:
BryamE
2026-01-07 03:35:59 -03:00
parent fb37cc2059
commit ed27d03373
9 changed files with 236 additions and 19 deletions
+14 -2
View File
@@ -3,11 +3,23 @@
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\Product;
class HomeController extends Controller
{
public function __invoke() // * Controlador con un unico metodo se usa __invoke
public function __invoke(Request $request)
{
return view('welcome');
// Si tuvieras un campo 'sales_count', podrías usar ->orderByDesc('sales_count')
$destacados = Product::where('type', 'bike')
->latest() // Las más nuevas
->take(5)
->get();
// Si no hay bicis, traemos cualquier cosa para que no se rompa
if ($destacados->isEmpty()) {
$destacados = Product::take(5)->get();
}
return view('welcome', compact('destacados'));
}
}
@@ -5,6 +5,7 @@ namespace App\Http\Controllers;
use App\Models\Product;
use Illuminate\Http\Request;
use Illuminate\Validation\Rule; // Necesario para validar unicidad al editar
use Illuminate\Support\Facades\Storage; // <--- IMPORTANTE: Agregar esto arriba
class ProductosController extends Controller
{
@@ -54,6 +55,7 @@ class ProductosController extends Controller
'min_stock_alert' => 'required|integer|min:0',
'type' => 'required|in:bike,accessory,service', // Solo permite estos 3 valores
'serial_number' => 'nullable|string|max:100',
'image' => 'nullable|image|mimes:jpeg,png,jpg,webp|max:2048',
]);
// 2. Si no viene SKU, generamos uno automático (Opcional pero útil)
@@ -61,6 +63,17 @@ class ProductosController extends Controller
$validated['sku'] = 'GEN-' . strtoupper(uniqid());
}
// 3. Validacion de imagenes
if ($request->hasFile('image')) {
// Guarda el archivo en storage/app/public/products y devuelve la ruta
$path = $request->file('image')->store('products', 'public');
$validated['image_path'] = $path;
}
unset($validated['image']);
// Para no romper la logica del supplier
$validated['suppliers_id'] = 1;
// 3. Creamos el producto
Product::create($validated);
@@ -102,8 +115,26 @@ class ProductosController extends Controller
'min_stock_alert' => 'required|integer|min:0',
'type' => 'required|in:bike,accessory,service',
'serial_number' => 'nullable|string|max:100',
'image' => 'nullable|image|mimes:jpeg,png,jpg,webp|max:2048',
]);
// 2. Manejo de imagen al actualizar
if ($request->hasFile('image')) {
// Borrar la imagen anterior
if ($product->image_path) {
Storage::disk('public')->delete($product->image_path);
}
// Guardar la nueva
$path = $request->file('image')->store('products', 'public');
$validated['image_path'] = $path;
}
unset($validated['image']);
// Para no romper la logica del supplier
$validated['suppliers_id'] = 1;
$product->update($validated);
return redirect()->route('productos.index')