#!/usr/bin/perl -w
#
#

use DBI;
use CGI;
use err;

open (FILE, "<panel2.conf") or die "AAAAr";
while ($line = <FILE>) {
  ($key,$val) = ($line =~/^(\S*)\s*=\s*(\S*)/);
   if ($key ne "") { $conf{$key}=$val }
}
close FILE;

# Define the variables.

my $query= new CGI;

my $button = $query->param('but');
my %val = $query->Vars;
my %mon = ("Januar","01","Februar","02","März","03","April","04","Mai","05","Juni","06","Juli","07",
			"August","08","September","09","Oktober","10","November","11","Dezember","12");
my %landkz = ("Deutschland","D","Österreich","A","Schweiz","CH");

my $zurucktext="<i>\n<li>Klicken sie auf <b> ZURÜCK </b> um das Anmeldeformular zu vervollständigen oder zu korrigieren</i><br><br>\n<hr size=1 width=75%><p>\n";
my $ende='    Ende    ';
my $endebut = $query->startform . $query->submit("but",$ende) . $query->endform;

my $DB_DSN      = "DBI:$conf{database}:$conf{dataname}:$conf{datahost}";
my $DB_USER     = "$conf{datauser}";
my $DB_PASSWD   = "$conf{datapass}";

my $dbh = DBI->connect($DB_DSN, $DB_USER, 
   $DB_PASSWD) or {err::error_seite("Cannot connect to DB")};


#-----------------------------------------------------------------------------------------------
#Angabe beenden

if ($button eq $ende){ print $query->redirect("/index.htm")}

#--------------------------------------------------------------------------------------------------
#Anfangswerte für Integer-Felder auf Null setzen 

$val{pers3}+=0;
$val{pers12}+=0;
$val{pers54}+=0;
$val{pers55}+=0;
$val{pers22}+=0;
$val{plz}+=0;
$pin=0;
$gdat="1.1.1800";

#--------------------------------------------------------------------------------------------------
#Daten Löschen
$sql="delete from benutzer where pin=$val{pin}";

if ($val{but} eq "Eintrag Löschen"){
   $dbh->do($sql) or {err::error_seite("Es ist ein Fehler aufgetreten, oder Ihre Eingaben sind schon gelöscht worden!",$endebut)};
	err::error_seite("Ihre Eingaben wurden aus der Datenbank entfernt",$endebut);
}

#-----------------------------------------------------------------------------------------------
#Leere  Pflichtfelder?

if ($val{vname} eq "" ||
	$val{nname} eq "" ||
	$val{strasse} eq "" ||
	$val{plz} eq "" ||
	$val{land} eq "" ||
	$val{email} eq "" ||
	$val{tel} eq "" ||
	$val{gdatum} eq "" ||
	$val{gjahr} eq ""
	)

{	$dbh->disconnect();
	err::error_seite("Überprüfen Sie bitte, daß alle mit Sternen markierte Felder ausgefüllt sind!",$zurucktext);
}

#----------------------------------------------------------------------------------------------
#E-Mail Adresse überprüfen

if ($val{email} !~/.+@.+\.([a-z|A-Z]){2,3}$/) #Reguläre Ausdrücke !!!
#testet auf @ mit zeichen davor und dahinter und Punkt zwischen Zeichen hinter @

{	err::error_seite("Überprüfen Sie bitte Ihre E-Mail Adresse",$zurucktext);}

#----------------------------------------------------------------------------------------------
#Postleitzahl überprüfen

if ($val{plz} !~/^\d{4,5}$/) #testet auf 5-stellige Zahl

{	err::error_seite("Überprüfen Sie bitte Ihre Postleitzahl.",$zurucktext);}

#----------------------------------------------------------------------------------------------
# Ort nach PLZ ermitteln
%laender=('1','D','2','CH','3','A');
my $sql = "select ort from plz where plz=$val{plz} and land='$laender{$val{land}}'";

if ($val{stadt} eq "" && $val{plz} ne "") { $val{stadt} = $dbh->selectrow_array($sql) }


#---------------------------------------------------------------------------------------------
# Ort nicht existiert -> PLZ nicht korrekt!

if ($val{stadt} eq "")
	{err::error_seite("Ihr Wohnort konnte nicht automatisch ermittelt werden, überprüfen Sie Ihre Plz oder tragen Sie Ihren Wohnort ein",$zurucktext)}

#----------------------------------------------------------------------------------------------
#Telefonnummerangabe überprüfen

$val{tel}=~s/\D//g;   #Löscht alle nicht digits aus der Telefonnummer
if ($val{tel} !~/0\d{5,}/)   #Tel.Nr muß mit 0 anfangen und mind. 6 zeichen lang sein
	{err::error_seite("Überprüfen Sie bitte, ob Sie Ihre Telefonnummer korrekt mit Vorwahl eingegeben haben.",$zurucktext)}

#------------------------------------------------------------------------------------------------
#Benutzer vorhanden! oder falsche Angaben

$sql = "select * from benutzer where vname='$val{vname}' and nname='$val{nname}' and tel='$val{tel}'";
if (defined($row = $dbh->selectrow_array($sql)))
	{err::error_seite("Falls Ihre Angaben korrekt sind , dann sind Sie bereits als Benutzer registriert.",$zurucktext)}

#--------------------------------------------------------------------------------------------------

#Bankinstitut, BLZ oder Kontonummer sind leer?

if (($val{lohnart} eq "Überweisung") && (($val{bank} eq "") || ($val{blz} eq "") || ($val{kontonr} eq "")))
	{err::error_seite("Sie haben sich für eine Banküberweisung entschieden! Dafür benötigen wir noch die Angabe Ihres Bankinstitutes, Bankleitzahl und Ihre Kontonummer",$zurucktext)}

#--------------------------------------------------------------------------------------------------
#BLZ und Kontonummer bearbeiten und überprüfen ..

if ($val{blz} ne "") {
	
	$val{blz}=~s/\D//g;					#Löscht alle nicht digits aus der BLZ & Kontonnummer
	if ($val{blz} !~/^\d{8,15}$/) #testet auf 8-15 stellige Zahl

	{	err::error_seite("Überprüfen Sie bitte Ihre Bankleitzahl.",$zurucktext);}


	}	
	
if ($val{kontonr} ne "") {

	$val{kontonr}=~s/\D//g;
	
	if ($val{kontonr} !~/^\d{4,15}$/) #testet auf 8-15 stellige Zahl

	{	err::error_seite("Überprüfen Sie bitte Ihre Kontonummer.",$zurucktext);}

}

#--------------------------------------------------------------------------------------------------
#Geburtsdatum in ein Feld schreiben
$val{gdatum}=~s/\D//g;   #Löscht alle nicht digits aus dem Tag
$val{gjahr}=~s/\D//g;   #Löscht alle nicht digits aus dem Jahr


if ((($val{gdatum}+0) > 31) || (($val{gjahr}+0) > 2100)) {
	err::error_seite("Bitte überprüfen Sie Ihr Geburtsdatum",$zurucktext);
}
	
 
if (($val{gdatum} eq "") || ($val{gjahr} eq "") || ($val{gmonat} eq ""))
	{$gdat="1800-01-01";
	 $geb="1800";}


elsif (($val{gdatum} ne "") && ($val{gjahr} ne "") && ($val{gjahr} =~/^\d{2}$/))
	{$gdat="19$val{gjahr}-$mon{$val{gmonat}}-$val{gdatum}";
	 $geb="19$val{gjahr}";}
  

elsif (($val{gdatum} ne "") && ($val{gjahr} ne "") && ($val{gjahr} =~/^\d{4}$/))
	{$gdat="$val{gjahr}-$mon{$val{gmonat}}-$val{gdatum}";
	 $geb="$val{gjahr}";}


#--------------------------------------------------------------------------------------------------
#Jahr der letzten Bestellung
$val{bestjahr}=~s/\D//g;   #Löscht alle nicht digits aus dem Jahr

if (($val{bestjahr} ne "") && ($val{bestjahr} =~/^\d{2}$/))

{	err::error_seite("Jahr der letzten Bestellung muß 4stellig sein.",$zurucktext);}

#Passwort überprüfen

if (($val{pass1} ne $val{pass2}) || ($val{pass1} eq ""))

{	err::error_seite("Die Passwörter stimmen nicht überein oder sind nicht eingegeben worden.",$zurucktext);}

#--------------------------------------------------------------------------------------------------

if ($val{pass1} !~/^\S{5,8}$/) 


{	err::error_seite("Das Passwort darf nicht kürzer als 5 oder länger als 8 Zeichen sein!",$zurucktext);}


#--------------------------------------------------------------------------------------------------
#PIN - Nummer zuweisen

$sql = "select max(pin) from benutzer";
if (($pin=$dbh->selectrow_array($sql)+1) == 1) {$pin="10323"}

#----------------------------------------------------------------------------------------------
#Benutzerdaten in die Datenbank einfügen
#Produktkategorien hinzufügen
@gueter=$query->param('krit');
for ($x=1; $x<51 ;$x++) { @liste[$x]="0"}
while($gut = shift(@gueter)) { @liste[$gut] = "1"}
my $riesenliste= join(",",@liste);

#Versandhäuser
my @vhaeuser=$query->param("vh");
my $aus=""; my $vhs="";
for ($x=0; $x<20 ;$x++) { @listeu[$x]="0";}
while(defined($vhs = shift (@vhaeuser)) ) { @listeu[$vhs] = "1";}
my $riesenliste2= join(",",@listeu);

$val{bestjahr}+=0;
$sql = "insert into benutzer values ($val{anrede},'$val{vname}','$val{nname}','$val{strasse}','$val{stadt}',$val{plz},$val{land},'$val{email}','$val{tel}','$gdat',$val{bildung},$val{famstand},$val{arbeit},$val{pers3},$val{pers12},$val{pers22},$val{pers54},$val{pers55},'$val{pass1}',$pin,'$val{lohnart}','$val{bank}','$val{blz}','$val{kontonr}'$riesenliste,$val{provider},$val{herkunft},$riesenliste2,$val{bestjahr},$geb,NULL,0)";
$dbh->do($sql) or err::error_seite("Insert failed ($sql)",$ende);

#--------------------------------------------------------------------------------------------------
#HTML - Ergebnissdokument generieren

print  $query->header,
   $query->start_html(-title=>'Prorata Anmeldungsergebnis',
		     -text=>'#000000', -bgcolor=>'#CCCCCC', -link=>'#0000FF',
		     -vlink=>'#0000FF', -alink=>'#0000FF', 
		     -background=>'' ),

"<b><font face='$conf{stdfont}' size=5>Vielen Dank für die zugesandte Information!<br>Ihre Eingaben wurden wie folgt abgespeichert : </font><br><br><font size=3>Sobald eine Internet-Befragung vorliegt, werden wir Sie per E-Mail benachrichtigen.<br><br>",
"</b><font face='$conf{stdfont}' size=3 color='#FF8000'><b>Falls Ihre Angaben noch Fehler enthalten, drücken Sie bitte den Button \"Eintrag Löschen\"",
'<br>und dann 2 mal den Button "Zurück" in der Symbolleiste des Browsers, um Ihre Eingaben zu korrigieren</font></b><b><br><br>';

print "<font face='$conf{stdfont}'>";
	  @HF=("","Herr","Frau");
	  print @HF[$val{anrede}];
      @LA=("","Deutschland","&Ouml;sterreich","Schweiz");
	  @PR=("","T-Online","AOL","Arcor","Otello","Freenet","Talknet","1 & 1","Netcologne","OWL-Online","Surf Callino","Viag Interkom","Compuserve","Okaynet","Debitel","Nikoma","UU-Net","Germanynet","Uni-Server","FH-Server","Andere");
print	  "<br>$val{vname}&nbsp;$val{nname}<br>",
      "$val{strasse}<br><br>$val{plz}&nbsp;$val{stadt}<br>",
	  "@LA[$val{land}]<br><hr><br><table border=2>",
	  "<TR><TD>E-Mail :</TD><TD>$val{email}</TD></TR>",	
      "<TR><TD>Provider :</TD><TD>@PR[$val{provider}]</TD></TR>",
	  "<TR><TD>Tel :</TD><TD>$val{tel}</TD></TR></b>";
	  if ($gdat) {
	  	  print"<TR><TD>Geburtsdatum :</TD><TD>$gdat</TD></TR>";	  
 	  }
	 if ($val{bildung}) {
	      @BI=("Keine Angaben","Hauptschule","Realschule","Gymnasium","Fachhochschule","Hochschule","Magister","Promotion"); 
		  print "<TR><TD>Bildung :</TD><TD>@BI[$val{bildung}]</TD></TR>";
	  }
	  if ($val{famstand}) {
	      @FS=("Keine Angaben","Verheiratet","Ledig");
		  print "<TR><TD>Familienstand :</TD><TD>@FS[$val{famstand}]</TD></TR>";
	  }
	  if ($val{arbeit}) {
	      @BS=("Keine Angaben","Vollzeitbesch&auml;ftigt","Teilzeitbesch&auml;ftigt","Rentner/in","Student/in","Sch&uuml;ler/in","zur Zeit erwerbslos");
		  print "<TR><TD>Beschäftigung :</TD><TD>@BS[$val{arbeit}]</TD></TR>";
	  }
	  if ($val{pers3}!=0) {
	      print "<TR><TD>Personen im Haushalt bis 3 Jahren :</TD><TD>$val{pers3}</TD></TR>";
	  }
	  if ($val{pers12}!=0) {
	      print "<TR><TD>Personen im Haushalt ab 3 bis 12 Jahren :</TD><TD>$val{pers12}</TD></TR>";
	  }
	  if ($val{pers22}!=0) {
	      print "<TR><TD>Personen im Haushalt ab 12 bis 22 Jahren :</TD><TD>$val{pers22}</TD></TR>";
	  }
	  if ($val{pers54}!=0) {
	      print "<TR><TD>Personen im Haushalt ab 22 bis 54 Jahren :</TD><TD>$val{pers54}</TD></TR>";
	  }
	  if ($val{pers55}!=0) {
	      print "<TR><TD>Personen im Haushalt ab 55 Jahren :</TD><TD>$val{pers55}</TD></TR>";
	  }
	    print "</Table>";

	  if (@liste1=$query->param(krit)) {
          while($item=shift @liste1) {
            $teil=$dbh->selectrow_array("select krit from krit where nr=$item");
			if ($item < 25) {unshift (@liste2,$teil)}
			  else {unshift (@liste3,$teil)}
		  }	
		  if ($liste2[0] ne "") {print "<p><br><b><u>Bevorzugte Produktkategorien</u></b><br><p>",join("<br>",@liste2),"<br>"}
	  	  if ($liste3[0] ne "") {print "<p><br><b><u>Hobbys</u></b><br><p>",join("<br>",@liste3),"<br>"}
	  }

	#Versandhäuser auflisten
	my @liste5;
	if (@liste4=$query->param(vh)) {
		while(defined($item=shift @liste4)) {
	       push (@liste5,$dbh->selectrow_array("select  vh from vhaus where vhnr=$item") );	
		}

		 if ($liste5[0] ne "") {print "<p><br><b><u>Kunde der Versandhäuser</u></b><br><p>",join("<br>",@liste5),"<br>"}
	}

	  if ($val{bestjahr}!=0) {
	      print "<TR><TD>Jahr der letzten Bestellung :</TD><TD>$val{bestjahr}</TD></TR>";
	  }


	# Entlohnungsart
	  
	  if ($val{lohnart} eq "Gutschein") {

		  print "<br><br>Entlohnungsart :Produktgutschein";

		}

	  if ($val{lohnart} eq "Scheck") {

		  print "<br><br>Entlohnungsart :Verrechnungsscheck";

		}

	  if ($val{lohnart} eq "Überweisung") {
		

		print "<br><br><TABLE border=2>";
	    print "<TR><TD>Entlohnungsart</TD><TD>Banküberweisung</TD></TR>";
		print "<TR><TD>Bankverbindung / Institut</TD><TD>$val{bank}</TD></TR>",
				"<TR><TD>Bankleitzahl</TD><TD>$val{blz}</TD></TR>",
				"<TR><TD>Kontonummer</TD><TD>$val{kontonr}</TD></TR>";
		print "</table></font>";

		}


	  print "<br><hr><br><b><font size=5 face='$conf{stdfont}'>Ihre PIN - Nummer ist :$pin</font><br><br><br>",
		"<font color='#FF0000'>Sie benötigen sowohl diese Nummer als auch das eingegebene Passwort, um sich für die Umfragen zu identifizieren!</b></font>";
	 
	  print $query->startform,
 	      "<input type='hidden' name='pin' value='$pin'>",
		  "<center><input type='submit' name='but' value='Eintrag Löschen'>&nbsp;&nbsp;";

	  print $query->submit('but','    Ende    '),"</center>",
	
		  
	  $query->endform,
	  $query->end_html, "\n";

$dbh->disconnect();  # Datenbankverbindung lösen.

exit(0);

