import glob, os
import csv
import json
from collections import defaultdict
os.chdir("C:\\Users\\milli\\Documents\\Datenbereinigung")

straftat_zuordnung = {
    "------": "Straftaten insgesamt",
    "000000": "Diebstahl insgesamt",
    "000100": "Diebstahl von Kraftwagen insgesamt",
    "000300": "Diebstahl von Fahrrädern insgesamt",
    "026000": "Ladendiebstahl insgesamt",
    "050000": "Diebstahl an/aus Kraftfahgrzeugen insgesamt",
    "090000": "Taschendiebstahl insgesamt",
    "210000": "Raub, räuberische Erpressung, räuberischer Angriff auf Kraftfahrer",
    "217000": "Sonstige Raubüberfälle auf Straßen, Wegen oder Plätzen",
    "220000": "Körperverletzung insgesamt",
    "222000": "Gefährlich und schwere Körperverletzung",
    "674000": "Sachbeschädigung",
    "725000": "Straftaten gegen das Aufenthaltsgesetz, das Asylgesetz, das Freizügigkeitsgesetz/EU",
    "730000": "Rauschgiftdelikte",
    "731000": "Allgemeine Verstöße gem. § 29 BtMG -Konsumentendelikte-",
    "732000": "Illegaler Handel mit/Schmuggel von Rauschgiften gem. § 29 BtMG",
    "888000": "Wohnungseinbruchsdiebstahl gem. § 255 Abs. 1 Nr. 3 StGB",
    "892000": "Gewaltkriminalität",
    "999999": "Straftaten insgesamt nur Bezirke"
}

def cleanup_text(text):
    result = text.replace('.', '')
    result = result.replace(' ', '')
    result = result.replace('-', '')
    return result

def cleanup_int(text):
    result = cleanup_text(text)
    if result == "":
        result = "0"
    return int(result)

def cleanup_float(text):
    result = cleanup_text(text)
    result = result.replace('%', '')
    result = result.replace(',', '.')
    if result == "":
        result = "0.0"
    return float(result)


complete_data = defaultdict(lambda: defaultdict(lambda: defaultdict(dict)))
for file in glob.glob("*.csv"):
    with open(file, encoding='utf-8') as csvfile:
        csvreader = csv.reader(csvfile, delimiter=';')
        next(csvreader, None)
        delikt_code = file.rpartition('.')[0]
        print(file)
        for row in csvreader:
            complete_data[row[0]][row[1]][straftat_zuordnung[delikt_code]]["2023"] = {
                "Erfasste Fälle": cleanup_int(row[2]),
                "Aufgeklärte Fälle": cleanup_int(row[3]),
                "Aufklärung relativ": cleanup_float(row[4]),
            }
            complete_data[row[0]][row[1]][straftat_zuordnung[delikt_code]]["2024"] = {
                "Erfasste Fälle": cleanup_int(row[5]),
                "Aufgeklärte Fälle": cleanup_int(row[6]),
                "Aufklärung relativ": cleanup_float(row[7]),
            }

with open('data.json', 'w',  encoding="utf-8") as fp:
    json.dump(complete_data, fp, ensure_ascii=False, indent=4)
#print(complete_data)            
