false, 'message' => 'Mauvais JSON']); exit; } } require_once "php/inc_fonctions.php"; global $vDomaine; $strAction = $intEvenement = $intNewNoBib = $intEpreuveCommandee = $intEpreuve = $intPartipcipant = $intQuantite = $strLangue = ''; //$_POST['request_type'] ="check_email"; //$_POST['email'] ="stepan@progiweb.ca"; //$_POST['nom']="stephan test"; //$_POST['description']="description "; //$_POST['typedemande']="test sl"; //$_POST['summary']="sujet"; $typedemande = (int)($_POST['typedemande'] ?? 4); if (isset($_POST['request_type'] )) { $strAction = $_POST['request_type']; } $tabRetour = array(); $tabRetour['success']=false; switch($strAction) { case 'check_email': $result=jira_recherche_email($_POST['email']); if($result['success']==false){ //cree le user $result=jira_creer_user($_POST['email'],$_POST['nom']); if($result['success']==true){ $tabRetour['success']=true; $tabRetour['accountId']=$result['statut']['accountId'] ; }else{ $tabRetour['success']=false; $tabRetour['accountId']=""; }; }else{ //retourne le id $tabRetour['success']=true; $tabRetour['accountId']= $result['jira']['accountId']; } if($tabRetour['success']==true){ // creer le jira $data['serviceDeskId'] = 2; // Remplacez par l'ID réel de votre Service Desk $data['requestTypeId'] = (string)$typedemande; // Remplacez par l'ID réel du type de demande $data['summary']=$_POST['summary']; $data['description']=$_POST['description']; $data['typedemande']=$_POST['typedemande']; $data['raiseOnBehalfOf']= $_POST['email'] ; $tabRetourtemp=jira_create_ticket($data); $tabRetour['success']=true; }else { $tabRetour['success']=false; $tabRetour['accountId']= ""; } break; case 'check_emailold': $result=jira_recherche_email($_POST['email']); if($result['success']==false){ //cree le user $result=jira_creer_user($_POST['email'],$_POST['nom']); if($result['success']==true){ $tabRetour['success']='success'; $tabRetour['accountId']=$result['statut']['accountId'] ; }else{ $tabRetour['success']=false; $tabRetour['accountId']=""; }; }else{ //retourne le id $tabRetour['success']=true; $tabRetour['accountId']= $result['jira']['accountId']; } if($tabRetour['success']==true){ // creer le jira $data['serviceDeskId'] = 2; // Remplacez par l'ID réel de votre Service Desk $data['requestTypeId'] = (string)$typedemande; // Remplacez par l'ID réel du type de demande $data['summary']=utf8_encode($_POST['summary']); $data['description']=utf8_encode($_POST['description']); $data['typedemande']=utf8_encode($_POST['typedemande']); $data['raiseOnBehalfOf']= $_POST['email'] ; $tabRetourtemp=jira_create_ticket($data); $tabRetour['success']=true; }else { $tabRetour['success']=false; $tabRetour['accountId']= ""; } break; case 'no_equipe': case 'no_bib': break; case 'teammates': break; } header('Content-Type: application/json; charset=utf-8'); echo json_encode($tabRetour); exit; function jira_recherche_email($param) { // recherche user $jiraDomain = 'https://progiwebinc.atlassian.net'; // Remplacez par le domaine de votre Jira // API que vous voulez appeler $admin_email = 'stephan@progiweb.ca'; // Remplacez par votre email //$api_token = 'ATATT3xFfGF0DuhOhRUxFlj2hFpLuzYGapJIrhMETB35NnLFi1TyxDszp3tTa8MaadTpT72GfDk9FOpDm07m6HbdXoQ9plDeRvB6OwRnD19VrIqA8M3HmDGgf_MWR7Pwk5731ahbgb4UBdRgj-ICBqt9A0SjJPnnoTfu4ECVh51HjM0RsekOmeM=908B030C'; // Remplacez par votre jeton d'API //ms1inscription v4 $api_token = 'ATATT3xFfGF0Z91qESp8j7uO783qK0E4BWsY8rhPWEmexSa4Rw3c21Spg6hYIkmVgy6Vwzb34RxqFl3sR00Kby_DuY1NdcUJyfPQYZ0_JbeEjAk9ybFgNY8-MBSABMCxzaDk4szTbWupfjxHT8sJxJMvSNxgHPds5FxXaGo2DnZICZu5dXuvWbk=F73E15AE'; $apiEndpoint = '/rest/api/3/user/search?query=email@example.com'; // URL de votre instance Jira // Email à rechercher $email = $param; // Initialiser cURL $ch = curl_init(); // Point de terminaison pour rechercher un utilisateur $url = $jiraDomain . '/rest/api/3/user/search?query=' . urlencode($email); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HTTPHEADER, [ 'Authorization: Basic ' . base64_encode($admin_email . ':' . $api_token), 'Content-Type: application/json', ]); // Exécuter la requête et obtenir la réponse $response = curl_exec($ch); curl_close($ch); // Décoder la réponse JSON $result = json_decode($response, true); $sortie=array(); $sortie['success']=false; // Filtrer pour une correspondance exacte sur l'email $exact_match = null; if (!empty($result)) { foreach ($result as $user) { if (isset($user['emailAddress']) && strtolower($user['emailAddress']) === strtolower($email)) { $sortie['success']=true; $sortie['jira']=$user; $exact_match = $user; break; } } } return $sortie ; } function jira_creer_user($email,$displayName) { $jiraDomain = 'https://progiwebinc.atlassian.net'; // Remplacez par le domaine de votre Jira // API que vous voulez appeler $userEmail = 'stephan@progiweb.ca'; // Remplacez par votre email $apiToken = 'ATATT3xFfGF0Z91qESp8j7uO783qK0E4BWsY8rhPWEmexSa4Rw3c21Spg6hYIkmVgy6Vwzb34RxqFl3sR00Kby_DuY1NdcUJyfPQYZ0_JbeEjAk9ybFgNY8-MBSABMCxzaDk4szTbWupfjxHT8sJxJMvSNxgHPds5FxXaGo2DnZICZu5dXuvWbk=F73E15AE'; // Remplacez par votre jeton d'API $apiEndpoint = '/rest/servicedeskapi/customer'; // Encodage de l'authentification en Base64 $authHeader = base64_encode("$userEmail:$apiToken"); // Corps de la requête $postData = json_encode([ 'email' => $email, 'displayName' => $displayName ]); // Initialisation de cURL $ch = curl_init("$jiraDomain$apiEndpoint"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_HTTPHEADER, [ "Authorization: Basic $authHeader", "Content-Type: application/json", "Accept: application/json" ]); curl_setopt($ch, CURLOPT_POSTFIELDS, $postData); // Exécuter la requête $response = curl_exec($ch); $result = json_decode($response, true); $sortie=array(); $sortie['statut']=false; // Gérer les erreurs if (curl_errno($ch)) { // echo 'Erreur cURL : ' . curl_error($ch); $sortie['statut']=curl_error($ch); } else { // Vérifier le code HTTP pour voir si le client existe déjà $httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE); if ($httpcode == 201) { // echo "Le client a été créé avec succès."; $sortie['success']=true; $sortie['statut']= $result; } elseif ($httpcode == 400) { // Traiter le cas où l'email existe déjà $responseData = json_decode($response, true); $sortie['success']=true; if (isset($responseData['errors']) && strpos($responseData['errors'][0]['message'], 'already exists') !== false) { // echo "Le client avec cet email existe déjà."; $sortie['success']=true; $sortie['existe']=true; $sortie['statut']= $result; } else { //echo "Une erreur s'est produite : " . $response; $sortie['statut']= $result; $sortie['success']=true; $sortie['existe']=true; } } else { $sortie['success']=false; // echo "Erreur inattendue : " . $response; $sortie['statut']= $result; } } // Fermer la session cURL curl_close($ch); return($sortie); } function jira_create_ticket( $param) { // Domaine Jira $jiraDomain = 'https://progiwebinc.atlassian.net'; // Remplacez par le domaine de votre Jira // Informations d'authentification $userEmail = 'stephan@progiweb.ca'; // Remplacez par votre email $apiToken = 'ATATT3xFfGF0Z91qESp8j7uO783qK0E4BWsY8rhPWEmexSa4Rw3c21Spg6hYIkmVgy6Vwzb34RxqFl3sR00Kby_DuY1NdcUJyfPQYZ0_JbeEjAk9ybFgNY8-MBSABMCxzaDk4szTbWupfjxHT8sJxJMvSNxgHPds5FxXaGo2DnZICZu5dXuvWbk=F73E15AE'; // Remplacez par votre jeton d'API // Les informations du ticket $data = [ 'serviceDeskId' => $param['serviceDeskId'], 'requestTypeId' => $param['requestTypeId'], 'requestFieldValues' => [ 'summary' => $param['summary'], 'description' => $param['description'], 'customfield_11143' => $param['typedemande'], ], 'raiseOnBehalfOf' => $param['raiseOnBehalfOf'], // Remplacez par l'accountId du client (facultatif) ] ; $jsonData = json_encode($data); // if ($jsonData === false) { // echo "Erreur dans l'encodage JSON : " . json_last_error_msg(); // } else { // echo $jsonData; // Afficher les données encodées // } // Initialiser cURL $ch = curl_init(); // Point de terminaison pour créer une demande $url = $jiraDomain . '/rest/servicedeskapi/request'; curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonData); curl_setopt($ch, CURLOPT_HTTPHEADER, [ 'Authorization: Basic ' . base64_encode($userEmail . ':' . $apiToken), 'Content-Type: application/json; charset=UTF-8', ]); // Exécuter la requête et obtenir la réponse $response = curl_exec($ch); $httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); $sortie['success']=false; $sortie['statut']=""; // Vérifier si le contenu de la réponse est vide if ($response === false || empty($response)) { // Gérer les réponses vides ou erreurs if ($httpcode == 204) { $sortie['success']=true; $sortie['statut'] = "Le ticket a été créé avec succès, mais la réponse est vide (204 No Content)."; } else { $sortie['success']=false; $sortie['statut'] = "Erreur : Le serveur a renvoyé une réponse vide. Code HTTP : " . $httpcode; } } else { // Décoder la réponse JSON seulement si elle n'est pas vide $decoded_response = json_decode($response, true); if ($httpcode == 201) { $sortie['success']=true; $sortie['statut']= $decoded_response; } else { $sortie['success']=false; $sortie['statut']= $response; } } return( $sortie); } function jira_create_ticketold( $param) { // Domaine Jira $jiraDomain = 'https://progiwebinc.atlassian.net'; // Remplacez par le domaine de votre Jira // Informations d'authentification $userEmail = 'stephan@progiweb.ca'; // Remplacez par votre email $apiToken = 'ATATT3xFfGF0Z91qESp8j7uO783qK0E4BWsY8rhPWEmexSa4Rw3c21Spg6hYIkmVgy6Vwzb34RxqFl3sR00Kby_DuY1NdcUJyfPQYZ0_JbeEjAk9ybFgNY8-MBSABMCxzaDk4szTbWupfjxHT8sJxJMvSNxgHPds5FxXaGo2DnZICZu5dXuvWbk=F73E15AE'; // Remplacez par votre jeton d'API // Les informations du ticket $data = [ 'serviceDeskId' => $param['serviceDeskId'], 'requestTypeId' => $param['requestTypeId'], 'requestFieldValues' => [ 'summary' => $param['summary'], 'description' => $param['description'], ], 'raiseOnBehalfOf' => $param['raiseOnBehalfOf'], // Remplacez par l'accountId du client (facultatif) ] ; $jsonData = json_encode($data); // if ($jsonData === false) { // echo "Erreur dans l'encodage JSON : " . json_last_error_msg(); // } else { // echo $jsonData; // Afficher les données encodées // } // Initialiser cURL $ch = curl_init(); // Point de terminaison pour créer une demande $url = $jiraDomain . '/rest/servicedeskapi/request'; curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonData); curl_setopt($ch, CURLOPT_HTTPHEADER, [ 'Authorization: Basic ' . base64_encode($userEmail . ':' . $apiToken), 'Content-Type: application/json; charset=UTF-8', ]); // Exécuter la requête et obtenir la réponse $response = curl_exec($ch); $httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); $sortie['success']=0; $sortie['statut']=""; // Vérifier si le contenu de la réponse est vide if ($response === false || empty($response)) { // Gérer les réponses vides ou erreurs if ($httpcode == 204) { $sortie['success']=1; $sortie['statut'] = "Le ticket a été créé avec succès, mais la réponse est vide (204 No Content)."; } else { $sortie['success']=0; $sortie['statut'] = "Erreur : Le serveur a renvoyé une réponse vide. Code HTTP : " . $httpcode; } } else { // Décoder la réponse JSON seulement si elle n'est pas vide $decoded_response = json_decode($response, true); if ($httpcode == 201) { $sortie['success']=1; $sortie['statut']= $decoded_response; } else { $sortie['success']=0; $sortie['statut']= $response; } } return( $sortie); }