menuvue = new Menuvueutilisateur(); $this->menuvue->getMenuVue('Fichebeneficiaire'); $this->beneficiaire = new Beneficiaire(); $this->police = new Police(); $this->garantieadherent = new Garantieadherent(); $_SESSION['modeDevis'] = "0"; } public function index() { $this->beneficiaire->getModeBiometrie(); $codeSociete = $this->requete->getSession()->getAttribut('codeSociete'); $id = $this->requete->getParametre("id"); $idBeneficiaire = $id; $this->beneficiaire->getContexteBeneficiaireId($id); $codeTypeContrat = $_SESSION['codeTypeContrat']; $idPolice = $_SESSION['idPolice_C']; $this->police->getContextePoliceId($idPolice); $this->beneficiaire->getContexteBeneficiaireId($idBeneficiaire); $idAdherent = $_SESSION['idAdherent_C']; $garantieadherents = $this->garantieadherent->getGarantieBeneficiaire($idBeneficiaire); $message = ""; $nouveau_fichier = "Rien"; if(!empty($_POST)) { // define('TARGET', $_SESSION['dossierSociete'].'/Photos/'); // Repertoire cible define('TARGET', $_SESSION['lienPhotoFace']); // Repertoire cible define('MAX_SIZE', 100000); // Taille max en octets du fichier define('WIDTH_MAX', 800); // Largeur max de l'image en pixels define('HEIGHT_MAX', 800); // Hauteur max de l'image en pixels $tabExt = array('jpg','png','jpeg'); // Extensions autorisees $infosImg = array(); $extension = ''; $nomImage = ''; if( !is_dir(TARGET) ) { if( !mkdir(TARGET, 0755) ) { $message = est_anglophone() ? 'Error: the target directory cannot be created! Please check that you have sufficient rights to do so or create it manually!' : 'Erreur : le répertoire cible ne peut-être créé ! Vérifiez que vous disposiez des droits suffisants pour le faire ou créez le manuellement !'; } } /* var_dump($_FILES); exit(); */ if( !empty($_FILES['fichier_image_a_uploader']['name']) ) { if(!empty($_FILES['fichier_image_a_uploader']['tmp_name'])) { $extension = pathinfo($_FILES['fichier_image_a_uploader']['name'], PATHINFO_EXTENSION); if(in_array(strtolower($extension),$tabExt)) { $infosImg = getimagesize($_FILES['fichier_image_a_uploader']['tmp_name']); // On verifie le type de l'image if($infosImg[2] >= 1 && $infosImg[2] <= 14) { // Parcours du tableau d'erreurs if(isset($_FILES['fichier_image_a_uploader']['error']) && UPLOAD_ERR_OK === $_FILES['fichier_image_a_uploader']['error']) { // On renomme le fichier temporaire $rand = rand(1,1000000); $nomImageTemp = $_SESSION['numeroBeneficiaire_C']."_".$rand.'.'. $extension; // Si c'est OK, on teste l'upload if(move_uploaded_file($_FILES['fichier_image_a_uploader']['tmp_name'], TARGET.$nomImageTemp)) { $src = TARGET.$nomImageTemp; // On va réduire la taille de l'image // On renomme le fichier $rand = rand(1,1000000); $nomImage = $_SESSION['numeroBeneficiaire_C']."_".$rand.'.jpg'; $imgtype = image_type_to_mime_type($infosImg[2]); switch ($imgtype) { case 'image/jpeg': $source_image = imagecreatefromjpeg($src); break; case 'image/jpg': $source_image = imagecreatefromjpeg($src); break; case 'image/png': $source_image = imagecreatefrompng($src); break; } $width = imagesx($source_image); $desired_width = $width; if ($desired_width > $_SESSION['largeurPhoto']) { $desired_width = $_SESSION['largeurPhoto']; } $height = imagesy($source_image); $desired_height = floor($height * ($desired_width / $width)); $virtual_image = imagecreatetruecolor($desired_width, $desired_height); imagecopyresampled($virtual_image, $source_image, 0, 0, 0, 0, $desired_width, $desired_height, $width, $height); imagejpeg($virtual_image, TARGET.$nomImage, -1); $nouveau_fichier = $nomImage; $message = 'Chargement réussi !'; $this->beneficiaire->changerPhoto($id, $nomImage); $this->beneficiaire->registerface($_SESSION['numeroBeneficiaire_C']); $_SESSION['lienPhoto_C'] = $nomImage; unlink(TARGET.$nomImageTemp); $this->rediriger("Fichebeneficiaire/".$idBeneficiaire); } else { // Sinon on affiche une erreur systeme $message = est_anglophone() ? 'Problem while loading!' : 'Problème lors du chargement !'; } } else { $message = est_anglophone() ? 'An internal error prevented loading' : 'Une erreur interne a empêché le chargement'; } } else { // Sinon erreur sur le type de l'image $message = est_anglophone() ? 'The file to upload is not an image!' : 'Le fichier à charger n\'est pas une image !'; } } else { // Sinon on affiche une erreur pour l'extension $message = est_anglophone() ? 'The file extension is incorrect!' : 'L\'extension du fichier est incorrecte !'; } } else { // Sinon on affiche une erreur pour l'extension $message = est_anglophone() ? 'Check your image file!' : 'Revoir votre fichier image!'; } } else { // Sinon on affiche une erreur pour le champ vide $message = est_anglophone() ? 'Please select a file!' : 'Veuillez sélectionner un fichier SVP!'; } // fin upload } // dans tous les cas, on lance la page !!! // On charge maintenant les infos du béneficiaire $beneficiaire = $this->beneficiaire->getBeneficiaireId($id); $_SESSION['dateEffetCouvert'] = $beneficiaire['dateEffetCouvert']; $this->beneficiaire->controlerplafondbeneficiaireannuel($idBeneficiaire); $limite_beneficiaire = $this->garantieadherent->getLimitesBeneficiaire($idBeneficiaire); $limite_adherent = $this->garantieadherent->getLimitesAdherent($idAdherent); $prestationsParMois = $this->beneficiaire->getPrestationsmensuelles($idBeneficiaire); // Extraction directe des colonnes avec array_column $tabConsoParMois = [ 'mois' => array_column($prestationsParMois, 'mois'), 'consos' => array_column($prestationsParMois, 'consommationBeneficiaire') ]; $tabConsoParGaranties = [ 'garanties' => array_column($garantieadherents, 'codeGarantie'), 'depenses' => array_column($garantieadherents, 'consommation'), 'plafonds' => array_column($garantieadherents, 'plafond') ]; // Encodage JSON $dataConsoParMois = json_encode($tabConsoParMois, JSON_NUMERIC_CHECK); $dataConsoParGaranties = json_encode($tabConsoParGaranties, JSON_NUMERIC_CHECK); $this->genererVue(array( 'beneficiaire' => $beneficiaire, 'message' => $message, 'nouveau_fichier' => $nouveau_fichier, 'garantieadherents' => $garantieadherents, 'limite_beneficiaire' => $limite_beneficiaire, 'limite_adherent' => $limite_adherent, 'dataConsoParMois' => $dataConsoParMois, 'dataConsoParGaranties' => $dataConsoParGaranties )); } public function supprimer() { $id = $this->requete->getParametre("id"); $this->beneficiaire->supprimer($id); $this->rediriger("Ficheadherent/".$_SESSION['idAdherent_C']); } /* public function ebeneenregistrerface() { $_SESSION['messageFace'] = ""; if(isset($_POST['image_face'])) { $_SESSION['okId_face'] = "-1"; $_SESSION['okId'] = "-1"; $path = "Temp/"; $extension = "jpeg"; $data = $_POST['image_face']; $data = str_replace('data:image/jpeg;base64,', '', $data); $data = base64_decode($data); $username = $_SESSION['numeroBeneficiaire_C']; $date = date('YmdHis'); $file_name = "img_v_".$date.uniqid().".".$extension; $chemin = $path.$file_name; file_put_contents($chemin, $data); $rand = rand(1,1000000); $nomImage = $username."_".$rand.'.'. $extension; $nomImageCrypte_0 = $username."_".$rand.'.bin'; $nomImageCrypte = $_SESSION['lienPhotoFace'] . $nomImageCrypte_0; $this->beneficiaire->init_traiterlaface('1'); $cheminNew = $_SESSION['lienPhotoFace'] . $nomImage; $_SESSION['okId_face'] = "1"; // réduction de la taille de l'immage $infosImg = getimagesize($chemin); $src = $chemin; $imgtype = image_type_to_mime_type($infosImg[2]); switch ($imgtype) { case 'image/jpeg': $source_image = imagecreatefromjpeg($src); break; case 'image/jpg': $source_image = imagecreatefromjpeg($src); break; case 'image/png': $source_image = imagecreatefrompng($src); break; } $width = imagesx($source_image); $desired_width = $width; if ($desired_width > $_SESSION['largeurPhoto']) { $desired_width = $_SESSION['largeurPhoto']; } $height = imagesy($source_image); $desired_height = floor($height * ($desired_width / $width)); $virtual_image = imagecreatetruecolor($desired_width, $desired_height); imagecopyresampled($virtual_image, $source_image, 0, 0, 0, 0, $desired_width, $desired_height, $width, $height); if (imagejpeg($virtual_image, $cheminNew, -1)) { $this->beneficiaire->registerface($username); $idBeneficiaire = $_SESSION['idBeneficiaire_C']; $this->beneficiaire->changerPhoto($idBeneficiaire, $nomImage); $_SESSION['messageFace'] = "Enrôlement effectué avec succès! / Enrollment completed successfully!!"; $this->genererVueAjax(array('messageFace' => $_SESSION['messageFace'], 'msgErreur' => $_SESSION['messageFace'], 'photo_succes' => "1")); } $this->beneficiaire->resultat_traitement_face($username, '1', ''); unlink($chemin); } } */ public function ebeneenregistrerface() { $_SESSION['messageFace'] = ""; $compare_face = $_POST['compare_face']; $del_face = $_POST['del_face']; if(isset($_POST['image_face'])) { $_SESSION['okId_face'] = "-1"; $_SESSION['okId'] = "-1"; $path = "Temp/"; $extension = "jpeg"; $data = $_POST['image_face']; $data = str_replace('data:image/jpeg;base64,', '', $data); $data = base64_decode($data); $username = $_SESSION['numeroBeneficiaire_C']; $date = date('YmdHis'); $file_name = "img_v_".$date.uniqid().".".$extension; $chemin = $path.$file_name; file_put_contents($chemin, $data); $rand = rand(1,1000000); $nomImage = $username."_".$rand.'.'. $extension; if ($compare_face=="1") { if($del_face=="1") { $this->beneficiaire->init_traiterlaface('3'); } else { $this->beneficiaire->init_traiterlaface('2'); } $arrgs = [ 'credentials' => [ 'key' => 'AKIA2O2PTXQ7XN5OATO3', 'secret' => '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', ], 'version' => 'latest', 'region' => 'us-west-2' ]; $client = new RekognitionClient($arrgs); $sourceImage = $chemin; $targetImage = $_SESSION['dossierPhoto_C'].$_SESSION['dossierSociete'].'/Photos/'.$_SESSION['lienPhoto_C']; try { $result = $client->compareFaces ( [ 'SimilarityThreshold' => 80, 'SourceImage' => [ 'Bytes' => file_get_contents($sourceImage) ], 'TargetImage' => [ 'Bytes' => file_get_contents($targetImage) ], ] ); $faceMatches = count($result['FaceMatches']); if ($faceMatches==0) { $_SESSION['messageFace'] = est_anglophone() ? "The faces do not match!" : "Les faces ne correspondent pas!"; $this->beneficiaire->resultat_traitement_face($username, '0', $_SESSION['messageFace']); $this->genererVueAjax(array('messageFace' => $_SESSION['messageFace'], 'msgErreur' => $_SESSION['messageFace'], 'photo_succes' => "0")); } elseif ($del_face=="1") { $motif = $_POST['motif']; $this->beneficiaire->resultat_traitement_face($username, '1', $motif); $idBeneficiaire = $_SESSION['idBeneficiaire_C']; $this->beneficiaire->supprimerPhoto($idBeneficiaire); $this->beneficiaire->unregisterface($username, $motif); $_SESSION['messageFace'] = est_anglophone() ? "Face removed for reason : $motif" : "Face supprimée pour motif : $motif"; $this->genererVueAjax(array('messageFace' => $_SESSION['messageFace'], 'photo_succes' => "1")); $_SESSION['lienPhoto_C']=""; } else { $this->beneficiaire->resultat_traitement_face($username, '1', ''); $_SESSION['okId_face'] = "1"; $_SESSION['messageFace'] = est_anglophone() ? "Face confirmed!" : "Face confirmée!"; $this->genererVueAjax(array('messageFace' => $_SESSION['messageFace'], 'msgErreur' => $_SESSION['messageFace'], 'photo_succes' => "1")); } } catch (Exception $e) { echo 'Message: ' .$e->getMessage(); // exit(); $msgErreur = $e->getMessage(); $_SESSION['messageFace'] = $msgErreur; $this->beneficiaire->resultat_traitement_face($username, '9', $msgErreur); $this->genererVueAjax(array('messageFace' => $_SESSION['messageFace'], 'msgErreur' => $_SESSION['messageFace'], 'photo_succes' => "0")); } } else { $this->beneficiaire->init_traiterlaface('1'); $cheminNew = $_SESSION['lienPhotoFace'] . $nomImage; $_SESSION['okId_face'] = "1"; // réduction de la taille de l'immage $infosImg = getimagesize($chemin); $src = $chemin; $imgtype = image_type_to_mime_type($infosImg[2]); switch ($imgtype) { case 'image/jpeg': $source_image = imagecreatefromjpeg($src); break; case 'image/jpg': $source_image = imagecreatefromjpeg($src); break; case 'image/png': $source_image = imagecreatefrompng($src); break; } $width = imagesx($source_image); $desired_width = $width; if ($desired_width > $_SESSION['largeurPhoto']) { $desired_width = $_SESSION['largeurPhoto']; } $height = imagesy($source_image); $desired_height = floor($height * ($desired_width / $width)); $virtual_image = imagecreatetruecolor($desired_width, $desired_height); imagecopyresampled($virtual_image, $source_image, 0, 0, 0, 0, $desired_width, $desired_height, $width, $height); if (imagejpeg($virtual_image, $cheminNew, -1)) // if (imagejpeg($virtual_image, $cheminNew, 60)) { $this->beneficiaire->registerface($username); $idBeneficiaire = $_SESSION['idBeneficiaire_C']; $this->beneficiaire->changerPhoto($idBeneficiaire, $nomImage); $_SESSION['messageFace'] = est_anglophone() ? "Enrollment completed successfully!" : "Enrôlement effectué avec succès!"; $this->genererVueAjax(array('messageFace' => $_SESSION['messageFace'], 'msgErreur' => $_SESSION['messageFace'], 'photo_succes' => "1")); } $this->beneficiaire->resultat_traitement_face($username, '1', ''); } unlink($chemin); } } }