package stichprobe;

use pdat;

@ISA = qw (pdat);


####################################################################
####         Konstruktor der Umfragenklasse
####         Argumente  : -
####         Returnwert : -
####################################################################
sub init {
	my $that = shift;
	my $class = ref($that) || $that;
	my $self = template->init(@_);
	bless $self, $class;	
	$self->{name}     = "Neue Umfrage";
	$self->{umfid}	  = $baseq::VARS{umfid}+0;
	if ($self->{umfid}==0) {return;}
	($self->{template},
	$self->{sprache},$self->{knr}) = $self->sqlselect("select template,sprache,knr from umfragen where umfid=$self->{umfid}");
    $self->loadtmp();
    $self->loadsprache($self->{sprache});
	return $self;
}

####################################################################
####         Konstruktor der Umfragenklasse
####         Argumente  : -
####         Returnwert : -
####################################################################
sub getbearb {
	my $self=shift; 
	# $self->loadtmp();
	if ($baseq::VARS{sbut} eq $self->trans("BU1") ){$self->save;}
	if ($baseq::VARS{sbut} eq $self->trans("BU29") ){$self->deletestprobe;}
	if ($baseq::VARS{sbut} eq $self->trans("BU30") ){$self->selectmail;}
	if ($baseq::VARS{sbut} eq $self->trans("BU76") ){$self->erinnerungsmail;}
	if ($baseq::VARS{sbut} eq $self->trans("BU31") ){$self->automail("prorataweb\@prorata.de\n");}

	my $HTML=$self->qfont("Bereits erstellte Stichproben")."\n<BR>\n".
         $self->stprobtable.$self->afont("Es sind ".$self->automail." E-Mails in Automail eingetragen")."<BR>\n".
         $self->SMrow(["sbut","sbut","sbut","sbut","kbut","sbut"],["BU29","BU30","BU76","BU31","BU24","BU11"])."<HR>\n".
         $self->htmltop.  $self->SMrow(["sbut","sbut","sbut","kbut"],["BU22","BU11","BU1","BU24"]);

	if ($baseq::VARS{sbut} eq $self->trans("BU22") ) {$HTML.="<HR>\n".$self->benutzerliste;}
	$self->printhtml("Stichprobe",$HTML);
	$self->exit;
}

####################################################################
####         Gibt einen String mit den Auswahlfeldern zurueck
####         Argumente  : -
####         Returnwert : HTML-String
####################################################################
sub htmltop {
		my $self=shift; 
        $self->{warntext}="Teilnehmerselection für Umfragenummer $baseq::VARS{umfid}";
		$benutzer=pdat->init;
		$self->loadtmp();
		#$self->log(4,"Entering: stprobe: nein hier bin ich");

        #--------------------------------------------------------------------------------------------------------
        #Liste der Einzelkriterien;


        my $HTML=
        "<TABLE BORDER=1>".
		$self->TR([$self->afont("Ausschluß"),$self->afont("Auswahl"),$self->afont("Kriterien"),"&nbsp;"]).
        $self->TR(["&nbsp;",$self->CB("anzahl",1,$baseq::VARS{anzahl}),"Personen",$self->TF("Personen",$baseq::VARS{Personen},5) ]).
        $self->TR([$self->CB("ncalterv",1,$baseq::VARS{ncalterv}),$self->CB("calterv",1,$baseq::VARS{calterv}),"Alter von",$self->TF("alterv",$baseq::VARS{alterv},5) ]).
        $self->TR([$self->CB("ncalterb",1,$baseq::VARS{ncalterb}),$self->CB("calterb",1,$baseq::VARS{calterb}),"Alter bis",$self->TF("alterb",$baseq::VARS{alterb},5) ]).
		$self->TR(["&nbsp;","&nbsp;",$self->afont($self->trans("HI71")),"&nbsp;"]).
        $self->TR(["&nbsp;",$self->CB("cbis3",1,$baseq::VARS{cbis3}),"Anzahl 0-3 jährige",$self->TF("bis3",$baseq::VARS{bis3},5) ]).
        $self->TR(["&nbsp;",$self->CB("cbis12",1,$baseq::VARS{cbis12}),"Anzahl 4-12 jährige",$self->TF("bis12",$baseq::VARS{bis12},5) ]).
        $self->TR(["&nbsp;",$self->CB("cbis22",1,$baseq::VARS{cbis22}),"Anzahl 13-22 jährige",$self->TF("bis22",$baseq::VARS{bis22},5) ]).
        $self->TR(["&nbsp;",$self->CB("cbis55",1,$baseq::VARS{cbis55}),"Anzahl 23-54 jährige",$self->TF("bis55",$baseq::VARS{bis55},5) ]).
        $self->TR(["&nbsp;",$self->CB("cab55",1,$baseq::VARS{cab55}),"Anzahl ab 55",$self->TF("ab55",$baseq::VARS{ab55},5) ]).
		$self->TR([$self->CB("nichtpers",1,$baseq::VARS{nichtpers}),$self->CB("pers",1,$baseq::VARS{pers}),"Insgesamt Personen im HHT",$self->TF("insges",$baseq::VARS{insges},5 )]).
		$self->TR(["&nbsp;","&nbsp;","&nbsp;","&nbsp;" ]).
		$self->TR(["&nbsp;",$self->CB("sex",1,$baseq::VARS{sex}),"Anrede",$self->DDanrede("anrede",$baseq::VARS{anrede}) ]).
        $self->TR([$self->CB("nichtfam",1,$baseq::VARS{nichtfam}),$self->CB("fam",1,$baseq::VARS{fam}),"Familienstand", $self->DDfamstand("famstand",$baseq::VARS{famstand}) ]).
        $self->TR([$self->CB("nichtbild",1,$baseq::VARS{nichtbild}),$self->CB("bild",1,$baseq::VARS{bild}),"Ausbildung", $self->DDbildung("bildung",$baseq::VARS{bildung}) ]) .
        $self->TR([$self->CB("nichtbesch",1,$baseq::VARS{nichtbesch}),$self->CB("besch",1,$baseq::VARS{besch}),"Besch&auml;ftigung", $self->DDarbeit('arbeit',$baseq::VARS{arbeit}) ]) .
		$self->TR([$self->CB("nichtberufsstd",1,$baseq::VARS{nichtberufsstd}),$self->CB("berufsstd",1,$baseq::VARS{berufsstd}),"Berufsstand", $self->DDberufsstand('berufsstand',$baseq::VARS{berufsstand}) ]) .
		$self->TR(["&nbsp;","&nbsp;","&nbsp;","&nbsp;" ]).
		$self->TR(["&nbsp;",$self->CB("bsys",1,$baseq::VARS{bsys}),"Betriebssystem", $self->DDbsystem('bsystem',$baseq::VARS{bsystem}) ]) .
        $self->TR(["&nbsp;",$self->CB("prov",1,$baseq::VARS{prov}),"Provider", $self->DDprovider('provider',$baseq::VARS{provider}) ]) .
        $self->TR(["&nbsp;",$self->CB("herkft",1,$baseq::VARS{herkft}),"Herkunft", $self->DDherkunft('herkunft',$baseq::VARS{herkunft}) ]) .
        $self->TR(["&nbsp;",$self->CB("plzv",1,$baseq::VARS{plzv}),"PLZ von",$self->TF("plzvon",$baseq::VARS{plzvon},5) ]).
        $self->TR(["&nbsp;",$self->CB("plzb",1,$baseq::VARS{plzb}),"PLZ bis",$self->TF("plzbis",$baseq::VARS{plzbis},5) ]).
		$self->TR(["&nbsp;",$self->CB("landb",1,$baseq::VARS{landb}),"Land", $self->DDland('land',$baseq::VARS{land}) ]) .

        "</TABLE><BR>\n";

	# Höhste Zahl Kriterien berechnen
	my $x=($#baseq::KRIT+1);
	my $y=($#baseq::HOB+1);
	my $z=($#baseq::VH+1);
	my $zahl;
	
	if ($x>$y) {
		$zahl=$x;		
		if($x<$z){$zahl=$z;}
	}
	
	if ($x<$y) {
		$zahl=$y;
		if ($y<$z) {$zahl=$z;}
	}

	foreach $typ (1..3) {
		foreach $nr (0..$zahl) {

					my $kri="krit$typ-$nr";
					$self->{krit}[$typ][$nr] = $baseq::VARS{$kri};
					#$self->log(4,"Entering: stprobe: basewert des Kriteriums: ->$self->{krit}[$typ][$nr]");
	}
}
        #Ausgewählte Produktkategorien
       $HTML.= $self->qfont("Ausgewählte Produktkategorien")."\n<BR>\n".$self->krittable. "<BR>\n" ;
       
		#Ausgewählte Hobbys
       $HTML.= $self->qfont("Angegebene Hobbys")."\n<BR>\n".$self->hobtable. "<BR>\n" ;

		#Versandhäuser
		$HTML.= $self->qfont("Kunden der Versandhäusern")."\n<BR>\n<TABLE BORDER=1>\n".
		 $self->TR([$self->RB("vhtest",1,$baseq::VARS{vhtest})."AND",$self->RB("vhtest",0,$baseq::VARS{vhtest}==0)."OR",$self->CB("vhtestx",1,$baseq::VARS{vhtestx})."NICHT" ]).
		
		"</TABLE>\n".
		 $self->vhtable;	

		return $HTML;
}

####################################################################
####         erstellt die SQL-clause und INSERT-Listen anhand der
####         uebergebenen Variablen
####         Argumente  : -
####         Returnwert : sql,sqllist1,sqllist2
####################################################################
sub createlisten {
   my $self=shift; 
   $self->log(4,"Entering: stprobe: hier bin ich -createlisten");
   my (@chk, @chk1, $sqlist, $sqlist2,$x);
   my $rlist2="";
   my $jahr = (localtime)[5]+1900;
   unshift @chk,"pin>0";
   if (!$baseq::VARS{anzahl})  {$baseq::VARS{Personen}=-1}


   if ($baseq::VARS{calterv})	{$geb=$jahr-$baseq::VARS{alterv}; unshift @chk,"gdat<='$geb-12-31'" }
   if ($baseq::VARS{ncalterv} && !$baseq::VARS{ncalterb})	{$geb=$jahr-$baseq::VARS{alterv}; unshift @chk,"gdat>='$geb-12-31'" }
   if (!$baseq::VARS{calterv} && !$baseq::VARS{ncalterv}) {$baseq::VARS{alterv}=-1}
  
	if ($baseq::VARS{ncalterv} && $baseq::VARS{ncalterb})
		{$geb1=$jahr-$baseq::VARS{alterv};$geb2=$jahr-$baseq::VARS{alterb}; unshift @chk,"gdat>='$geb1-12-31' or benutzer.gdat<='$geb2-12-31'"	}  
   
   if ($baseq::VARS{calterb})	{$geb=$jahr-$baseq::VARS{alterb}; unshift @chk,"gdat>='$geb-01-01'" }
   if ($baseq::VARS{ncalterb} && !$baseq::VARS{ncalterv})	{$geb=$jahr-$baseq::VARS{alterb}; unshift @chk,"gdat<='$geb-01-01'" }
   if (!$baseq::VARS{calterb} && !$baseq::VARS{ncalterb}) {$baseq::VARS{alterb}=-1   }

   if ($baseq::VARS{cbis3})	{unshift @chk,"pers3=$baseq::VARS{bis3}" }else{$baseq::VARS{bis3}=-1}
   if ($baseq::VARS{cbis12})	{unshift @chk,"pers12=$baseq::VARS{bis12}" }else{$baseq::VARS{bis12}=-1}
   if ($baseq::VARS{cbis22})	{unshift @chk,"pers22=$baseq::VARS{bis22}" }else{$baseq::VARS{bis22}=-1}
   if ($baseq::VARS{cbis55})	{unshift @chk,"pers54=$baseq::VARS{bis55}" }else{$baseq::VARS{bis55}=-1}
   if ($baseq::VARS{cab55})	{unshift @chk,"pers55=$baseq::VARS{ab55}" }else{$baseq::VARS{ab55}=-1}

   if ($baseq::VARS{pers})	{unshift @chk,"pers3+benutzer.pers12+benutzer.pers22+benutzer.pers54+benutzer.pers55=$baseq::VARS{insges}" }
   if ($baseq::VARS{nichtpers})	{unshift @chk,"pers3+benutzer.pers12+benutzer.pers22+benutzer.pers54+benutzer.pers55<>$baseq::VARS{insges}" }
   if (!$baseq::VARS{pers} && !$baseq::VARS{nichtpers}) {$baseq::VARS{insges}=-1}

     $self->log(4,"Entering: stprobe: hier bin ich -createlisten (pers3+pers12+pers22+pers54+pers55)=$baseq::VARS{insges} ");

   if ($baseq::VARS{sex})	{unshift @chk,"anrede=$baseq::VARS{anrede}" }else{$baseq::VARS{anrede}=-1}

   if ($baseq::VARS{nichtfam}){unshift @chk,"famstand<>$baseq::VARS{famstand}" }
   if ($baseq::VARS{fam}){unshift @chk,"famstand=$baseq::VARS{famstand}" }
   if (!$baseq::VARS{nichtfam} && !$baseq::VARS{fam}){$baseq::VARS{famstand}=-1}

   if ($baseq::VARS{bild})	{unshift @chk,"bildung=$baseq::VARS{bildung}" }
   if ($baseq::VARS{nichtbild})	{unshift @chk,"bildung<>$baseq::VARS{bildung}" }
    if (!$baseq::VARS{nichtbild} && !$baseq::VARS{bild}) {$baseq::VARS{bildung}=-1}

   if ($baseq::VARS{besch})	{unshift @chk,"arbeit=$baseq::VARS{arbeit}" }
   if ($baseq::VARS{nichtbesch})	{unshift @chk,"arbeit<>$baseq::VARS{arbeit}" }
   if (!$baseq::VARS{besch} && !$baseq::VARS{nichtbesch}) {$baseq::VARS{arbeit}=-1}

	if($baseq::VARS{berufsstd}) {unshift @chk, "berufsstand=$baseq::VARS{berufsstand}"}
	if($baseq::VARS{nichtberufsstd}) {unshift @chk, "berufsstand<>$baseq::VARS{berufsstand}"}
	if(!$baseq::VARS{berufsstd} && !$baseq::VARS{nichtberufsstd}) {$baseq::VARS{berufsstand}=-1}

	if($baseq::VARS{bsys}) {unshift @chk, "bsystem=$baseq::VARS{bsystem}"}else{$baseq::VARS{bsystem}=-1}
	if($baseq::VARS{prov}) {unshift @chk, "provider=$baseq::VARS{provider}"}else{$baseq::VARS{provider}=-1}
	if($baseq::VARS{herkft}) {unshift @chk, "herkunft=$baseq::VARS{herkunft}"}else{$baseq::VARS{herkunft}=-1}
    if ($baseq::VARS{plzv})	{$plz=$baseq::VARS{plzvon}; unshift @chk,"plz>=$plz" }else{$baseq::VARS{plzvon}=-1}
    if ($baseq::VARS{plzb})	{$plz=$baseq::VARS{plzbis}; unshift @chk,"plz<=$plz" }else{$baseq::VARS{plzbis}=-1}
	if($baseq::VARS{landb}) {unshift @chk, "land=$baseq::VARS{land}"}else{$baseq::VARS{land}=-1}


     foreach $a (@chk) {push @chk1,"benutzer.".$a;}
    #Liste löschen, um weiter benutzen zu können
	 @chk=();


	my $x=($#baseq::KRIT+1);
	my $y=($#baseq::HOB+1);
	my $z=($#baseq::VH+1);
	my $zahl;
	
	if ($x>$y) {
		$zahl=$x;		
		if($x<$z){$zahl=$z;}
	}
	
	if ($x<$y) {
		$zahl=$y;
		if ($y<$z) {$zahl=$z;}
	}
	 	
		foreach $typ (1..2) { 
			foreach $nr (0...$zahl) {
					my $kri="krit$typ-$nr";
					$self->{krit}[$typ][$nr] = $baseq::VARS{$kri};
					 if ($baseq::VARS{$kri}) {
						unshift @k, "left join kriterien k$typ$nr using(pin) ";
						unshift @knr," and k$typ$nr.typ=$typ and k$typ$nr.nummer=$nr";
						}
			}	
	}

		#Versandhause 
		foreach $typ (3) { 
			foreach $nr (0..$zahl) {
					my $kri="krit$typ-$nr";
					$self->{krit}[$typ][$nr] = $baseq::VARS{$kri};
					 if ($baseq::VARS{$kri}) {
						unshift @v, "left join kriterien k$typ$nr using(pin) ";
						unshift @vnr," k$typ$nr.typ=$typ and k$typ$nr.nummer=$nr";
						}
			}	
	}


  if (@vnr eq "" ) { $self->log(4,"Entering: stprobe: rlist2 - >Oh-oh");
  $rlist2=" and ".("","not")[$baseq::VARS{vhtestx}]." ( ".join( (" or "," and ")[$baseq::VARS{vhtest}], @vnr ) ." ) ";  # AND/OR Versandhaus...... NOT
  }
 # else{$rlist2="";$self->log(4,"Entering: stprobe: rlist2 - > $rlist2");}

##################################
# Ausschlussliste generieren "
my @ausschluss= split /-/, $baseq::VARS{ausschl};
foreach (keys %baseq::VARS) {
	push @ausschluss,$1 if /ausschl-(\d{5})/;
}

if ($#ausschluss > -1) {
	$ausschluss=" and benutzer.pin!=".join(" and benutzer.pin!=",@ausschluss);
	$baseq::VARS{ausschl}=join("-",@ausschluss);
}
	

#######################################################################
#  my $sql="select benutzer.PIN, benutzer.anrede, benutzer.VNAME, benutzer.NNAME,benutzer.PLZ, count(ergebnis.pin) CNT ".
#          "from benutzer left join ergebnis using (pin) left join umfidpin on benutzer.pin=umfidpin.pin and umfidpin.umfid=$baseq::VARS{umfid} where " .
#           "umfidpin.umfid is NULL and benutzer.email !=''  and ".join(" and ",@chk1).  "   group by benutzer.pin order by CNT limit $baseq::VARS{Personen}";
#
#######################################################################


####   MEINE AENDERUNG !!!!!!!!!    IJA

## Den ersten in der Kriterienliste ohne "left join" und using, damit er am Anfang stehen kann !!!!!
$k[0]=~/(k\d+ )/;  #####  Das Kriterium suchen z.B. k217
my $benutzertable="benutzer";
if ($k[0] ne "") {
	$k[0]="kriterien $1 ";   #### und einsetzen
	$benutzertable=" left join benutzer using(pin) ";
}
###############################################
####    Auch die SQLanweisung aendert sich, indem ich die Ergebnistabelle ans Ende vor die Benutzertabelle stelle:

#my $sql="select benutzer.PIN, benutzer.anrede, benutzer.vname, benutzer.nname , benutzer.plz, count(ergebnis.pin) CNT ".
#				"from ergebnis  ".join(" ",@k).join(" ",@v).
#				"left join benutzer using(pin) left join umfidpin on benutzer.pin=umfidpin.pin and umfidpin.umfid=$baseq::VARS{umfid} ".
#				"where umfidpin.umfid is NULL and benutzer.email !=''  and  ".join(" and ",@chk1).
#				join(" ",@knr).  $rlist2 . 
#				" group by ergebnis.pin order by CNT limit $baseq::VARS{Personen}";

####    Hier die neue SQLanweisung:


my $sql="select benutzer.PIN, benutzer.anrede, benutzer.vname, benutzer.nname ,benutzer.gdat, benutzer.plz, benutzer.nl, benutzer.land, count(ergebnis.pin) CNT ".
				"from ".join(" ",@k).join(" ",@v).
				$benutzertable." left join ergebnis using(pin) left join umfidpin on benutzer.pin=umfidpin.pin and umfidpin.umfid=$baseq::VARS{umfid} ".
				"where umfidpin.umfid is NULL and benutzer.email !=''  and  ".join(" and ",@chk1).
				join(" ",@knr).  $rlist2 . $ausschluss .
				" group by benutzer.pin order by CNT limit $baseq::VARS{Personen}";


#########################################     ENDE MEINER AENDERUNGEN !!!!!!!
###   Geschwindigkeitserhoehung, Faktor 10 !!!!!


  #return $sql , $sqlist, $sqlist2;

  return $sql;
}


		
####################################################################
####         erstellt eine HTML-Tabelle mit den Stichproben
####         uebergebenen Variablen zurueck
####         Argumente  : -
####         Returnwert : -
####################################################################
sub stprobtable {
  my $self=shift; 
  $self->loadtmp;
  my $sql="select * from stprobe where umfid=$self->{umfid} order by stpro";
  my $sth = $self->sqlprepare($sql);
  my ($x,$y,  @result, @neue);
  my $tab=$self->TR(["","Anz.","Alter Von","Alter Bis","0-3","4-13","13-22","23-55","ab 55","Geschl.","Familie","Bildung","Arbeit","Berufsstand","BSystem","Provider","Herkunft","PLZ von","PLZ bis","Stichprobe-Nr","angemailt","Kunden-Nr.","Land","Familie?","Bildung?","Arbeit?","Berufsstand?","Anz.Personen im HHT","nicht Anz.Personen im HHT","nicht Alter von?","nicht Alter bis?"]);
  while (@result = $sth->fetchrow_array) {
         @neue=();
         for ($x=1; $x<31; $x++) {
            if ($result[$x] == -1) {$result[$x]="&nbsp;";$self->log(4,"Entering: stprobe: result[$x]  $result[$x]");}
            else {
               if ($x==9) {$result[9]=$baseq::HF[$result[9]];$self->log(4,"Entering: stprobe: result[$x]  $result[$x]  $baseq::HF[$result[9]] ");}
               if ($x==10) {$result[10]=$baseq::FS[$result[10]];$self->log(4,"Entering: stprobe: result[$x]-  $result[$x]- $baseq::FS[$result[10]]");}
               if ($x==11) {$result[11]=$baseq::BI[$result[11]];$self->log(4,"Entering: stprobe: result[$x]-  $result[$x]- $baseq::BI[$result[11]]");}
               if ($x==12) {$result[12]=$baseq::BS[$result[12]];$self->log(4,"Entering: stprobe: result[$x] - $result[$x] -$baseq::BS[$result[12]]");}

               if ($x==13) {$result[13]=$baseq::BST[$result[13]];$self->log(4,"Entering: stprobe: result[$x] - $result[$x] -$baseq::BI[$result[13]] ");}
               if ($x==14) {$result[14]=$baseq::BSYS[$result[14]];$self->log(4,"Entering: stprobe: result[$x] -  $result[$x]- $baseq::BS[$result[14]]");}
			   if ($x==15) {$result[15]=$baseq::PR[$result[15]];$self->log(4,"Entering: stprobe: result[$x]-  $result[$x] - $baseq::PR[$result[15]] ");}
			   if ($x==16) {$result[16]=$baseq::HK[$result[16]];$self->log(4,"Entering: stprobe: result[$x]-  $result[$x] -$baseq::HK[$result[16]] ");}
			   if ($x==22) {$result[22]=$baseq::LA[$result[22]];$self->log(4,"Entering: stprobe: result[$x]-  $result[$x] -$baseq::LA[$result[22]] ");}
            }
			push @neue,$result[$x];# $self->log(4,"Entering: stprobe: result[$x]  $result[$x]");

         }
		  unshift @neue, $self->CB("chostpro".$result[19],$result[19],$result[19]==$baseq::VARS{"chostpro".$result[19]} );
		 

		 $tab.=$self->TR(\@neue);

  }
  if ($tab ne "") {return  "<TABLE BORDER=1>\n".$tab."</TABLE>\n";}
  return;
}

####################################################################
####         speichert eine Stichprobe in stprobe und umfidpin
####         uebergebenen Variablen zurueck
####         Argumente  : -
####         Returnwert : -
####################################################################
sub save {
   my $self=shift; 
   #($sql, $sqlist1, $sqlist2)=$self->createlisten;
    $sql=$self->createlisten;
   my $sth=$self->sqlprepare($sql);
   my $za=0;
   while (@result=$sth->fetchrow_array) {push @L,$result[0];}
   my $stpro=($self->sqlselect("select max(stpro) from stprobe"))+1;

  # $self->log(4,"Entering: stprobe: save stpro=$stpro");
  # $self->log(4,"Entering: stprobe: save umfid=$baseq::VARS{umfid}");

   foreach $pin (@L) {$za+= $self->sqldo("insert into umfidpin values ($baseq::VARS{umfid}, $pin, $stpro)");}

  #$self->log(4,"Entering: stprobe: save za=$za");

	my $x=($#baseq::KRIT+1);
	my $y=($#baseq::HOB+1);
	my $z=($#baseq::VH+1);
	my $zahl;
	
	if ($x>$y) {
		$zahl=$x;		
		if($x<$z){$zahl=$z;}
	}
	
	if ($x<$y) {
		$zahl=$y;
		if ($y<$z) {$zahl=$z;}
	}
	 	
		foreach $typ (1..3) { 
			foreach $nr (0...$zahl) {

		  if ($self->{krit}[$typ][$nr]) {
			$sql="insert into stprobekrit values ($stpro, $typ, $nr)";
			$self->sqldo($sql);
		  }
		}	
	}
  

#Nicht - Funktionen festlegen

   if ($baseq::VARS{nichtfam} ==1 ){$nf="nicht"}else{$nf=""}
   if ($baseq::VARS{nichtbild} ==1)	{$nbd="nicht" }else{$nbd=""}
   if ($baseq::VARS{nichtbesch} ==1)	{$nbsch="nicht"}else{$nbsch=""}
   if ($baseq::VARS{nichtberufsstd} ==1 ) {$nbrfst="nicht"}else{$nbrfst=""}
   if ($baseq::VARS{nichtpers} == 1) {$nap=$baseq::VARS{insges}}else{$nap=0}
   if ($baseq::VARS{pers} ==1 ) {$ap=$baseq::VARS{insges}}else{$ap=0}
   if ($baseq::VARS{ncalterv} ==1 ){$nav="nicht"}else{$nav=""}
   if ($baseq::VARS{ncalterb} ==1 ) {$nab="nicht"}else{$nab=""}

################

   my $sql1="insert into stprobe values ( $baseq::VARS{umfid},$za,$baseq::VARS{alterv},$baseq::VARS{alterb},$baseq::VARS{bis3},$baseq::VARS{bis12}, ".
   "$baseq::VARS{bis22},$baseq::VARS{bis55},$baseq::VARS{ab55},$baseq::VARS{anrede},$baseq::VARS{famstand},$baseq::VARS{bildung},$baseq::VARS{arbeit}, ".
   "$baseq::VARS{berufsstand},$baseq::VARS{bsystem},$baseq::VARS{provider},$baseq::VARS{herkunft},$baseq::VARS{plzvon},$baseq::VARS{plzbis} ,$stpro, 0,1,$baseq::VARS{land},' $nf', '$nbd', '$nbsch', '$nbrfst',$ap,$nap,'$nav','$nab')" ;
   if ($za>0) {$self->sqldo($sql1);}
   return $za;
}

####################################################################
####         Gibt eine Tabelle der ausgewaehlten benutzer zurück
####         uebergebenen Variablen zurueck
####         Argumente  : -
####         Returnwert : -
####################################################################
sub benutzerliste {
  my $self=shift; 
  ($sql, $sqlinsert)=$self->createlisten;
  my $sth = $self->sqlprepare($sql);
  $self->log(4,"ROWS: ".$sth->rows);
  my $HTML= $self->qfont("Gefundene &Uuml;bereinstimmungen: ". $sth->rows ) .
  "<TABLE BORDER=1>\n".
  $self->TR(["Ausschluss","PIN","Anrede","Vorname","Name","Geburtsdatum","PLZ","PLZ-Zusatz","Land","Count"],"align=\"center\"");
  while (@result = $sth->fetchrow_array) {
    $result[1]=$baseq::HF[$result[1]];
    unshift @result,$self->CB("ausschl-$result[0]");
    $HTML.=$self->TR(\@result);
  }
  return $HTML."</TABLE>\n";
}


####################################################################
####         Schreibt mit SSH in die .qmail-automail datei...
####         oder holt die Anzahl der eingetragenen
####         Argumente  : einzutragender String
####         Returnwert : Zeilen in Automail
####################################################################
sub automail {
     my $self=shift; 
	#my $AUTOMAIL=".qmail-automail";
	my $AUTOMAIL=".qmail-prorataweb"; 
	my $HOST="proxy2";
	#my $HOST="ns2";
	my $ssh="/usr/bin/ssh";
	my $KEY="'/home/automail/.ssh/automail-ns2_dsa'";
	$self->log(4,"HOST: $HOST");
	#$self->log(4,"Ident-Key: $KEY");
     my $OUT="|$ssh -l automail -i $KEY $HOST \"tee $AUTOMAIL >/dev/null\"";
     my $IN ="$ssh -l automail -i $KEY $HOST \"cat $AUTOMAIL|wc -l\" |";
    
    #  my $OUT="|$ssh -l automail $HOST \"tee $AUTOMAIL >/dev/null\"";
    #  my $IN ="$ssh -l automail $HOST \"cat $AUTOMAIL|wc -l\" |";
     
     my $tring=shift;
     	$self->log(4,"Tring: $tring");
     if ($tring eq ""){
        open (FILE, $IN);
	$self->log(4,"IN-File: $IN");
        $num=<FILE>;
	$self->log(4,"num =  $num");
        close FILE;
        chomp $num;
        $num=~s/\s//g;
        $self->log(4,"READ from automail: $num Mails");
        return $num;
     }
     else {
        open (FILE, $OUT);
        $self->log(4,"Opening: $OUT");
        print FILE $tring;
        close FILE;
     }
}

####################################################################
####         Selectiert die Emails und schreibt sie mit &automail
####         Argumente  : einzutragender String
####         Returnwert : Zeilen in Automail
####################################################################
sub selectmail {
     	my $self=shift; 
	my $sql="select benutzer.email from umfidpin left join benutzer using (pin) where benutzer.email!='' and ";
        my @wh=(); my $MAILS="";
        foreach $x (keys %baseq::VARS) {
	
          if ($x=~/^chostpro(\d{1,4})$/) {
		  push @wh,"umfidpin.stprobe=$1";

		  my $probe=$1;
		  $self->log(4," ICH BIN HIER  und     probe=$probe");
		  my $sql2="update stprobe set email=email+1 where stpro=$probe";
		 $self->sqldo($sql2);		  
		  }
        }
        if ($wh[0] eq ""){return;}
        my $sth=$self->sqlprepare($sql.join(" or ",@wh));
        while ($mail=$sth->fetchrow_array) {$MAILS.=$mail."\n";}
        $self->log(4,"MAILS=$MAILS");
        $self->automail($MAILS);
        return;
}

####################################################################
####         Selectiert die Emails der Teilnehmer, die sich noch nicht gemeldet haben
####		 und schreibt sie mit &automail
####         Argumente  : einzutragender String
####         Returnwert : Zeilen in Automail
####
####################################################################
sub erinnerungsmail {
     	my $self=shift; 

		my $sql ="select benutzer.email from (umfidpin left join ergebnis on umfidpin.pin = ergebnis.pin and ".
		"umfidpin.umfid = ergebnis.umfid) left join benutzer on umfidpin.pin = benutzer.pin where benutzer.email!='' and " ;

		my @wh=(); my $MAILS="";
        foreach $x (keys %baseq::VARS) {
	
          if ($x=~/^chostpro(\d{1,4})$/) {
		  push @wh,"(umfidpin.stprobe=$1 and ergebnis.pin Is Null)";

		  my $probe=$1;
		  $self->log(4," ICH BIN HIER  und     probe=$probe");
		  my $sql2="update stprobe set email=email+1 where stpro=$probe";
		 $self->sqldo($sql2);		  
		  }
        }
        if ($wh[0] eq ""){return;}
        my $sth=$self->sqlprepare($sql.join(" or ",@wh));
        while ($mail=$sth->fetchrow_array) {$MAILS.=$mail."\n";}
        #$self->log(4,"MAILS=$MAILS");
        $self->automail($MAILS);
        return;
}

####################################################################
####         Loescht eine oder mehrere Stichprobe(n)
####         Argumente  : einzutragender String
####         Returnwert : Zeilen in Automail
####################################################################
sub deletestprobe {
       my $self=shift; 
	   my $sql="delete from stprobe where ";
       my $sql1="delete from umfidpin where ";
       my @wh=(); my @wh1=(); my $MAILS="";
       foreach $x (keys %baseq::VARS) {
          if ($x=~/^chostpro(\d{1,4})$/) {push @wh,"stprobe=$1"; push @wh1,"stpro=$1";}
        }
       if ($wh[0] eq ""){return;}
       $self->sqldo($sql.join(" or ",@wh1));
       $self->sqldo($sql1.join(" or ",@wh));
}
