#! /usr/bin/ruby

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

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

class Satz
#  attr_accessor :satz
#  hier unnoetig

  def initialize
    @satz = "Dieser Satz ist neu!"
  end
  
  def einlesen
    puts "Bitte Satz eingeben:"
    @satz = gets.chomp
    puts @satz
  end
  
  def ausgeben
    puts @satz
  end
  
  def verschluesseln(codewort)
    buchstabe = ""
    asciizahl = 0
    stelle = 0
    versatz = codewort.ord - 48
    verschluesselter_satz = ""
    
    while stelle < @satz.length
      buchstabe = @satz[stelle]
      asciizahl = buchstabe.ord
      asciizahl += versatz
      buchstabe = asciizahl.chr
      verschluesselter_satz += buchstabe
      stelle += 1
    end
    
    @satz = verschluesselter_satz
  end
  
  def entschluesseln(codewort)
    buchstabe = ""
    asciizahl = 0
    stelle = 0
    versatz = codewort.ord - 48
    entschluesselter_satz = ""
    
    while stelle < @satz.length
      buchstabe = @satz[stelle]
      asciizahl = buchstabe.ord
      asciizahl -= versatz
      buchstabe = asciizahl.chr
      entschluesselter_satz += buchstabe
      stelle += 1
    end
    
    @satz = entschluesselter_satz
  end
  
  def senden(dateiname)
    datei = File.new(dateiname, "w")
    datei.write(@satz)
    datei.close
  end
  
  def holen(dateiname)
    if File.exist?(dateiname) == false
      @satz = ""
    else
      datei = File.open(dateiname, "r")
      @satz = datei.read
      datei.close
    end
  end
end

# BEGINN des Programms

satz = Satz.new
codewort = ""
teilnehmer = ""
absender = ""
empfaenger = ""
wahl = ""

puts "Bitte gib Deinen Namen an:"
teilnehmer = gets.chomp

while wahl != "Q"
  puts ""
  puts "=============================================================="
  puts "E: Einlesen         **        A: Ausgeben"
  puts "S: Senden           **        H: Holen"
  puts "V: Verschlüsseln    **        D: Entschlüsseln"
  puts "Z: Zeigen alle SMS  **        C: Codewort eingeben"
  puts "Q: QUIT"
  puts ""
  puts "Bitte wählen:"
  wahl = gets.chomp.upcase
  puts ""
  puts "--------------------------------------------------------------"
  
  if wahl == "Z"
    system("./verzeichnis.sh")
  end
  
  if wahl == "C"
    puts "Bitte Codewort eingeben:"
    codewort = gets.chomp[0]
  end
  
  if wahl == "E"
    satz.einlesen
  end
  
  if wahl == "A"
    satz.ausgeben
  end
  
  if wahl == "S"
    puts "Empfänger:"
    empfaenger = gets.chomp
    satz.senden("#{empfaenger}_#{teilnehmer}.sms")
    puts "Die SMS wurde versandt."
  end
  
  if wahl == "H"
    puts "Absender:"
    absender = gets.chomp
    satz.holen("#{teilnehmer}_#{absender}.sms")
    puts "Folgende SMS wurde erhalten:"
    satz.ausgeben
  end
  
  if wahl == "V"
    puts "Verschlüsselt:"
    satz.verschluesseln(codewort)
    satz.ausgeben
  end
  
  if wahl == "D"
    puts "Entschlüsselt:"
    satz.entschluesseln(codewort)
    satz.ausgeben
  end
end

# ENDE des Programms
