wasRecentlyCreated) { return; } $stockActual = $producto->getStockEfectivo(); $alertaStockMinimo = collect(); $alertaStockMaximo = collect(); // Verificar stock mínimo if ($stockActual <= $producto->stock_minimo && $producto->stock_minimo > 0) { $alertaStockMinimo->push($producto); Log::info("Stock mínimo alcanzado para producto: {$producto->nombre} (Stock: {$stockActual})"); } // Verificar stock máximo if ($producto->stock_maximo && $stockActual > $producto->stock_maximo) { $alertaStockMaximo->push($producto); Log::info("Stock máximo excedido para producto: {$producto->nombre} (Stock: {$stockActual})"); } // Enviar alertas si hay productos que requieren atención if ($alertaStockMinimo->isNotEmpty() || $alertaStockMaximo->isNotEmpty()) { $this->enviarAlertasStock($alertaStockMinimo, $alertaStockMaximo); } } private function enviarAlertasStock($productosStockMinimo, $productosStockMaximo) { // Obtener todos los usuarios con el rol 'Administrador' $administradores = User::role('Administrador')->get(); if ($administradores->isEmpty()) { Log::warning('No se encontraron usuarios con el rol Administrador para enviar alertas de stock.'); return; } foreach ($administradores as $admin) { try { // Enviar usando el nuevo sistema de alertas Mail::to($admin->email)->send(new AlertaStockMail( $productosStockMinimo, $productosStockMaximo, $admin->email )); Log::info("Alerta de stock enviada a: {$admin->email}"); } catch (\Exception $e) { Log::error("Error al enviar alerta de stock a {$admin->email}: " . $e->getMessage()); } } } }