#! /usr/bin/python3

# PROGRAM SMS1
# Version fuer das faible-Projekt
# Version: 20.5.2024
# Autor: Arno Pasternak
# Das Programm unterliegt der GPL, Version 3

# ==========================================


import os

class SatzKlasse:
    def __init__(self):
        self.satz = "Dies ist ein neuer Satz"

    def einlesen(self):
        print("Bitte Satz eingeben:   ")
        self.satz = input().strip()
        print(self.satz)

    def ausgeben(self):
        print(self.satz)

    def verschluesseln(self, codewort):
        buchstabe = ""
        asciizahl = 0
        stelle = 0
        versatz = int(codewort)
        verschluesselter_satz = ""
        while stelle < len(self.satz):
            buchstabe = self.satz[stelle]
            asciizahl = ord(buchstabe)
            asciizahl += versatz
            buchstabe = chr(asciizahl)
            verschluesselter_satz += buchstabe
            stelle += 1
        self.satz = verschluesselter_satz

    def entschluesseln(self, codewort):
        buchstabe = ""
        asciizahl = 0
        stelle = 0
        versatz = int(codewort)
        entschluesselter_satz = ""
        while stelle < len(self.satz):
            buchstabe = self.satz[stelle]
            asciizahl = ord(buchstabe)
            asciizahl -= versatz
            buchstabe = chr(asciizahl)
            entschluesselter_satz += buchstabe
            stelle += 1
        self.satz = entschluesselter_satz

    def senden(self, dateiname):
        datei = open(dateiname, "w")
        datei.write(self.satz)
        datei.close()

    def holen(self, dateiname):
        if not os.path.exists(dateiname):
            self.satz = "SMS nicht vorhanden"
        else:
            datei = open(dateiname)
            self.satz = datei.readline()
            datei.close()

# Ende Satzklasse
# =========================================================

# BEGINN des Programms

print("")
print("==============================================================")
print("         SMS Programm mit Caesar-Verschluesselung")
print("==============================================================")
print("==============================================================")
print("")
print("")

sms = None
codewort = None
teilnehmer = None
absender = None
empfaenger = None
wahl = None

codewort = chr(0)
print("")
teilnehmer = input("Bitte gib Deinen Namen an:   ")
sms = SatzKlasse()

wahl = ""
while wahl != "Q":
    print("")
    print("==============================================================")
    print("E: Einlesen         **        A: Ausgeben")
    print("S: Senden           **        H: Holen")
    print("V: Verschluesseln   **        D: Entschluesseln")
    print("Z: Zeigen alle SMS  **        C: Codewort eingeben")
    print("Q: QUIT")
    print("")
    wahl = input("Bitte waehlen:   ")
    wahl = wahl.upper()
    print("")
    print("--------------------------------------------------------------")
    if wahl == 'Z':
        import subprocess
        subprocess.call(["./verzeichnis.sh"])
    if wahl == 'C':
        codewort = input("Bitte Codewort (Ziffer) eingeben:   ")
        codewort = codewort[0]
    if wahl == 'E':
        sms.einlesen()
    if wahl == 'A':
        sms.ausgeben()
    if wahl == 'S':
        empfaenger = input("Bitte Empfaenger eingeben:   ")
#        sms.senden("{empfaenger}_{teilnehmer}.sms")
        sms.senden(empfaenger+"_"+teilnehmer+".sms")
        print("Die SMS wurde versandt.")

    if wahl == 'H':
        print("Bitte Absender eingeben:   ")
        absender = input().strip()
        sms.holen(teilnehmer+"_"+absender+".sms")
        print("Folgende SMS wurde erhalten:")
        sms.ausgeben()


    if wahl == 'V':
        sms.verschluesseln(codewort)
        print("Verschluesselt:   ")
        sms.ausgeben()

    if wahl == 'D':
        sms.entschluesseln(codewort)
        print("Entschluesselt:   ")
        sms.ausgeben()

# ENDE des Programmes
