#!/usr/bin/python3

import sys
from mitglied import Mitglied

"""
Testaufruf:
./ausweis.py Michael Wagner "25.5.1965" MitgliederausweisSVBaLVorlage_leer.pdf ./
"""

def erzeuge_ausweis(mitglied: Mitglied, ausgabetext, hintergrund_pdf, ausgabe_pfad):
    from PyPDF2 import PdfFileWriter, PdfFileReader
    from datetime import date
    import io
    from reportlab.pdfgen import canvas
    from reportlab.lib.pagesizes import letter
    
    packet = io.BytesIO()
    can = canvas.Canvas(packet, pagesize=letter)
    
    # Adressfeld
    can.setFont("Helvetica", 12)
    can.drawString(70, 640, mitglied.anrede)
    can.drawString(70, 625, mitglied.vorname+" "+mitglied.nachname)
    can.drawString(70, 610, mitglied.strasse)
    can.drawString(70, 590, mitglied.plz+" "+mitglied.ort)

    # Datum
    can.setFont("Helvetica", 9)
    can.drawString(350, 520, "München, "+date.today().strftime('%d.%m.%Y'))
    
    # Anschreiben
    can.drawString(70, 500, "Sehr geehrte/r "+mitglied.anrede+" "+mitglied.nachname+",")
    text = can.beginText(70, 480)
    text.textLines(ausgabetext)
    can.drawText(text)
    
    
    can.line(20, 180, 560, 180)
    
    # Ausweis
    can.setFont("Helvetica", 12)
    can.drawString(460, 100, mitglied.mitgliedsnr)
    can.drawString(330, 80, mitglied.vorname+" "+mitglied.nachname)
    can.setFont("Helvetica", 9)
    can.drawString(400, 56, mitglied.geburtsdatum)
    can.drawString(400, 42, mitglied.eintrittsdatum)
    can.drawString(400, 20, mitglied.ver_grund)
    
    
    can.save()
    
    #move to the beginning of the StringIO buffer
    packet.seek(0)
    
    # create a new PDF with Reportlab
    new_pdf = PdfFileReader(packet)
    # read your existing PDF
    existing_pdf = PdfFileReader(open(hintergrund_pdf, "rb"))
    output = PdfFileWriter()
    # add the "watermark" (which is the new pdf) on the existing page
    page = existing_pdf.pages[0]
    page.mergePage(new_pdf.pages[0])
    output.addPage(page)
    # finally, write "output" to a real file
    output_stream = open(ausgabe_pfad, "wb")
    output.write(output_stream)
    output_stream.close()

if __name__ == "__main__":
    if len(sys.argv) == 6:
        nachname = sys.argv[1]
        vorname = sys.argv[2]
        geburtsdatum = sys.argv[3]
        infile = sys.argv[4]
        outpath = sys.argv[5]
    else:
        print ("Nachname: ")
        nachname = input()
        print ("Vorname:")
        vorname = input()
        print ("Geburtsdatum:")
        geburtsdatum = input()
        print ("Input-Datei: ")
        infile = input()
        print ("Ausgabepfad:")
        outpath = input()
        
    mitglied = Mitglied(nachname, vorname, geburtsdatum)
    erzeuge_ausweis(mitglied,infile, outpath)
    
