<?php

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 * Description of savior
 *
 * @author TyKayn
 */
class savior {
	//put your code here
	public $rendu ='';
	public $post ;
	public $debug ;
	public $id_sondage ;
	
	public $save_questions;
	public $save_sondage;
	
	
	public function connect(){
					
	}
	public  function setstate($un=0,$deux=0){
		
		$this->save_questions=$un;
		$this->save_sondage=$deux;
	}
	
	public function check(){
		$tableau = $_POST;
		
		$this->rendu.= 'Il y a '.$tableau['total'].' Questions à enregistrer, la requete ça va être ça:<br/>';
							try{
					// On se connecte à MySQL
							$this->rendu.= 'connection...';
				//	$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
					$bdd = new PDO('mysql:host=localhost;dbname=tykayn', 'tykayn', 'plopplop01');
					}
						catch(Exception $e){
					// En cas d'erreur précédemment, on affiche un message et on arrête tout
					die('Erreur : '.$e->getMessage());
					}
					$this->rendu.= ' ... connecté.<br/>';
						// On récupère le nombre du dernier sondage, on y ajoute 1 et ça sera le numéro du sondage a enregistrer
					 $reponse = $bdd->query('SELECT count(titre) FROM tkp_sondages');
					 $donnees = $reponse->fetch();
					$num_sondage = $donnees[0];
					$num_sondage++; //sondage suivant
					
					 $this->rendu.= ' le nouveau sondage sera le numéro '.$num_sondage.'<br/>';
				//	 $reponse->closeCursor(); // Termine le traitement de la requête
					 //requete pour enregistrer dans la table tkp_sondages
				
					 $this->rendu .= '
							<br/>insert into tkp_sondages 
						values(
						"",
						"'.$tableau['total'].'",
						"'.$tableau['titre'].','.$tableau['sous_titre'].'",
						"'.$tableau['grades_1'].'",
							NOW(),
							"",
							"",
							""
							)'
					;
					 
				if ($this->save_sondage==1){
					
					
					
				$ajout=	 $bdd->exec('insert into tkp_sondages 
						values(
						"",
						"'.$tableau['total'].'",
						"'.$tableau['titre'].','.$tableau['sous_titre'].'",
						"'.$tableau['grades_1'].'",
							NOW(),
							"",
							"",
							""
							)'
							);
					 $this->rendu.= '<h1> '. $ajout.'sondage ajouté ! </h1>
						 '.$tableau['titre'].','.$tableau['sous_titre'].'';
					 
				}
				else {
					$this->rendu.= '<h2>enregistrement de sondage d\ésactiv\é</h2>';
					
				}
				//boucler sur toutes les questions 
			
				try{
				$req = $bdd->prepare('insert into tkp_questions 
						values(
						:id,
						:id_question,
						:id_sondage,
						:type,
						:requis,
						:stat,
						:defaut,
						:illustration,
						:points,
						:titre)'
						  )
						  ;
				}
				
						catch(Exception $e){
					die('Erreur : '.$e->getMessage());
					}
				$affected =0;
		for ($j=1;$j<$_POST['total'];$j++){
			
			$qestactuelle ='type_1_'.$j;
			
			// $numsq = '_'.$num_sondage.'_'.$j;
			$numsq = '_1_'.$j;
				$type= '';	
				$type= $_POST['type'.$numsq];
				$titre = $tableau['titre'.$numsq];
				$defaut = $tableau['defaut'.$numsq];
				$illu = $tableau['illu'.$numsq];
				if (isset($tableau['requis'.$numsq])){$requis = $tableau['requis'.$numsq];}else{$requis='';}
				$stat = $tableau['stat'.$numsq];
				$points = $tableau['points_oui'.$numsq].','.$tableau['points_non'.$numsq];
				
				$this->rendu .= " 
					<br/>'' ,
						\"$j\"  ,
						\"$num_sondage\"  ,
						\"$_POST[$qestactuelle]\" ,
						\"$requis\"  ,
						\"$stat\"  ,
						\"$defaut\"  ,
						\"$illu\"  ,
						\"$points\"  ,
						\"$titre\"
";
			$noticcce ='';	
			if ($this->save_questions==1){
				try{
					
					$affected +=	$req->execute(array(
						'id' => '' ,
						'id_question' => "$j"  ,
						'id_sondage' => "$num_sondage"  ,
						'type' => "$_POST[$qestactuelle]" ,
						'requis' => "$requis"  ,
						'stat' => "$stat"  ,
						'defaut' => "$defaut"  ,
						'illustration' => "$illu"  ,
						'points' => "$points"  ,
						'titre' => "$titre"
							)
								) or die($req->errorInfo());
				}
				
						catch(Exception $e){
					die('Erreur : '.$e->getMessage());
					}
				$tot = $_POST["total"];
				
			
				
				}
				else {
					$noticcce = "<h2>enregistrement des questions désactivé</h2>";
				}
			$this->rendu .= "<br/>ET VOUALAAAAH , $affected  insetions ,tot: $tot ";
		}
		echo $noticcce.$this->rendu;
		$reponse->closeCursor();
	}
	
	public function vote(){
		//savoir le numéro de sondage actuel
		foreach($_POST AS $k=>$v){
		$posttab = explode('_' , $k ) ; // type _ S _ Q  => reponse
									$id_sondage=$posttab[1];
									
									}
		//
		//connexion
		try{
		// On se connecte à MySQL
				$this->debug.= '<br/><h1>connection...';
		$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
		$bdd = new PDO('mysql:host=localhost;dbname=tykayn', 'tykayn', 'plopplop01', $pdo_options);
		}
			catch(Exception $e){
		// En cas d'erreur précédemment, on affiche un message et on arrête tout
		die('Erreur : '.$e->getMessage());
		}
		$this->debug.= ' ... connecté.</h1><br/>';

		
		
		//récup des questions	//////////////////////////////////////////////////////////////////////
		//	pour trouver celle qui a le pseudo
		// et récolter la table de points
		$reponse = $bdd->query('SELECT * FROM tkp_questions WHERE id_sondage='.$id_sondage);
			while ($donnees = $reponse->fetch())
			{
			$tabdepoints[$donnees['id_question']]	= $donnees['points'];
				if($donnees['type'] =='pseudo'){
					$numqpseudo=$donnees['id_question'];
					$votant = $_POST['pseudo_'.$donnees['id_sondage'].'_'.$numqpseudo];
					$numsondage = $donnees['id_sondage'];
				}
				
			}
			$pseduovar = 'pseudo_'.$numsondage.'_'.$numqpseudo;
//			echo "<br/>votant trouvé: $numqpseudo ,<br/> sondage n°: $numsondage <br/>";
//			echo '<br/> pour post: '.$pseduovar.'';
//			echo '<br/> post: '.$_POST[$pseduovar].'';
			
			
				//$tabdepoints [Q] = 'pointsoui,pointsnon'
			$reponse->closeCursor();
		//	print_r($tabdepoints);
			
			
			
		//préparation de requete pour enregistrer le vote		//////////////////////////////////////	
		 $req = $bdd->prepare('insert into tkp_votes 
						values(
						:id,
						:id_sondage,
						:num_q,
						:reponse,
						:votant,
						:ip,
						:datetime
						)'
						  )
						  ;
				//boucler sur toutes les questions 
				
				$score=0;
				$ip = $_SERVER['REMOTE_ADDR'];
					date_default_timezone_set('Europe/Paris');	
					$datetime =date('Y-m-d H:i:s');
			//	date_timezone('Europe/Paris');
				
		 foreach($_POST AS $k=>$v){
			
									$posttab = explode('_' , $k ) ; // type _ S _ Q  => reponse
									$id_sondage=$posttab[1];
									$num_q=$posttab[2];
									$reponsevote=$_POST[$k];
								//	echo '<br/>  reponse '.$reponsevote;
									//pour compter les points, mettre les réponses dans un tableau[Q°] = rep
									if($posttab[0]=='radio'){
										$reponses[$posttab[2]] = $v;
									//	$this->post .='<br/> $reponses[$posttab[2]] '. $reponses[$posttab[2]].' = '.$v;
										}
									
							$votant = $_POST['pseudo_'.$numsondage.'_'.$numqpseudo];
									
									
									
									
									
									$exectab = array(
									'id' => ''  ,
									'id_sondage' => $id_sondage  ,
									'num_q' => $num_q  ,
									'reponse' => $reponsevote  ,
									'votant' => $votant  ,
									'ip' => $ip  ,
									'datetime' => $datetime ,
									);
								//	print_r($exectab);
									 //enregistre les réponses
									try{
									$req->execute($exectab);
								}
									catch(Exception $e){
									// En cas d'erreur précédemment, on affiche un message et on arrête tout
									die('Erreur : '.$e->getMessage());
								}

								}
								
							//	print_r($reponses);
								$reponse->closeCursor();  // Termine le traitement de la requête
				 //compter les points

				$qpointsval = $bdd->query('SELECT * FROM tkp_questions');
						while ($donnees = $qpointsval->fetch() ){
							if(isset($reponses[$donnees['id_question']])){
								
							$tabpoints[$donnees['id_question']]=$donnees['points'];
							$boom = explode(',',$tabpoints[$donnees['id_question']]);
							
								if(isset($boom[0]) 
										&& $reponses[$donnees['id_question']] =='oui'){
										$score +=$boom[0];
								//		$this->post .='<br/> rep à Q° '.$donnees['id_question'].'  == oui, + '.$boom[0].' points';
								}
								elseif(isset($boom[1])){
									$score +=$boom[1];
								//	$this->post .='<br/> rep à Q° '.$donnees['id_question'].' == '.$reponses[$donnees['id_question']].' PAS oui+ '.$boom[1].' points';
									
								}
							}
							// $this->post .='<br/>  SCORE: '.$score.' points';
							}
							$reponse->closeCursor();  // Termine le traitement de la requête
							
							$score_du_vote = "<br/> SCORE: $score points";
							
				// $this->rendu .= "ET VOUALAAAAH<br/><br/> SCORE: $score points ";		
					//déterminer le grade
				try{	$gradation = $bdd->query('SELECT id,grades FROM tkp_sondages WHERE id='.$id_sondage); }
				catch(Exception $e)
								{
									// En cas d'erreur précédemment, on affiche un message et on arrête tout
									die('Erreur : '.$e->getMessage());
								}
					while ($donnees = $gradation->fetch() ){
							
							$tabgrades = explode(',',$donnees['grades']);
							$nbdegrades = count($tabgrades);
							////déterminer le score maximum.
							$maximumpoints =0;
							
							
							//pour chaque, ajouter la valeur la plus grande au score max $maximumpoints
							foreach ($tabdepoints AS $k=>$v){
								$points = explode(',',$tabdepoints[$k]);
								$maximumpoints += max($points[0],$points[1]);
							//	$this->post .=	'<br/> maxpoints + '.max($points);
							}
							//print_r($tabdepoints);
							
							$nombredegrades .=	'<h2>'.$nbdegrades.' Grades</h2>';
							
							if($maximumpoints != 0){
							$ecart = ($maximumpoints / $nbdegrades);
							$infos_points .=	"<br/> Le max de points est: $maximumpoints , il y aura un passage d'un grade au suivant tous les $ecart points <br/>";
							//liste des grades avec leur valeur en point.	
							$pointsprogressifs=0;
							for($i=0;$i<$nbdegrades;$i++){
									//détermine l'encadrement du score du votant
									//si plus grand , et si plus petit
								$pouned = '';
								$panneau_grades ='';
								if( $pointsprogressifs < $score &&  $score < ($pointsprogressifs+$ecart)){
									$pouned = 'pouned';
									$grade_du_vote ='<br/><span class="grade">	entre '. $pointsprogressifs.' et '.($pointsprogressifs+$ecart).' vous êtes:</span><span class="pouned">'. $tabgrades[$i].' </span>';
								}
								 $this->rendu .= '<br/><span class="'.$pouned .'">	entre '. $pointsprogressifs.' et '.($pointsprogressifs+$ecart).' vous êtes:</span><span class="grade">'. $tabgrades[$i].' </span>';
								 $pointsprogressifs += $ecart;
								}
							
							}
							else{$this->post .='Maximum de points = 0';}
							
							}
					$reponse->closeCursor();  // Termine le traitement de la requête
					
					try{
						$bdd->exec("INSERT INTO `tykayn`.`tkp_votes` (
											`id` ,
											`id_sondage` ,
											`num_q` ,
											`reponse` ,
											`votant` ,
											`ip` ,
											`datetime`
											)
											VALUES (NULL , '$id_sondage', 'score',' $score', '$votant', '$ip', '$datetime')");
						
						}
					catch(Exception $e)
								{
									// En cas d'erreur précédemment, on affiche un message et on arrête tout
									die('Erreur : '.$e->getMessage());
								}
					$confirm_saved ='<br/>score enregistré.';
					$reponse->closeCursor();  // Termine le traitement de la requête
		
		 
					$template_show="$score_du_vote 
$nombredegrades
$grade_du_vote
$confirm_saved

$infos_points
$panneau_grades";
					
		 $this->rendu = $template_show.$this->post.$this->rendu;
		 
		 echo $this->rendu;
		 $this->id_sondage = $id_sondage;
	}
	public function lienstats()
	{
		echo '<br/><br/><a href="resultats.php?s='. $this->id_sondage .'">Statistiques pour ce sondage.</a>';
	}
	
	
}

?>
