#!/usr/bin/perl

use DBI;

$mailprog = '/usr/sbin/sendmail';
$absender = 'prorataweb@prorata.de';
$subject = 'Ihre Zugangsdaten';

my $DB_DSN      = "DBI:mysql:prorata2:sql";
my $DB_USER     = "prorata";
my $DB_PASSWD   = "altoids7";

my $dbh = DBI->connect($DB_DSN, $DB_USER, 
   $DB_PASSWD) or err::error_seite{"Cannot connect to DB"};
my $FROM="";
my $TO="";
my $date = getdate();

open(LOG,">>/var/qmail/alias/abmeldungen.log") or exit 99;

print LOG "$date:\n"."Löschvorgang eingeleitet.........\n";

while ($line= <STDIN>){if (($FROM)=$line=~/^[F,f]rom:.*[<, ](\S+@\S+\.\w{2,3})[>,\s]/) {$TO=$FROM;}}

if ($TO eq ""){print LOG "From-line not found\n"; $dbh->disconnect; close LOG; print "Error with From-line"; exit 99;}

($vname, $nname, $PIN,$PASS)=$dbh->selectrow_array("select vname, nname, pin, pass from benutzer where email LIKE '$TO'");


#Löschvorgang mißlungen, da email-Adresse nicht in DB
if (($PIN eq "") || ($PASS eq "")) {print LOG "$TO was not in Database\n"."Löschvorgang mißlungen........\n"."Errormail versendet\n".
	"-------------------------------------------------------------------\n"; errormail();}

#Löschvorgang eingeleitet:
print LOG  "Benutzer PIN=$PIN, $vname $nname, $TO - meldet sich ab; \n";

#Tabelle kasse - Konto kontrollieren:
#
	my $sth = $dbh->prepare("select sum(betrag) from kasse where pin=$PIN");
	$sth->execute();
	$betrag = ($sth->fetchrow())/100;
	$sth->finish();
  

    $dbh->do("delete from kasse where pin=$PIN");
print LOG  "Kontostand: $betrag EURO\n Konto wurde gelöscht\n";

#Tabelle umfidpin - alles für diesen Benutzer löschen: 
   $dbh->do("delete from umfidpin where pin=$PIN");
print LOG  "Tabelle 'umfidpin' - alle DS für $PIN gelöscht\n";

#Tabelle kriterien - alles für diesen Benutzer löschen: 
    $dbh->do("delete from kriterien where pin=$PIN");
print LOG  "Tabelle 'kriterien' - alle DS für $PIN gelöscht\n";

#Tabelle benutzer - Benutzer-Daten löschen:
     $dbh->do("delete from benutzer where pin=$PIN");
print LOG  "Tabelle 'benutzer' - Benutzer:$vname $nname, $TO, $PIN,$PAS wurde gelöscht\n";

print LOG "Löschvorgang abgeschlossen......\n".
	"-------------------------------------------------------------------\n";

$dbh->disconnect;
bestaetigungsmail();

close LOG;
exit 0;

sub bestaetigungsmail {
    # Open The Mail Program
    open(MAIL,"|$mailprog -t");
    #open(MAIL,">>tehest");
    my $date = getdate();

    print MAIL "To: $TO\n";
    print MAIL "From: $absender\n";

    # Print Message Subject
    print MAIL "Subject: PRORATA.WEB - Abmeldebestätigung \n\n";
    print MAIL "Hallo $vname $nname \n\n";
    print MAIL "hiermit wird die Löschung Ihres Accounts bei PRORATA.WEB bestätigt.\n\n";
    print MAIL "Mit freundlichem Gruß\n\nPRORATA.WEB - TEAM!\n";
    print MAIL "-------------------------------------------------------\n\n".
               "Automatisch erstellt am ".$date."\n";
    close (MAIL);

print "Bestätigung geschickt";
$dbh->disconnect;
exit;
}

####################################################################
####         Versendet error-Mail
####         Argumente  :
####         Returnwert : -
####################################################################

sub errormail {
    # Open The Mail Program
    open(MAIL,"|$mailprog -t");
    #open(MAIL,">>tehest");
    
    my $date = getdate();

    print MAIL "To: $ENV{SENDER}\n";
    print MAIL "From: $absender\n";

    # Print Message Subject
    print MAIL "Subject: PRORATA.WEB - Abmelden mißlungen\n\n";
    print MAIL "Hallo,\n\n";
    print MAIL "Ihre Absendeadresse: $TO wurde nicht in unserer Datenbank gefunden.\n\n";
    print MAIL "Benutzen sie bitte die Adresse, die Sie in unsere Datenbank eingetragen haben !!\n\n";
    print MAIL "Mit freundlichem Gruß\n\nIhr PRORATA.WEB - TEAM!\n\n";
    print MAIL "-------------------------------------------------------\n\n".
               "Automatisch erstellt am ".$date."\n";
    close (MAIL);

print "Errormail geschickt";
$dbh->disconnect;
exit;
}

####################################################################
####         Gibt die locale Zeit aus
####         Argumente  :
####         Returnwert : -
####################################################################

sub getdate {

    @days   = ('Sonntag','Montag','Dienstag','Mittwoch',
               'Donnerstag','Freitag','Samstag');
    @months = ('Januar','Februar','März','April','Mai','Juni','Juli',
                 'August','September','Oktober','November','Dezember');

    ($sec,$min,$hour,$mday,$mon,$year,$wday) = (localtime(time))[0,1,2,3,4,5,6];
    $time = sprintf("%02d:%02d:%02d",$hour,$min,$sec);
    $year += 1900;

    $date = "$days[$wday], $months[$mon] $mday, $year um $time";
        return $date;
}


