import os, re
from datetime import datetime

import header


def erstelleGeburtstagsBogen(kursid, klassekurs_name, dateien, path, namen, gebdaten, config, inputs, kurs_inputs):

    table = ''

    # Sortierung nach Geburtsmonat für Geburtstagsliste
    gebmonat = []
    for geb in gebdaten:
        parts = re.split("\\.", geb)
        day = parts[0]
        if (len(day)==1):
            day = '0'+day
        month = parts[1]
        if (len(month)==1):
            month = '0'+month
        year = parts[2]
        gebmonat.append(month+'-'+day+'-'+year)
    gebmonat, namen = (list(t) for t in zip(*sorted(zip(gebmonat, namen))))

    allg = inputs["Allgemein"]
    schuljahr = allg["schuljahr"]
    zschuljahr = int(schuljahr)
    halbjahr = allg["halbjahr"]

    try:
        namen_kurzlang = config["Namen"]["form"]
    except KeyError:
        print('Der Schlüssel Namen oder "form" existiert nicht in der Device-Datei!')
        exit(0)    

    if (namen_kurzlang=="lang"):
        beschriftung_name = "Name, Vorname"
    else:
        beschriftung_name = "Vorname Nachname"

    table += '<a name="'+klassekurs_name+'Birthday"></a>'

    table += header.erstelleKursnavigation(kursid, 'Geburtstagsliste', 'gebtag', klassekurs_name, gebdaten, dateien, path, config, inputs, kurs_inputs)

    table += '<table class="birthday" repeat="1">'

    table += '<tr class="header">'
    table += '<th class="nr">Nr</th>'
    table += '<th class="name">'+beschriftung_name+'</th>'
    table += '<th class="geb">Geburtstag</th>'
    table += '<th class="age">Alter</th>'
    table += '<th class="home"></th>'
    table += '</tr>'

    count = 0

    # Geburtstagsliste im 1. Hj. ab August, 2. Hj. ab Februar
    startmonat = 8
    if (halbjahr == '2'):
        startmonat = 2

    startpoint = -1
    for count in range(len(namen)):
        datum = gebmonat[count]
        parts = re.split("-", datum)
        month = parts[0]
        zmonth = int(month)
        if (zmonth>=startmonat):
            startpoint = count
            break

    newcount = 0

    for count in range(startpoint, len(namen)):

        name = namen[count]
        datum = gebmonat[count]

        parts = re.split("-", datum)
        month = parts[0]
        zmonth = int(month)
        day = parts[1]

        year = parts[2]
        zyear = int(year)

        if (halbjahr=='1'):
            if (zmonth>=8 and zmonth<=12):
                current_year = zschuljahr
            else:
                current_year = zschuljahr+1
        else:
            current_year = zschuljahr+1

        newcount = newcount + 1

        table += '<tr>'

        table += '<td class="nr">'+str(newcount)+'</td>'
        table += '<td class="name">'+name+'</td>'
        
        age = current_year - zyear
        hurray = ''
        if (age==18):
            hurray = ' eightteen'

        table += '<td class="geb">'+day+'.'+month+'.'+year+'</td>'
        table += '<td class="age'+hurray+'">'+str(age)+'</td>'

        table += '<td class="home">&nbsp;</td>'

        table += '</tr>'

    for count in range(0, startpoint):

        name = namen[count]

        datum = gebmonat[count]
        parts = re.split("-", datum)
        month = parts[0]
        zmonth = int(month)
        day = parts[1]

        year = parts[2]
        zyear = int(year)

        if (halbjahr=='1'):
            current_year = zschuljahr+1
        else:
            current_year = zschuljahr+2

        newcount = newcount + 1

        table += '<tr>'

        table += '<td class="nr">'+str(newcount)+'</td>'
        table += '<td class="name">'+name+'</td>'
        
        age = current_year - zyear
        hurray = ''
        if (age==18):
            hurray = ' eightteen'

        table += '<td class="geb">'+day+'.'+month+'.'+year+'</td>'
        table += '<td class="age'+hurray+'">'+str(age)+'</td>'

        table += '<td class="home">&nbsp;</td>'

        table += '</tr>'

    table += '</table>'

    table += '<pdf:nextpage />'

    return table
