# DE: Klasse, die ein Druckmaterial darstellt
# ES: Clase que representa un material de impresión

# EN: Class representing a printing material.
# DE: Klasse, die ein Druckmaterial darstellt.
from astroid.objects import DictItems

class Material:
    """
    DE: Repräsentiert ein Druckmaterial mit seinen Eigenschaften und Kosten.
    EN: Represents a printing material with its properties and cost.
    """
    def __init__(self, name: str, material: str, image_link: str, stock_kg: float, cost_kg: float, density: float):
        """
        DE: Initialisiert ein neues Material-Objekt.
        EN: Initializes a new Material object.
        """
        self.name = name
        self.material = material                # DE: Farbe o tipo de material
        self.image_link = image_link            # DE: Link zum Bild
        self.stock_kg = float(stock_kg)          # DE: Lagerbestand in kg
        self.cost_kg = float(cost_kg)           # DE: Kosten in €/kg
        self.dichte = float(density)            # DE: Dichte in g/cm³

    def __str__(self) -> str:
        # DE: Prüft, ob das Material auf Lager ist. Wenn nicht, wird eine entsprechende Nachricht angezeigt.
        # EN: Checks if the material is in stock. If not, displays a corresponding message.
        if self.stock_kg <= 0:
            return f"{self.name} (Nicht auf Lager)"
        else:
            # DE: Wenn auf Lager, formatiert es die Kosten auf zwei Dezimalstellen für eine saubere Anzeige.
            # EN: If in stock, formats the cost to two decimal places for a clean display.
            return f"{self.name} ({self.cost_kg:.2f} €/kg, Dichte: {self.dichte:.2f} g/cm³)"

    def __repr__(self) -> str:
        # DE: Gibt eine eindeutige Zeichenkettendarstellung des Objekts zurück, nützlich für das Debugging.
        # EN: Returns a unique string representation of the object, useful for debugging.
        return (f"Material(name={self.name!r}, bestand={self.stock_kg!r}, "
                f"kosten_pro_kg={self.cost_kg!r}, dichte={self.dichte!r})")
