<?php

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

$svaTool = new svaTool();

$errorCode = 0;

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

if (isset($_REQUEST['callReasonType']) && $_REQUEST['callReasonType'] != "-1")
    $callReasonType = addslashes($_REQUEST['callReasonType']);
else
    $errorCode = 1;


if (isset($_REQUEST['csrDetails']) && strlen($_REQUEST['csrDetails']) > 0)
    $csrDetails = addslashes($_REQUEST['csrDetails']);
else
    $errorCode = 2;

if (isset($_REQUEST['csrComment']) && strlen($_REQUEST['csrComment']) > 0)
    $csrComment = addslashes($_REQUEST['csrComment']);



if (isset($_REQUEST['firstName']) && strlen($_REQUEST['firstName']) > 0)
    $firstName = addslashes($_REQUEST['firstName']);
else
    $errorCode = 5;

if (isset($_REQUEST['company']) && strlen($_REQUEST['company']) > 0)
    $company = addslashes($_REQUEST['company']);
else
    $errorCode = 6;

// Vérification de l'email uniquement s'il est renseigné
if (!empty($_REQUEST['emailId'])) {
    if (filter_var($_REQUEST['emailId'], FILTER_VALIDATE_EMAIL)) {
        $emailId = addslashes($_REQUEST['emailId']);
    } else {
        $errorCode = 7; 
    }
} else {
    $emailId = ""; // Assigne une valeur vide si aucun email n'est fourni
}
/*
  if (isset($_REQUEST['callerNumber']) && strlen($_REQUEST['callerNumber'])>0 && is_numeric($_REQUEST['callerNumber']) )
  $callerNumber = addslashes($_REQUEST['callerNumber']);
  else
  $errorCode = 8;
 */








$csrId = addslashes($_REQUEST['csrId']);
$callerId = addslashes($_REQUEST['callerId']);
$firstName = addslashes($_REQUEST['firstName']);
$lastName = addslashes($_REQUEST['lastName']);

//$address = addslashes($_REQUEST['address']);
$mobileNumber = addslashes($_REQUEST['mobileNumber']);
$emailId = addslashes($_REQUEST['emailId']);
$callId = addslashes($_REQUEST['callId']);
$userId = $_SESSION['ownerId'];
$statut = addslashes($_REQUEST['operationId']);
$actionType = addslashes($_REQUEST['actionType']);
$callType = addslashes($_REQUEST['callType']);


$fileAttachments = array();
$fileData = "";

if (isset($_FILES['listDeFichier']['name'][0]) && strlen($_FILES['listDeFichier']['name'][0]) > 0) {

    $countfiles = count($_FILES['listDeFichier']['name']);

    if ($countfiles > 0) {

        $totalFileUploaded = 0;
        for ($i = 0; $i < $countfiles; $i++) {
            $filename = $_FILES['listDeFichier']['name'][$i];

            $fileData[$i]['name'] = $filename;

            ## Location

            $location = "uploads/" . $filename;
            $extension = pathinfo($location, PATHINFO_EXTENSION);
            $extension = strtolower($extension);
            $location = "uploads/filename_" . $userId . "_" . $i . "_" . date("Ymdhis");
            $fileData[$i]['path'] = $location . "." . $extension;
            // echo $extension;
            ## File upload allowed extensions
            $valid_extensions = array("pdf");

            $response = 0;
            ## Check file extension
            if (in_array(strtolower($extension), $valid_extensions)) {
                ## Upload file
                if (move_uploaded_file($_FILES['listDeFichier']['tmp_name'][$i], $fileData[$i]['path'])) {

                    $fileAttachments[] =$fileData[$i]['path']; // Ajouter le chemin au tableau des attachements

                    $totalFileUploaded++;
                }
            } else {

                $errorCode = 14;
            }
        }
    } else {

        $errorCode = 15;
    }
}
else {

        $errorCode = 15;
    }



/* * *********** Nouvelles données ********** */

if (isset($_REQUEST['callModule']) && $_REQUEST['callModule'] != "-1")
$callModule = addslashes($_REQUEST['callModule']);
else
    $errorCode = 10;

if (isset($_REQUEST['submodule']) && $_REQUEST['submodule'] != "-1")
$submodule = addslashes($_REQUEST['submodule']);
else
        $errorCode = 11;


if (isset($_REQUEST['callprority']) && $_REQUEST['callprority'] != "-1")
    $callprority = addslashes($_REQUEST['callprority']);


$formId = $_REQUEST['formId'];

$employerName = $_REQUEST['employer'];
$beneficiaryName = $_REQUEST['destContactName'];
$beneficiaryId = $_REQUEST['destMatricule'];
$analysisCause = $_REQUEST['csrAnalysisCause'];

$complaintAnalysis = $_REQUEST['csrAnalysisComment'];
$analysisDecision = $_REQUEST['csrDecisionComment'];

if ($errorCode == 0) {
    $id = 0;
    $field[0] = date('Y-m-d H:i:s');
    $field[1] = '';
    $field[2] = '';
    $field[3] = '';
    $field[4] = '';
    $callerNumber = null;
    $csrId = $dba->getCSRID("crm");
    $agencyName = $dba->getSCCAgencyByUserId($userId);
    $res = $dba->AddTicketExtend(1, $firstName, $lastName, $callId, $userId, $csrId, $callerId, $company, $company, $mobileNumber, $emailId, $callReasonType, $csrDetails, $callType, $actionType, $customerType, $agencyName, $callModule, $submodule, $callprority, $formId);
    
    

    $customerName = $firstName . " " . $lastName;
    $dba->UpdateAddSCCCustomer(0, 0, $firstName, $lastName, $mobileNumber, "", $company, $emailId, $field);
    $dba->UpdateAddComment($id, $userId, $csrId, $csrDetails, 0, $customerName, 0);
    sleep(1);
    $dba->UpdateAddComment($id, $userId, $csrId, $csrComment, 1, $customerName, 0);

    $dba->UpdateCallHistory($callId, $statut);
    $dba->UploadTicketHistory($userId, $profileId, $csrId, $type, $comment, $actionType);

    $dba->UpdateAddDelMugefciSupInfo(0, 0, $csrId, $employerName, $beneficiaryName, $beneficiaryId, $analysisCause, $complaintAnalysis, $analysisDecision, 0);
 

    
// envoie SMS   
    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; charset=UTF-8',
            '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 ' La Réponse de envoi SMS : ' . $response;
        }
    
        // Fermer la session cURL
        curl_close($ch);
    }

   // var_dump(" ticket: ".$csrId);
                        
    $RecupInfo = $dba->getSLABySubMenuId($submodule);
    //var_dump($RecupInfo);
    //$Duration = $RecupInfo ? $RecupInfo : 'inconnue';
    $Duration=$RecupInfo[0]['sla_duration_n'];
    //var_dump($RecupInfo);
   // var_dump(" Duree: ".$Duration);
   // var_dump(" MATRICULE : ".$company);
   // var_dump(" NUMERO DE TEL : ".$callerId);
     $msg="Votre réclamation a été bien reçue et est enregistrée sous le numéro " . $csrId . ". Elle sera traitée dans ". $Duration . ". Merci pour votre confiance et restons à votre entière disposition. ";
    // var_dump($msg);
    //Appel de la fonction envoi SMS cree, en prod decommenter
    envoyerSMS($company,$callerId,$msg);
   
    
    // Ajouter le chemin absolu pour les attachements
    $absoluteAttachments = array_map(function($filePath) {
    return "/opt/svam/var/www/gui/manager/products/scc/" . $filePath;
}, $fileAttachments);
    
     

    // Notification du ticket au mutualiste
    
        $subject = "AVIS DE CREATION DU TICKET  N° " . $csrId. " [ ".$csrDetails." ] ";
        $ccList = $emailId ;
        $ccList = rtrim($ccList, ",");
        $attachments = implode(",", $absoluteAttachments); //attache les fichiers selectionnés ici 
  

        
        
        $resSla =  $dba->getSLABySubMenuId( $submodule);
        
        $userres = $dba->getUserDetailById($userId);
       // print_r($userres);
        $agentName = $userres[0]['first_name_v'] . " " . $userres[0]['last_name_v'];
       // echo $agentName;
        $moduleres = $dba->getSCCModules($callModule);
        $submoduleres =  $dba->getSCCSubModules($submodule);
    
      
        $content = $svaTool->prepareMailBodyTicketCreation($csrId, $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);
    
    // Fin envoie du ticket

    //email en fonction du module selectionné 

    // 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 
);


// Vérifier si le module a une adresse email définie
if (isset($mailDonnees[$callModule])) {
    $emailAddresses = $mailDonnees[$callModule]; // Récupérer l'adresse email correspondante

   // echo "DEBUG: Module trouvé pour \$callModule $callModule , envoi à l'adresse: " . $emailAddresses ;

    // Préparer l'objet et le corps du mail
    $subject = "AVIS DE CREATION DU TICKET  N° " . $csrId. " [ ".$csrDetails." ] ";
    $attachments = implode(",", $absoluteAttachments); //attache les fichiers selectionnés ici 
  

        $resSla =  $dba->getSLABySubMenuId( $submodule);
        
        $userres = $dba->getUserDetailById($userId);
       
        $agentName = $userres[0]['first_name_v'] . " " . $userres[0]['last_name_v'];
       
        $moduleres = $dba->getSCCModules($callModule);
        $submoduleres =  $dba->getSCCSubModules($submodule);

     $content = $svaTool->prepareMailBodyTicketCreationToService($csrId, $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($emailAddresses , "reclamation@mugef-ci.com", $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 " . $callModule . ". Aucun email ne sera envoyé.";
}

    
    
    //$errorCode = 10;
// Upload files
    if ($fileData != "") {

        for ($p = 0; $p < count($fileData); $p++) {

            $dba->UploadTicketFiles($fileData[$p]['name'], $fileData[$p]['path'], $csrId);
        }
    }
}




switch ($errorCode) {

    case 0 : $msg = "{ \"errorCode\": $errorCode,\"errorMessage\" :\"TICKET CREE AVEC SUCCES !\"  }";
        break;
    case 1 : $msg = "{ \"errorCode\": $errorCode,\"errorMessage\" :\"ERREUR ! VEUILLEZ SELECTIONNER LE MOTIF DE L'APPEL !\"  }";
        break;
    case 10 : $msg = "{ \"errorCode\": $errorCode,\"errorMessage\" :\"ERREUR ! VEUILLEZ SELECTIONNER L'OBJET !\"  }";
        break;
    case 2 : $msg = "{ \"errorCode\": $errorCode,\"errorMessage\" :\"ERREUR ! VEUILLEZ DETAILLER LA REQUETE DU CLIENT !\"  }";
        break;
    case 3 : $msg = "{ \"errorCode\": $errorCode,\"errorMessage\" :\"ERREUR ! VEUILLEZ INSERER UN COMMENTAIRE SUR LE TICKET.\"  }";
        break;
    case 4 : $msg = "{ \"errorCode\": $errorCode,\"errorMessage\" :\"ERREUR ! VEUILLEZ ENTRER LE NUMERO DE L'APPELANT.\"  }";
        break;
    case 5 : $msg = "{ \"errorCode\": $errorCode,\"errorMessage\" :\"ERREUR ! LE NOM  EST INVALIDE.\"  }";
        break;
    case 6 : $msg = "{ \"errorCode\": $errorCode,\"errorMessage\" :\"ERREUR ! VEUILLEZ SAISIR LE MATRICULE .\"  }";
        break;
    case 7 : $msg = "{ \"errorCode\": $errorCode,\"errorMessage\" :\"ERREUR ! L'EMAIL SAISI EST INVALIDE.\"  }";
        break;
    case 8 : $msg = "{ \"errorCode\": $errorCode,\"errorMessage\" :\"ERREUR ! LE NUMERO APPELANT EST INVALIDE !\"  }";
        break;
    case 9 : $msg = "{ \"errorCode\": $errorCode,\"errorMessage\" :\"ERREUR ! VEUILLEZ CHOISIR LE STATUT USAGER!\"  }";
        break;
    case 11 : $msg = "{ \"errorCode\": $errorCode,\"errorMessage\" :\"ERREUR ! VEUILLEZ SELECTIONNER LE DETAIL !\"  }";
        break;

    case 12 : $msg = "{ \"errorCode\": $errorCode,\"errorMessage\" :\"ERREUR ! VEUILLEZ SELECTIONNER LA PRIORITE !\"  }";
        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 ! FICHIER INVALIDE! VEUILLEZ VERIFER!\"  }";
        break;

    case 15 : $msg = "{ \"errorCode\": $errorCode,\"errorMessage\" :\"ERREUR ! VEUILLEZ CHARGER LES FICHIERS!\"  }";
        break;

    /*
      case 14 : $msg = "{ \"errorCode\": $errorCode,\"errorMessage\" :\"ERREUR ! VEUILLEZ SELECTIONNER LE PLAN TARIFAIRE ASSOCIE AU COMPTE !\"  }";   break; */
}


echo $msg;
?>