# -*- coding: utf-8 -*-
import json
import os

FILNAMN_JS = "skafferi_data.js"

def ladda_data():
    if os.path.exists(FILNAMN_JS):
        try:
            with open(FILNAMN_JS, "r", encoding="utf-8") as f:
                text = f.read()
                # Plockar bort "const skafferiData = " i början och ";" i slutet
                if "const skafferiData =" in text:
                    json_str = text.split("const skafferiData =")[1].strip().rstrip(";")
                    return json.loads(json_str)
        except:
            return []
    
    # Standardlista om filen saknas
    standard_data = [
        {"namn": "Mjölk", "dagar_per_forpackning": 4, "antal": 3, "dagar_kvar": 12, "total_dagar": 12},
        {"namn": "Vetekaka", "dagar_per_forpackning": 7, "antal": 1, "dagar_kvar": 7, "total_dagar": 7}
    ]
    spara_data(standard_data)
    return standard_data

def spara_data(data):
    # Sparar som en .js-fil så att dashboarden kan läsa den direkt utan säkerhetsfel
    with open(FILNAMN_JS, "w", encoding="utf-8") as f:
        f.write(f"const skafferiData = {json.dumps(data, ensure_ascii=False, indent=2)};\n")

def visa_skafferi():
    data = ladda_data()
    print("\n--- DITT SKAFFERI ---")
    for i, vara in enumerate(data):
        namn = vara.get('namn')
        dagar = vara.get('dagar_kvar')
        antal = vara.get('antal', 1)
        tot = vara.get('total_dagar', dagar)
        print(f"{i+1}. {namn} - Antal: {antal} st | Dagar kvar: {dagar} (Totalt: {tot} dagar)")
    print("-" * 35)

def lagg_till_eller_andra():
    data = ladda_data()
    namn = input("Ange namn på varan (t.ex. Mjölk): ").strip()
    if not namn: return
    
    try:
        dagar_enkel = int(input("Hur många dagar räcker EN förpackning? (t.ex. 4): "))
        antal = int(input("Hur många förpackningar köper du hem? (t.ex. 3): "))
    except ValueError:
        print("Felaktig inmatning.")
        return
    
    total_dagar = dagar_enkel * antal
    
    finns = False
    for vara in data:
        if vara.get('namn', '').lower() == namn.lower():
            vara['dagar_per_forpackning'] = dagar_enkel
            vara['antal'] = antal
            vara['total_dagar'] = total_dagar
            vara['dagar_kvar'] = total_dagar
            finns = True
            print(f"✅ Uppdaterade '{namn}': {antal} st á {dagar_enkel} dagar = {total_dagar} dagar!")
            break
            
    if not finns:
        data.append({
            "namn": namn,
            "dagar_per_forpackning": dagar_enkel,
            "antal": antal,
            "dagar_kvar": total_dagar,
            "total_dagar": total_dagar
        })
        print(f"✅ Lade till '{namn}': {antal} st á {dagar_enkel} dagar = {total_dagar} dagar!")
        
    spara_data(data)

def fornya_vara():
    data = ladda_data()
    if not data: return
    visa_skafferi()
    try:
        val = int(input("Ange nummer på varan du köpt hem igen: ")) - 1
        if 0 <= val < len(data):
            vara = data[val]
            nytt_antal = input(f"Antal förpackningar senast var {vara.get('antal', 1)} st. Skriv nytt antal eller tryck Enter för att behålla: ").strip()
            if nytt_antal.isdigit():
                vara['antal'] = int(nytt_antal)
            
            d_per_f = vara.get('dagar_per_forpackning', 4)
            ant = vara.get('antal', 1)
            tot = d_per_f * ant
            vara['total_dagar'] = tot
            vara['dagar_kvar'] = tot
            
            spara_data(data)
            print(f"🔄 Återställde '{vara.get('namn')}' med {ant} st. Räcker nu i {tot} dagar!")
    except ValueError:
        print("Felaktig inmatning.")

def ta_bort_vara():
    data = ladda_data()
    if not data: return
    visa_skafferi()
    try:
        val = int(input("Ange nummer på varan du vill radera: ")) - 1
        if 0 <= val < len(data):
            borttagen = data.pop(val)
            spara_data(data)
            print(f"🗑️ Tog bort: {borttagen.get('namn')}")
    except ValueError:
        print("Ogiltigt nummer.")

def huvudmeny():
    while True:
        print("\n=== SKAFFERI-ADMINISTRATÖREN ===")
        print("1. Visa skafferi")
        print("2. Lägg till / Uppdatera vara")
        print("3. Köpt hem igen (Återställ dagar)")
        print("4. Ta bort vara")
        print("5. Avsluta")
        val = input("Välj (1-5): ").strip()
        
        if val == "1": visa_skafferi()
        elif val == "2": lagg_till_eller_andra()
        elif val == "3": fornya_vara()
        elif val == "4": ta_bort_vara()
        elif val == "5": break

if __name__ == "__main__":
    huvudmeny()