import json
import logging
from pathlib import Path

from suds.client import Client

logger = logging.getLogger("nasa")


def submit_data(config: dict[str, str], payload):
    client = Client(
        url=config["service_url"],
        username=config["credentials"]["username"],
        password=config["credentials"]["password"],
    )

    try:
        return client.service.MeldeAfterSalesDaten(payload)
    except Exception as e:
        logger.error(e)
    return -1


def print_result(period: str, result: str, len_pos: int):
    print("Periode: " + period)
    if len_pos == result:
        print(f"Erfolgreich {result} Datensätze übertragen")
        logger.info(f"Erfolgreich {result} Datensätze übertragen")
        return

    print("Übertragung der Datensätze Fehlgeschlagen.")
    if result == -1:
        print("Fehler! Es waren keine Datensätze vorhanden.")
    else:
        print(f"{len_pos - result} von {len_pos} Datensätzen nicht verarbeitet!")
        logger.error(f"{len_pos - result} von {len_pos} Datensätzen nicht verarbeitet!")


def submit_changes(config):
    for file in Path(config["export_dir"]).glob("NASA_*.json"):
        print("  " + file.name)
        payload = json.load(file.open("r"))
        period = payload["Jahr"] + payload["Monat"]
        logger.info("Periode: " + period)
        len_pos = len(payload["AfterSalesPositionen"])
        result = submit_data(config, payload)
        print_result(period, result, len_pos)
