<?php
	
	define('RECAPTCHA_V3_SITE_KEY', '6Le-SAwjAAAAAJN9q-f0EylTK-j-zd56F4QHO5uC');
	define('RECAPTCHA_V3_SECRET_KEY', '6Le-SAwjAAAAAJ5v2CsG7QmRsi-oNoEo2vkC_P0T');

	$references = ['CACES R482','CACES R483','CACES R484','CACES R485','CACES R486','CACES R487','CACES R489','CACES R490'];
	
	$pageTitle = "Conformité des certificats CACES";
    include('templates/header.php');
    
    $certified = new Certified();
    $certifiedManager = new CertifiedManager();
    
    $showForm = true;
    $error = false;
    $process = false;
    $postData = array();
    
    echo '
    		<div class="row">
				<div class="col p-5">';
	
	$action = filter_input(INPUT_POST, 'action', FILTER_SANITIZE_STRING);
	
	// Values checker + reCaptcha check
    if ($action && $action == 'check') {
	    foreach($certifiedManager->getMandatoryFields() as $field) {
		    $value = filter_input(INPUT_POST, $field, FILTER_SANITIZE_STRING);			
		    if (!$value || $value == '') {
		    	$error = 'Tous les champs sont obligatoires';
		    }
		    else {
			    $postData[$field] = $value;
		    }
		}
		
		$token = filter_input(INPUT_POST, 'token', FILTER_SANITIZE_STRING);
          
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL,"https://www.google.com/recaptcha/api/siteverify");
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query(array('secret' => RECAPTCHA_V3_SECRET_KEY, 'response' => $token)));
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        $response = curl_exec($ch);
        curl_close($ch);
        $responseArray = json_decode($response, true);
          
        if($responseArray["success"] == '1' && $responseArray["action"] == $action && $responseArray["score"] >= 0.5) {
            $showForm = false;
			$process = true;
        } else {
            $error = 'Votre demande a été identifiée comme abusive. Veuillez recharger la page et re-essayer.';
        }
	}
	
	// Process request
	if ($process) {
        
        $log = new Log();
        $log->write($postData);
        
        $certified = $certifiedManager->getByData($postData);
		if ($certified) {
		    $validDate =    DateTimeImmutable::createFromFormat('j/m/y', $certified->getValid_until());
		    $birthDate =    DateTimeImmutable::createFromFormat('j/m/Y', $certified->getBirthdate());
		    $obtained =     DateTimeImmutable::createFromFormat('j/m/Y', $certified->getObtained());
				
			$kind = 'text-white bg-success';
		    $content = 'Ce certificat est conforme.';
		}
		else {
				$certified = $certifiedManager->getById($postData['num_caces']);
				if ($certified) {
				    $kind = 'text-dark bg-warning';
				    $content = 'Ce certificat est existant mais le titulaire ne correspond pas aux informations saisies.';
				}
				else {
				    $kind = 'text-white bg-danger';
				    $content = 'Ce certificat est non conforme ou périmé.';
				}
		}
		
		echo '
		    <div class="card '.$kind.' mb-3">
		        <div class="card-header text-center">
		            '.$postData['num_caces'].'
		        </div>
		        <div class="card-body text-center">
		            '.$content.'
		        </div>
		    </div>
			<div class="mt-4 d-grid gap-2">
				<a href="'.$_SERVER['PHP_SELF'].'" class="btn btn-primary">Effectuer un nouveau contrôle</a>
			</div>';
		
	}
	
	// Main form
	if ($showForm) {
		echo '
					<div class="mb-5 mt-2">
						<p>Utilisez cette interface pour vérifier la validité d\'un certificat CACES délivré par Promotrans.</p>
					</div>';
					
					if ($error) {
						echo '<div class="alert alert-danger" role="alert">'.$error.'</div>';
					}
					
		echo '		<form action="'.$_SERVER['PHP_SELF'].'#form" method="POST" name="checker" id="form_checker">
						<a name="form"></a>
						<div class="input-group mb-3">
							<span class="input-group-text"><strong>N° de certificat</strong></span>
							<input type="text" name="num_caces" id="num_caces" value="'.(!isset($postData['num_caces'])?'':$postData['num_caces']).'" class="form-control" required placeholder="AAAA MM XXX YYY XXXXXX"/>
						</div>
						<div class="input-group mb-3">
							<span class="input-group-text"><strong>Recommandation</strong></span>
							<select class="form-select" id="reference" name="reference">
						    <option selected>...</option>';
						    foreach($references as $reference)
								echo '<option value="'.$reference.'">'.$reference.'</option>';
		echo '				</select>
						</div>
						<div class="input-group mb-3" id="category_block">
							<span class="input-group-text"><strong>Catégorie</strong></span>
							<input type="text" name="category" id="category" value="'.(!isset($postData['category'])?'':$postData['category']).'" class="form-control" required />
						</div>
						<div class="input-group mb-3">
							<span class="input-group-text"><strong>Nom</strong></span>
							<input type="text" name="lastname" id="lastname" value="'.(!isset($postData['lastname'])?'':$postData['lastname']).'" class="form-control" required />
						</div>
						<div class="input-group mb-3">
							<span class="input-group-text"><strong>Prénom</strong></span>
							<input type="text" name="firstname" id="firstname" value="'.(!isset($postData['firstname'])?'':$postData['firstname']).'" class="form-control" required />
						</div>
						<div class="input-group mb-3">
							<span class="input-group-text"><strong>Date de naissance</strong></span>
							<input type="text" name="birthdate" id="birthdate" value="'.(!isset($postData['birthdate'])?'':$postData['birthdate']).'" class="form-control" required placeholder="JJ/MM/AAAA" inputmode="numeric" />
						</div>
						<div class="input-group mb-3">
							<span class="input-group-text"><strong>Date d\'obtention</strong></span>
							<input type="text" name="obtained" id="obtained" value="'.(!isset($postData['obtained'])?'':$postData['obtained']).'" class="form-control" required placeholder="JJ/MM/AAAA" inputmode="numeric" />
						</div>
						<div class="input-group mb-3">
							<span class="input-group-text"><strong>Date de validité</strong></span>
							<input type="text" name="valid_until" id="valid_until" value="'.(!isset($postData['valid_until'])?'':$postData['valid_until']).'" class="form-control" required placeholder="JJ/MM/AAAA" inputmode="numeric" />
						</div>
						<div class="mt-4 d-grid gap-2">
							<button type="submit" class="btn btn-primary">Contrôler ce certificat</button>
							<div style="clear: both;"></div>
						</div>
					</form>';
	}
	
	echo '		</div>
			</div>';
	
	include('templates/footer.php');