<?php

session_start();
$currentBaseDir = dirname($_SERVER['PHP_SELF']);
include($_SESSION['basedir'] . "core.php");

$svaTool = new svaTool();

//print_r($_REQUEST); 

//echo print_r($_FILES);
$errorCode = 0;

$password = NULL;
$confPasswd = NULL;
// Ajout de nouvel utilisateur

$ticketId = addslashes($_REQUEST['ticketId']);

$callModule = addslashes($_REQUEST['callModule']);

if (isset($_REQUEST['comment']) && strlen($_REQUEST['comment']) > 0) {
    $comment = addslashes($_REQUEST['comment']);
} else
    $errorCode = 3;


 $mobileNumber = addslashes($_REQUEST['mobileNumber']);



if ($dba->checkSaveTicketDetails($ticketId) == 0) {

    $errorCode = 1;
}

$userId = $_SESSION['ownerId'];
$profileId = $_SESSION['right'];

$fileAttachments = array();

if (isset($_FILES['file']) && $_FILES['file']['error'] === UPLOAD_ERR_OK) {
    $uploadDir = 'uploads/';
    if (!is_dir($uploadDir)) {
        mkdir($uploadDir, 0755, true);
    }

    
    $originalFileName = basename($_FILES['file']['name']);
    $fileExtension = pathinfo($originalFileName, PATHINFO_EXTENSION); // Récupérer l'extension
    $fileBaseName = pathinfo($originalFileName, PATHINFO_FILENAME); // Récupérer le nom sans extension

    // Remplacer les espaces par des underscores
    $fileBaseName = preg_replace('/\s+/', '_', $fileBaseName);

    //date('dmY_His')
    $currentDate = date('dmY');
    $newFileName = "{$fileBaseName}_{$currentDate}.{$fileExtension}";

    $uploadFilePath = $uploadDir . $newFileName;

    // Déplacer le fichier téléchargé
    if (move_uploaded_file($_FILES['file']['tmp_name'], $uploadFilePath)) {
         // Enregistrement du fichier dans la base de données
         $uploadResult = $dba->UploadTicketFiles($newFileName, $uploadFilePath, $ticketId);
         $fileAttachments[] =$uploadFilePath; // Ajouter le chemin au tableau des attachements
       // $errorMessage = "Fichier téléchargé avec succès sous le nom : {$newFileName}";
    } else {
        $errorCode = 14;
       
    }
} else if (isset($_FILES['file'])) {
    $errorCode =15;
}


if ($errorCode == 0) {
    
    $dba->UploadTicketHistory($userId, $profileId, $ticketId, 0, $comment, 3);
    $currentDateClosure = date('Y-m-d H:i:s');
    $dba->updateTicketByStatus($ticketId,$currentDateClosure, 3);

  

    $queryres = $dba->getSCCStdTicketDetailsByTicket($ticketId);

    if ($queryres[0]['fwdBy'] != "") {

        $eRes = $dba->getSystemUserById($userId);

        $ccList = $eRes['email_v'];

        $subject = " NOTIFICATION TICKET N° " . $ticketId;
        $ccList = rtrim($ccList, ",");
        $attachments = "";

        $content = $svaTool->prepareMailEventBody($ticketId, $queryres[0]['fwdBy'], $queryres[0]['fwdTo'], $queryres[0]['priorityName'], $queryres[0]['clientComment'], $moduleName, $submoduleName, $queryres[0]['ticket_reason_desc_v'], 'Clos');

        $dba->SCCUploadMailNotification($emailRes[0]['email_v'], $ccList, $subject, $content, $attachments);
    }

    //$errorCode = 10;
   
    $absoluteAttachments = array_map(function($filePath) {
        return "opt/svam/var/www/gui/svam/products/scc/" . $filePath;
    }, $fileAttachments);
    

   // Notification du ticket au mutualiste
   $res = $dba->getSCCTicketDetailByTicket($ticketId);
   $csrDetails = $res[0]['ticket_reason_desc_v'];
   $subject = "AVIS DE FERMETURE DU TICKET N° " . $ticketId . " [ " . $csrDetails . " ] ";
   $ccList = $res[0]['email_id_v'];
   $ccList = rtrim($ccList, ",");
   $attachments = implode(",", $absoluteAttachments);

   $resSla = $dba->getSLABySubMenuId($res[0]['char_field_3']);

   $userres = $dba->getUserDetailById($res[0]['user_id_n']);
   $lastName = $res[0]['last_name_v'];
   
   $agentName = $userres[0]['last_name_v'] . " " . $userres[0]['first_name_v'];

   $moduleres = $dba->getSCCModules($res[0]['reason_category_n']);
   $submoduleres = $dba->getSCCSubModules($res[0]['char_field_3']);

   $content = $svaTool->prepareMailBodyTicketClosure($ticketId, $lastName, $agentName, $csrDetails, $moduleres[0]['motif_name_v'], $submoduleres[0]['motif_name_v'], $resSla[0]['sla_duration_n']);

   $dba->SCCUploadMailNotification("reclamation@mugef-ci.com", $ccList, $subject, $content, $attachments);


 sleep(1);

   // Email de satisfaction
   $res = $dba->getSCCTicketDetailByTicket($ticketId);
   $subject ="AVIS DE SATISFACTION DU TICKET N° " .$ticketId ;
   $subject2="AVIS DE SATISFACTION DU TICKET N° " .$ticketId;
   $ccList = $res[0]['email_id_v'];
   $ccList = rtrim($ccList, ",");
   $attachments = implode(",", $absoluteAttachments);

   $resSla = $dba->getSLABySubMenuId($res[0]['char_field_3']);

   $userres = $dba->getUserDetailById($res[0]['user_id_n']);
   $lastName = $res[0]['last_name_v'];
   //echo $lastName;
   
   $agentName = $userres[0]['last_name_v'] . " " . $userres[0]['first_name_v'];
   $mat = $dba->getSCCTicketDetailByTicket($ticketId);
        // var_dump($Res);
        $matricule = $mat[0]['location_v'];
       // var_dump($matricule);
   

   $moduleres = $dba->getSCCModules($res[0]['reason_category_n']);
   $submoduleres = $dba->getSCCSubModules($res[0]['char_field_3']);

   $content = $svaTool->prepareMailBodyClosureSatisfactionMessage($ticketId, $lastName,$matricule, $agentName, $csrDetails, $moduleres[0]['motif_name_v'], $submoduleres[0]['motif_name_v'], $resSla[0]['sla_duration_n']);

   $dba->SCCUploadMailNotification("reclamation@mugef-ci.com", $ccList, $subject2, $content, $attachments);
   //echo $dba;
  
 
    // Fin Email de satisfaction

//var_dump($res);
    // envoie SMS cloture
    function envoyerSMS($matricule, $tel, $msg) {
        $url = "https://apps.mugef-ci.org/ords/partner/svam/sms/sender";
        $token = "929c39cc4915d2dada2472ffe8feddccb7defa9b2eaff05aaade5360c3f4d02b"; // token
    
        // Données à envoyer
        $data = json_encode(array(
            "matricule" => $matricule,
            "tel" => $tel,
            "msg" => $msg
        ));
    
        // Initialiser cURL
        $ch = curl_init($url);
    
        // Configurer les options cURL
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_HTTPHEADER, array(
            'Content-Type: application/json',
            'authToken: ' . $token
        ));
        curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

        // Désactiver la vérification SSL 
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
    
        // Exécuter la requête
        $response = curl_exec($ch);
    
        // Vérifier les erreurs cURL
        if (curl_errno($ch)) {
         //   echo 'Erreur cURL : ' . curl_error($ch);
        } else {
            // La réponse correcte
          //  echo 'Réponse : ' . $response;
        }
    
        // Fermer la session cURL
        curl_close($ch);
    }

    // Récupérer les détails champ matricule et numero du ticket 

            $Res = $dba->getSCCTicketDetailByTicket($ticketId);
            // var_dump($Res);
            $matricule = $Res[0]['location_v'];
            $tel = $Res[0]['contact_v'];
           
            $msg=" Cher Mutualiste,Votre réclamation référencée " . $ticketId . " a été traitée avec succès. Nous vous remercions pour votre confiance. ";         
             
    //Appel de la fonction envoi SMS cloture
    envoyerSMS($matricule,$tel,$msg);

 sleep(1);

 function envoyerSMSsatisfaction($matricule, $tel, $msg) {
    $url = "https://apps.mugef-ci.org/ords/partner/svam/sms/sender";
    $token = "929c39cc4915d2dada2472ffe8feddccb7defa9b2eaff05aaade5360c3f4d02b"; // token


    // Données à envoyer
    $data = json_encode(array(
        "matricule" => $matricule,
        "tel" => $tel,
        "msg" => $msg
    ));

    // Initialiser cURL
    $ch = curl_init($url);

    // Configurer les options cURL
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_HTTPHEADER, array(
        'Content-Type: application/json',
        'authToken: ' . $token
    ));
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

    // Désactiver la vérification SSL 
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);

    // Exécuter la requête
    $response = curl_exec($ch);

    // Vérifier les erreurs cURL
    if (curl_errno($ch)) {
       // echo 'Erreur cURL : ' . curl_error($ch);
    } else {
        // La réponse correcte
     //  echo 'Réponse : ' . $response;
    }

    // Fermer la session cURL
    curl_close($ch);
}
// Récupération des informations nécessaires avec la méthode $dba->getSCCTicketDetailByTicket
$Res = $dba->getSCCTicketDetailByTicket($ticketId);
if (!$Res || empty($Res[0]['location_v']) || empty($Res[0]['contact_v'])) {
   // error_log("Erreur : Informations de ticket introuvables ou incomplètes pour le ticket $ticketId");
    return;
}

$matricule = $Res[0]['location_v'];
$tel = $Res[0]['contact_v'];

// Traiter le lastname pour retirer le premier mot
$lastNameFull = $Res[0]['last_name_v'];
$lastNameParts = explode(' ', $lastNameFull); // Divise par espaces
$lastName = implode(' ', array_slice($lastNameParts, 1));

// Construire l'URL dynamique
$baseUrl = "http://avisreclamations.mugef-ci.com:9010/";
$queryParams = http_build_query([
    'ticket' => $ticketId,
    'firstname' => $Res[0]['first_name_v'] ,
    'lastname' => $lastName ,  
    'matricule' => $matricule,
]);
$dynamicUrl = $baseUrl . '?' . $queryParams;

// Construire le message avec l'URL
$msg = "Cher Mutualiste, Nous aimerions recueillir votre avis à la suite du traitement de votre réclamation pour améliorer nos services. " .
       "Pour répondre à notre enquête, veuillez cliquer sur le lien suivant : " . $dynamicUrl;

// Appeler la fonction pour envoyer le SMS
envoyerSMSsatisfaction($matricule, $tel, $msg);

// Tableau des correspondances entre les modules et les adresses email
$mailDonnees = array( 
    16 => "servicegestiondessouscriptions@mugef-ci.com", // ID pour Promotion
    10 => "traitement.cotisation@mugef-ci.com, serviceappeldecotisations@mugef-ci.com", // ID pour Cotisation
    14 => "codirdgprs@mugef-ci.com", // ID pour Liquidation des prestations
    13 => "controlemedical@mugef-ci.com", // ID pour Prestations et contrôle médical
    9 => "reclamations.dgb@mugef-ci.com",// ID pour Immatriculation   
    36 => "dmed@mugef-ci.com", // ID pour systeme d'information  
    18 =>"finances@mugef-ci.com" // ID pour Trésorerie 
);

$res = $dba->getSCCTicketDetailByTicket($ticketId);
// Vérifier si le module a une adresse email définie
if (isset($mailDonnees[$res[0]['reason_category_n']])) {
    $emailAddresses = $mailDonnees[$res[0]['reason_category_n']]; // Récupérer l'adresse email correspondante
   // var_dump($res[0]['reason_category_n']);
   // var_dump($emailAddresses);
   // echo "DEBUG: Module trouvé pour \$callModule $callModule , envoi à l'adresse: " . $emailAddresses ;

    // Préparer l'objet et le corps du mail
    
   $subject = "AVIS DE FERMETURE DU TICKET N° " . $ticketId . " [ " . $csrDetails . " ] ";
   $attachments = implode(",", $absoluteAttachments);

   $resSla = $dba->getSLABySubMenuId($res[0]['char_field_3']);
   $userres = $dba->getUserDetailById($res[0]['user_id_n']);
   
   $agentName = $userres[0]['last_name_v'] . " " . $userres[0]['first_name_v'];

   $moduleres = $dba->getSCCModules($res[0]['reason_category_n']);
   $submoduleres = $dba->getSCCSubModules($res[0]['char_field_3']);

    // $content = $svaTool->prepareMailBodyTicketCreation($csrId, $lastName, $agentName, $csrDetails, $moduleres[0]['motif_name_v'], $submoduleres[0]['motif_name_v'], $resSla[0]['sla_duration_n']);
     $content = $svaTool->prepareMailBodyTicketClosure($ticketId, $lastName, $agentName, $csrDetails, $moduleres[0]['motif_name_v'], $submoduleres[0]['motif_name_v'], $resSla[0]['sla_duration_n']);
    // Enregistrer la notification dans la base de données pour envoi de mail
    $dba->SCCUploadMailNotification("reclamation@mugef-ci.com", $emailAddresses, $subject, $content, $attachments);

    if ($result) {
    //    echo "INFO: Notification enregistrée avec succès pour l'envoi d'email.";
    } else {
      //  echo "ERROR: Échec de l'enregistrement de la notification pour l'envoi d'email.";
    }
}
    else {
    // Log pour indiquer qu'aucune adresse email n'a été trouvée pour ce module
 //  echo "WARNING: Aucune adresse email définie pour \$callModule " . $res[0]['reason_category_n'] . ". Aucun email ne sera envoyé.";
}



    
}




switch ($errorCode) {

    case 0 : $msg = "{ \"errorCode\": $errorCode,\"errorMessage\" :\"TICKET CLÔTURE AVEC SUCCES !\"  }";
        break;
    case 1 : $msg = "{ \"errorCode\": $errorCode,\"errorMessage\" :\"ERREUR ! VEUILLEZ ENREGISTRER LE TICKET AVANT DE TRANSFERER !\"  }";
        break;
    case 2 : $msg = "{ \"errorCode\": $errorCode,\"errorMessage\" :\"ERREUR ! VEUILLEZ SELECTIONNER  LE PROFIL!\"  }";
        break;

    case 3 : $msg = "{ \"errorCode\": $errorCode,\"errorMessage\" :\"ERREUR ! VEUILLEZ ECRIRE UN COMMENTAIRE! \"  }";
        break;

    case 14: $msg = "{ \"errorCode\": $errorCode,\"errorMessage\" :\"ERREUR ! ! UN PROBLEME LORS DE ENREGISTREMENT DU FICHIER SELECTIONNE ! \"  }";
        break;
    case 15: $msg = "{ \"errorCode\": $errorCode,\"errorMessage\" :\"ERREUR ! AUCUN FICHIER N'A ÉTÉ TÉLÉCHARGÉ.\"  }";
        break;
    /*   case 4 : $msg = "{ \"errorCode\": $errorCode,\"errorMessage\" :\"ERREUR ! VEUILLEZ SELECTIONNER LA STRATEGIE DES APPELS ENTRANTS.\"  }";
      break;
      /* case 5 : $msg = "{ \"errorCode\": $errorCode,\"errorMessage\" :\"ERREUR ! LE LOGIN EST INVALIDE.\"  }";
      break;
      case 6 : $msg = "{ \"errorCode\": $errorCode,\"errorMessage\" :\"ERREUR ! L'EMAIL EST INVALIDE.\"  }";
      break;
      /*case 7 : $msg =  "ERREUR ! LE MOT DE PASSE EST INVALIDE.";
      break;
      case 8 : $msg = "{ \"errorCode\": $errorCode,\"errorMessage\" :\"ERREUR ! LE MOT DE PASSE DE CONFIRMATION EST INVALIDE .!\"  }";
      break;
      case 9 : $msg = "{ \"errorCode\": $errorCode,\"errorMessage\" :\"ERREUR ! LES MOTS DE PASSE NE CONCORDENT PAS.\"  }";
      break; */
    case 13 : $msg = "{ \"errorCode\": $errorCode,\"errorMessage\" :\"ERREUR ! IMPOSSIBLE DE CREER LE COMPTE. VEUILLEZ RE-ESSAYER ULTERIEUREMENT!\"  }";
        break;
    /*
      case 14 : $msg = "{ \"errorCode\": $errorCode,\"errorMessage\" :\"ERREUR ! VEUILLEZ SELECTIONNER LE PLAN TARIFAIRE ASSOCIE AU COMPTE !\"  }";   break; */
}


echo $msg;
?>