import 'package:em2rp/models/equipment_model.dart';

/// Helpers pour la gestion et l'affichage des équipements
class EquipmentHelpers {
  /// Détermine si un équipement devrait avoir une quantité par défaut
  /// Retourne true pour câbles, consommables et structures
  static bool shouldBeQuantifiableByDefault(EquipmentCategory category) {
    return category == EquipmentCategory.cable ||
           category == EquipmentCategory.consumable ||
           category == EquipmentCategory.structure;
  }

  /// Calcule la quantité disponible d'un équipement
  /// Prend en compte la quantité totale et la quantité déjà assignée
  static int calculateAvailableQuantity(
    EquipmentModel equipment,
    int assignedQuantity,
  ) {
    if (!equipment.hasQuantity) return 0;

    final total = equipment.availableQuantity ?? equipment.totalQuantity ?? 0;
    return (total - assignedQuantity).clamp(0, total);
  }

  /// Vérifie si un équipement est en stock faible
  /// (quantité disponible en dessous du seuil critique)
  static bool isLowStock(EquipmentModel equipment) {
    if (!equipment.hasQuantity) return false;
    if (equipment.criticalThreshold == null) return false;

    final available = equipment.availableQuantity ?? 0;
    return available <= equipment.criticalThreshold!;
  }
}

