import csv
import os
from bs4 import BeautifulSoup


def crawlerXML(file_path):
    with open(file_path, mode='r', encoding='utf-8') as file:
        content = file.read()
        file.close()
    doc = BeautifulSoup(content, "xml")
    return doc


verpflegung = dict()

def fill_dict(kaufbeuren=True):
    if kaufbeuren:
        filename = r"C:\Users\Nina\FAUbox\IdeaProjects\patientenbriefe\tables\Kaufbeuren-bearbeitet - Kaufbeuren_bearb.csv"
    else:
        filename = r"C:\Users\Nina\FAUbox\IdeaProjects\patientenbriefe\tables\copadocs_patienten_westfalen - Tabelle1.csv"

    with open(filename, 'r', encoding='utf-8') as csvfile:
            datareader = csv.reader(csvfile)
            first = True
            if not kaufbeuren:
                counter = 0
            for row in datareader:
                if kaufbeuren and first:
                    first = False
                    continue
                elif not kaufbeuren and counter < 6:
                    counter += 1
                    continue
                else:
                    if kaufbeuren:
                        verpflegungsklasse = row[28]
                        verpflegungsklasse = "k.A" if verpflegungsklasse == "" else verpflegungsklasse
                        aktennummer = "kfb" + row[0] #.split(' ')[0]
                        aktennummer = aktennummer.replace(' ', '')
                        verpflegung[aktennummer] = verpflegungsklasse
                    else:
                        kuerzel = row[0][:3].lower()
                        kuerzel = kuerzel.replace('ü', 'u')
                        #kuerzel.replace('ä', 'a')
                        kuerzel = "mrs" if kuerzel == "mar" else kuerzel
                        aktennummer = kuerzel + row[1]
                        verpflegungsklasse = row[25]
                        aktennummer = aktennummer.replace(' ', '')
                        verpflegung[aktennummer] = verpflegungsklasse

fill_dict(kaufbeuren=True)
fill_dict(kaufbeuren=False)

rootdir = r"C:\Users\Nina\Documents\GitHub\copadocs\data"
#cwd = os.getcwd()
#rootdir = os.path.join(cwd, "teis")
# check directory names in corpus
for file in os.listdir(rootdir):
    d = os.path.join(rootdir, file)
    if os.path.isdir(d):
        written = False
        for subfile in os.listdir(d):
            kuerzel = subfile[:3]
            xmlfile = os.path.join(d, subfile)
            if not os.path.isdir(xmlfile):
                if subfile[-3:] != "xml":
                    continue
                print(xmlfile)
                soup = crawlerXML(xmlfile)
                aktennummer = kuerzel + soup.find("idno").text
                aktennummer = aktennummer.replace(' ', '')
                klasse = verpflegung[aktennummer]
                state = soup.particDesc.state
                for p in state.find_all("p"):
                    if p.text.startswith("Verpflegungsklasse"):
                        p.decompose()
                verpflegungs_tag = soup.new_tag("p")
                verpflegungs_tag.insert(0, "Verpflegungsklasse: " + klasse)

                state.insert(6, verpflegungs_tag)

                text = str(soup)

                with open(xmlfile, mode='w', encoding='utf-8') as file:
                    # file.write(str(doc.prettify(formatter="none")))
                    file.write(text)
                    file.close()