#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# coding: utf8
from ffxiv_aku import *
import copy


bnpcname = loadDataTheQuickestWay("bnpcname_all.json", translate=True)
minion = loadDataTheQuickestWay("companion_all.json", translate=True)


def fix_logdata():
    logdata = get_any_Logdata()
    liste = [x for x in logdata]
    cfc = loadDataTheQuickestWay("contentfindercondition_all.json", translate=True)
    ttype = loadDataTheQuickestWay("territorytype_all.json", translate=True)
    placename = loadDataTheQuickestWay("placename_all.json", translate=True)
    new_logdata = {}
    for cat in [cfc, placename, ttype]:
        zwite_liste = [x for x in logdata]
        for x in zwite_liste:
            for key, value in cat.items():
                if x.lower() == value['Name_de'].lower():
                    new_logdata[value['Name_de']] = logdata[x]
                    if new_logdata[value['Name_de']].get("music", None):
                        new_logdata[value['Name_de']]['music'] = sorted(new_logdata[value['Name_de']]['music'])
                    liste.remove(x)
                    del logdata[x]
                    print(value['Name_de'])
                    break
    # add old content or special allowed content
    for x in [    "Das Ende der Morgenröte",    "Es reimt sich auf Gebell",    "Klassen",    "The Feast (Kristallturm-Arena: Team-Schaukampf)",    "[OLD] Brüllvolx' Langrast",    "[OLD] Castrum Meridianum - Außenbereich",    "[OLD] Castrum Meridianum - Praetorium",    "[OLD] Haukke-Herrenhaus",    "[OLD] Kupferglocken-Mine",    "[OLD] Sastasha",    "[OLD] Steinerne Wacht",    "[OLD] Tausend Löcher von Toto-Rak",    "[OLD] Totenacker Tam-Tara",    "_Unknown"]:
        new_logdata[x] = logdata[x]
        if new_logdata[x].get("music", None):
            new_logdata[x]['music'] = sorted(new_logdata[x]['music'])
        liste.remove(x)
        del logdata[x]
        print(x)
    print_pretty_json(liste)
    return logdata, new_logdata


def remove_player_from_content(logdata, new_logdata):

    for content_name, content_value in logdata.items():
    #if True:
    #    content_name = "Obere Decks"
    #    content_value = logdata[content_name]
        for enemy_name, enemy_data in content_value.items():
            if enemy_name in ["combatants", "contentzoneid", "music", "zone", "fates"]:
                continue
            if enemy_name == "":
                continue
            _id = enemy_data.get('id', None)
            _id = _id if type(_id) == list else [_id]
            new_logdata = remove_bnpc_from_new_logfile(new_logdata, _id, enemy_data, content_name, enemy_name)
            new_logdata = remove_minion_from_new_logfile(new_logdata, _id, enemy_data, content_name, enemy_name)
    return new_logdata
    #writeJsonFile("new_logdata_de.json", new_logdata)


def remove_bnpc_from_new_logfile(new_logdata, _id, enemy_data, content_name, enemy_name):
    global bnpcname
    found = False
    if "an deiner seite" in enemy_name.lower():
        del new_logdata[content_name][enemy_name]
        print_color_red(f"Deleted [{enemy_name}] was removed in [{content_name}]")
    if not found:
        for _, bnpc in bnpcname.items():
            for x in _id:
                if bnpcname.get(x, None):
                    found = True
                    break
    if not found and enemy_data.get('id', None):
        if not enemy_name == "" and not content_name == "":
            if len(enemy_name.split(" ")) == 2:
                del new_logdata[content_name][enemy_name]
                print_color_red(f"Deleted [{enemy_name}] was removed in [{content_name}]")
            else:
                print_color_green(f"User [{enemy_name}] is not a player")
    return new_logdata


def remove_minion_from_new_logfile(new_logdata, _id, enemy_data, content_name, enemy_name):
    global minion
    found = False
    if content_name == "Glücksaltäre von Uznair" and enemy_name == "Goldbartel":
        return new_logdata
    for _, bnpc in minion.items():
        if bnpc["Singular_de"].lower() == enemy_name.lower() or bnpc["Singular_de"].replace("[a]", "e").lower() == enemy_name.lower() or bnpc["Singular_de"].replace("[a]", "er").lower() == enemy_name.lower() or bnpc["Singular_de"].replace("[a]", "es").lower() == enemy_name.lower() or bnpc["Singular_de"].replace("[a]", "en").lower() == enemy_name.lower():
            found = True
            break
    if found and not enemy_data.get('id', None):
        del new_logdata[content_name][enemy_name]
        print_color_blue(f"[{enemy_name}] was found in [{content_name}]")
    return new_logdata


if __name__ == "__main__":
    #logdata, new_logdata = fix_logdata()

    logdata = get_any_Logdata()
    new_logdata = get_any_Logdata()
    new_logdata = remove_player_from_content(logdata, new_logdata )

    writeJsonFile("new_logdata_de.json", new_logdata)
