<?php
require_once "libs/fnMain.php";

/**************************
 * Contrôle du token JWT
 **************************/
if (!isset($_GET["jwt"], $_SETTINGS["jwt_secret"])) {
	echo "Manque d'arguments";
	die();
}

verifyJWTtoken($_GET["jwt"], $_SETTINGS["jwt_secret"]);

/**************************
 * Contrôle du statut premium de l'utilisateur
 **************************/
verifyUserPremium($_GET["jwt"]);

/**************************
 * Calcul des notes
 **************************/
$isNoteValid = isset($_GET["note"]) && (float) $_GET["note"] !== 0;
$isAnneeValid = isset($_GET["annee"]) && (int) $_GET["annee"] !== 0;

if ($isNoteValid && $isAnneeValid) {
	// On exclut le cas où les années entrées ne sont pas les bonnes
	// TIPS : Modifier les années au besoin
	if ((int) $_GET["annee"] > 2020 || (int) $_GET["annee"] < 2016) {
		echo "L'année entrée n'est pas valide";
		die();
	}
	
	$rangMoyen = 0; // Variable donnant le rang utilisé pour calculer le tableau des choix, et servant aussi au classement affiché
	$sqlLimiteBasse = "SELECT * FROM notes_rang
				WHERE annee = :annee AND note >= :note
				ORDER BY classement DESC
				LIMIT 1";
	$sqlLimiteHaute = "SELECT * FROM notes_rang
					WHERE annee = :annee AND note <= :note
					ORDER BY classement
					LIMIT 1";
	
	$reqLimBasse = $db->prepare($sqlLimiteBasse);
	$reqLimBasse->execute([
		"annee" => $_GET["annee"],
		"note" => $_GET["note"]
	]);
	
	if ($reqLimBasse->rowCount() === 0) {
		// Pas de note au dessus de la note entrée => Forcément 1er
		$rangMoyen = 1;
	} else {
		$reqLimiteHaute = $db->prepare($sqlLimiteHaute);
		$reqLimiteHaute->execute([
			"annee" => $_GET["annee"],
			"note" => $_GET["note"]
		]);
		
		$rangBasArray = $reqLimBasse->fetch(PDO::FETCH_ASSOC);
		if ($reqLimiteHaute->rowCount() === 0) {
			// Pas de note en dessous => Forcément dernier
			$rangMoyen = $rangBasArray["classement"] + 10;
		} else {
			// Note entre 2 classements connus de la DB
			$rangHautArray = $reqLimiteHaute->fetch(PDO::FETCH_ASSOC);
			
			// Ligne non utilisée car révèle les points utilisés (entre xxx et yyy) sont connus
			// $rangText = "Entre ".$rangBasArray["classement"]." et ".$rangHautArray["classement"];
			
			$rangMoyen = ((int) $rangBasArray["classement"] + (int) $rangHautArray["classement"]) / 2;
			$rangMoyen = (int) $rangMoyen;
		}
	}
	
	/********************************
	* CALCUL DU TABLEAU DES CHOIX
	********************************/
	
	// HTML renvoyé au site
	$html = <<<EOF
	<!doctype html>
	<html lang="fr">
	<head>
		<meta charset="UTF-8">
		<meta name="viewport"
		      content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
		<meta http-equiv="X-UA-Compatible" content="ie=edge">
		<title>RangLimier</title>
		<link rel="stylesheet" href="assets/bootstrap.min.css">
		<link rel="stylesheet" href="assets/divers.css">
	</head>
	<body>
	<h1>RangLimier</h1>
		<p>Cet outil permet, en entrant une note et une année d'ECN, de voir le rang le plus proche associé.<br>
		<i>Attention : Cet outil est à but purement indicatif !</i>
		</p>
	<style>
	/* Tableau */
		table {
		    font-size: 12px;
		    text-align: center;
		    border-collapse: collapse;
		    white-space: nowrap;
		}
		
		th, td {
		    padding: 2px;
		    border: 1px solid black;
		    background-color: #192942;
		    color: #f0f0f0;
		}
		
		th {
		    text-align: left;
		    padding-left: 3px;
		    padding-right: 3px;
		}
		
		.all-choices {
		    background-color: #C7F0CF;
		    /* color: #8fd19e; */
		    color: #136111;
		}
		
		.half-choices {
		    background-color: #FFEB9D;
		    color: #9D5915;
		}
		
		.last-choice {
		    background-color: #FFEB9D;
		    color: #9D5915;
		}
		
		.no-choice {
		    background-color: #FEC7CE;
		    color: #9C1311;
		}
		
		.never-available {
		    background-color: #192942;
		}
	</style>
	<h2>Tableau de classement pour le rang {$rangMoyen}</h2>
	<p>Rang estimé pour la note {$_GET["note"]}/10800 : {$rangMoyen}</p>
	<!-- <h3>Légende</h3>
	<table>
		<thead>
		<th colspan="5">Légende (sur toutes les années)</th>
		</thead>
		<tbody>
		<tr>
			<td>Jamais proposé</td>
			<td class="no-choice">Aucun choix</td>
			<td class="last-choice">Une seule année</td>
			<td class="half-choices">Plusieurs choix</td>
			<td class="all-choices">Tous les choix</td>
		</tr>
		</tbody>
	</table> -->
	<p>
		Chaque nombre dans chaque case correspond au nombre d'années où ce choix était dispo au classement rentré <br>
	</p>
EOF;
	
	require "apiDisplay.php";
	
} else {
	echo "Valeurs d'année et/ou note incorrecte.";
}

