from flask import Flask
from flask import request
#Instanz der Klasse Flask
store_app = Flask(__name__)

#Daten
abteilung = [
    {
        "abteilung": "Möbel",
        "items": [
            {
                "name": "Stuhl",
                "preis": 49.90
            }
        ]
    }
    ]

#Endpunkt = /shop, die Funktion get_shop() ist mit ihm verbunden
@store_app.get("/shop")               #unter http://127.0.0.1:5000/shop wird die Funktion ausgeführt
def get_shop():
    return {"shop":abteilung}

#Mit einem Decorator werden verschiedene Implementierungen derselben Methode unterschieden
@store_app.post("/shop")    
def create_store():
    request_data = request.get_json()
    abteilung_neu = {"abteilung": request_data["abteilung"], "items":[]}  
    abteilung.append(abteilung_neu)
    return abteilung_neu, 200


@store_app.delete("/shop/<string:abteilung_name>/items")
def delete_item(abteilung_name):
    # Holt den Artikelnamen aus den Query-Parametern (z.B. /shop/Möbel/items?item=Stuhl)
    item_name = request.args.get('item')
    
    # Suche nach der Abteilung
    for abt in abteilung:
        if abt["abteilung"] == abteilung_name:
            # Suche nach dem Artikel in der Abteilung
            i = 0
            for item in abt["items"]:
                if item["name"] == item_name:
                    # Artikel löschen
                    del abt["items"][i]
                    return {"message": f"Artikel '{item_name}' aus der Abteilung '{abteilung_name}' wurde gelöscht."}, 200
                i += 1
            return {"message": f"Artikel '{item_name}' nicht gefunden."}, 404
    
    return {"message": f"Abteilung '{abteilung_name}' nicht gefunden."}, 404


#Neuer Artikel in einer Abteilung anlegen 
@store_app.post("/shop/<string:name>/items") #http://127.0.0.1:5000/shop/Möbel/items
def create_item(name):
    request_data = request.get_json()
    for abt in abteilung:
        if abt["abteilung"] == name:
            new_item = {"name": request_data["name"], "preis": request_data["preis"]}
            abt["items"].append(new_item)
            return new_item, 201
    return {"message": "departmenmt not found"}, 404


#Artikelpreise in einer bestimmten Abteilung ändern
@store_app.put("/shop/<string:abteilung_name>/items/<string:item_name>")
def update_item_price(abteilung_name, item_name):
    request_data = request.get_json()
    new_price = request_data.get("preis")
    
    # Suche nach der Abteilung
    for abt in abteilung:
        if abt["abteilung"] == abteilung_name:
            # Suche nach dem Artikel in der Abteilung
            for item in abt["items"]:
                if item["name"] == item_name:
                    # Preis aktualisieren
                    item["preis"] = new_price
                    return {"name": item["name"], "neuer_preis": item["preis"]}, 200
    
    return {"message": "Abteilung oder Artikel nicht gefunden"}, 404




    
