MUCHOS CAMBIOS (IMPORTANTES)
This commit is contained in:
@@ -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')
|
||||
|
||||
Reference in New Issue
Block a user