<?php
/**
 * /recherche/index.php

 * =========================================================================================================
 *
 * Contrôleur frontal / Page resultats recherche
 * 
 * @author          Monagence/Jamal Arbib
 * @started         01/03/2016
 * @updated         
 * @project         refonte de monagence.com
 * @namefile        index.php
 * @fileversion     1.0.0
 * @phpversion      7.0.0
 * @htmlversion     HTML5
 * @cssversion      CSS3
 * @jqueryversion   
 * @copyright       2017 by the author
 * @license         no license - free to use - just link to my github - Thanks :)
 * @mygithub        https://github.com/ 
 */

//require_once __DIR__ .'/app/config/config.php';

// return $moteurRecherche
//require_once __DIR__ .'/src/moteur/paramsRecherche.php';

// get search results
require __DIR__ .'/../src/moteur/resultatsRecherche.php';
//pagination
require __DIR__ .'/../src/pagination/MyPagination.php';
//get type, theme, country label
require __DIR__ .'/../src/webservice/WebService.php';
// return $moteurRecherche
require __DIR__ .'/../src/moteur/MoteurRecherche.php';
//filters
require __DIR__ .'/../src/moteur/SearchEngineFilters.php';



$query=[];
$preposition=$countryCode=$article=$guideVoyage='';

/**  Pour le filtre **/
if (array_key_exists('country', $selectedParams) ){
    $query['country']= $countryCode = $selectedParams['country'];
    // definir la 'Preposition' avant la destination : au, aux en etc..
     require __DIR__ .'/../src/utils/Language.php';
    $preposition = Language::getPreposition($selectedParams['country']);
    $article = Language::getArticle($selectedParams['country']);

}
elseif (array_key_exists('cCity', $selectedParams) ){ 
        $countryCode =  explode('.',$selectedParams['cCity'])[0];
        $query['country']=  $countryCode;
}
elseif(array_key_exists('type', $selectedParams)){
    $query['type']= $selectedParams['type'];  
}
else{

}

//echo '<pre> query recherche : ',print_r($selectedParams,1),'</pre>';
//echo '<pre> query filter',print_r($query,1),'</pre>';

//$searchFilters = SearchEngineFilters::getFilters($selectedParams);
$searchFilters = SearchEngineFilters::getFilters($query);

//echo '<pre>',print_r($searchFilters,1),'</pre>';

$urlPath = 'recherche';
$page       =  isset($_GET['page']) ? $_GET['page'] : 1;

//$paginationPath='/'.$urlPath.'/?page=';

// page canical
$canonicalPage = '/'.$urlPath.'/';
$paginationPath='/'.$urlPath.'/';

$pageTitle=$destination=$depCity= null;

// recuperation des parametres de recherche et leur label
$searchParams =null;
$canonicalParams = [];
$ws = new WebService();

$typeLabel='';

$typesLabel = [
  'sjrs' => 'Séjours',
  'ski'  => 'Séjour ski',
  'wk'   =>  'Week-ends et cours séjours',  
  'cs'   => 'Croisières maritimes et fluviales',
  'au'   => 'Voyages autotours', 
  'ci'   => 'Circuits touristiques',
  'ci.priv'=>  'Circuit Privatif',
  'ci.Saf'=>'Circuit avec Safari',
  'ci.cpg'=>'Circuit en Mini Groupe',
  'ci.cee'=>'Circuit en Etoile',
  'locbis'=>'Locations',
  'ski'=>'Séjour Ski',
  'co'   => 'Voyages combinés',
  'co.cscc'=> 'Combinés circuit & séjour', 
  'co.cbhh'=> 'Combinés deux hôtels', 
  'co.cbdi'=> 'Combinés deux îles', 
  'co.cppp'=> 'Combinés deux pays'
]; 


foreach ($_GET as $key => $value) {

  if($key != "page"){

    if ($value != '0' or $value !=' '){

        $searchParams .= $key."=".$value.'&';
       //case : TN
        if($key == "country")
        {
            $destination = $ws->getLabel("critValue", $value.";dest");
            $canonicalParams['country'] = $value;
        }
       //case : TN.DJE
       if($key == "cCity")
        {
            $destination = $ws->getLabel("critValue", explode('.',$value)[0].";dest");
           // $canonicalParams['cCity'] = $value;
        }
        if($key == "type"){
           //warning = &type=0
            if($value !='0'){
                 //$typeLabel  = strtolower ($ws->getLabel("critValue", $value.";ty"));
                 //$typeLabel  = strtolower ($typesLabel[$value]);

                if (array_key_exists($value, $typesLabel)) {
                    $typeLabel = strtolower($typesLabel[$value]);
                } 
                $canonicalParams['type'] = $value;
            } 
        }
       /* if($key == "depCity"){
            $city  = $ws->getLabel("critValue", "FR.PAR;dest");
        }*/
     }
  }
}

$paginationPath.='?'.$searchParams.'page=';

//-------------------------------------------

// Phrase contextuelle SEO
if ($destination && $typeLabel) {

    $label =ucfirst($typeLabel);

    $pageTitle = $label . ' ' . $preposition . ' ' . $destination . ' | Bons plans voyages';
    $description = 'Découvrez nos ' . $typeLabel . ' ' . $preposition . ' ' . $destination . 
        ' à petits prix. Comparez nos offres et partez à la découverte de la destination ' . $destination . ' dès aujourd’hui.';
    $h1 = $label . ' ' . $preposition . ' ' . $destination;

} elseif ($destination) {
    $pageTitle = 'Voyages et séjours ' . $preposition . ' ' . $destination . ' | Offres pas chères';
    $description = 'Partez en voyage ' . $preposition . ' ' . $destination . ' à prix réduit. Découvrez nos meilleures offres.';
    $h1 = 'Voyages ' . $preposition . ' ' . $destination;

    require __DIR__ .'/../src/utils/Utils.php';

    $destinationPath =  Utils::rewriteUrl($destination);
    $guideUrl='/guide-voyage/'.$destinationPath.'/'.$countryCode;
    $guideVoyage= 'Pour préparer au mieux votre voyage, consultez notre <a href="'.$guideUrl.'"  class="text-decoration-underline"><strong>guide de voyage '.$destination.'</strong></a> et découvrez conseils pratiques et informations utiles.';


} else {
    $pageTitle = 'Résultats de recherche – Voyages et séjours pas chers';
    $description = 'Trouvez le voyage idéal parmi nos offres spéciales à petits prix.';
    $h1 = 'Résultats de recherche de voyages';
}

//-------------------------------------------

/*$meta=[   
   'title'=>'Recherche de voyage '.$typeLabel. ' '.$destination,
   'description'=>'Recherche de voyage'.$typeLabel.' '. $destination.'.Profitez des offres de voyages pas cher et des sejours avec Monagence.com',
   'h1'=>'Voyages '.$typeLabel.' '.$preposition.' '.$destination
];
*/

// Choix aléatoire du contenu
$SEOContent = "";
$prixDeBase = "";
$nbrProduits = $produits['total'];


if($nbrProduits > 0 ){

    if (isset($produits[0])) {
        $prixDeBase = $produits[0]['price'];
    }


    $typeLabel = ($typeLabel ? $typeLabel : "voyages");

    $phrases0 = [
    "Profitez de nos $nbrProduits offres de $typeLabel  $preposition $destination à partir de $prixDeBase €. Idéal pour un séjour " . ($typeLabel ? $typeLabel : "inoubliable").'.',
    "Découvrez nos $nbrProduits offres de $typeLabel  $preposition  $destination dès $prixDeBase €. Que vous voyagiez en couple, en famille ou entre amis, nos formules s’adaptent à vos envies.",
    "Envie de $typeLabel $preposition $destination ? Retrouvez nos offres dès $prixDeBase € sélectionnées pour leur rapport qualité/prix.",
    "Explorez la destination $destination à travers nos voyages $typeLabel à prix doux. Partez pour une expérience unique à partir de $prixDeBase €."
    ];

    $phrases = [
    "Profitez de nos $nbrProduits offres de <strong> $typeLabel $preposition $destination </strong>à partir de $prixDeBase €. Entre merveilles naturelles et richesses culturelles, cette destination séduit autant les passionnés d’histoire que les amateurs de détente. Que vous rêviez d’un séjour organisé ou d’une escapade libre, nos formules s’adaptent à toutes vos envies. Partez à la rencontre d’une destination authentique et laissez-vous charmer par son atmosphère unique.",
    
    "Découvrez nos $nbrProduits offres de <strong>$typeLabel $preposition $destination</strong> dès $prixDeBase €. Que ce soit pour un week-end prolongé, des vacances en famille ou une aventure en couple, nos séjours vous promettent une expérience mémorable. Entre paysages somptueux, traditions locales et hébergements de qualité, $destination vous invite à vivre des moments d’exception. Réservez dès maintenant et offrez-vous une parenthèse de bonheur sans vous ruiner.",
    
    "Envie de <strong>$typeLabel $preposition $destination</strong> ? À partir de $prixDeBase €, partez pour une aventure entre culture, nature et détente. Nos séjours tout compris ou à la carte vous permettent de découvrir les incontournables de $destination à votre rythme. Explorez cette destination mythique et laissez-vous séduire par son authenticité.",
    
    "Explorez la beauté de $destination grâce à nos voyages $typeLabel dès $prixDeBase €. Entre plages paradisiaques, villes animées et sites classés, cette destination a tout pour plaire. Nos séjours sont conçus pour offrir confort, découverte et rapport qualité/prix imbattable. Que vous soyez aventurier, gourmet ou simple curieux, $article $destination vous réserve des souvenirs inoubliables au fil des jours.",
    
    "Nos offres de <strong> $typeLabel $preposition $destination </strong>, à partir de $prixDeBase €, vous ouvrent les portes d’un voyage d’exception. Flânez dans ses rues pittoresques, partez à la rencontre de ses habitants et goûtez à sa gastronomie unique. Il ne vous reste plus qu’à choisir votre date de départ et à préparer vos valises !"
];

    // Choix aléatoire
    $SEOContent = $phrases[array_rand($phrases)].'<br />'.$guideVoyage;
}

// On n’inclut PAS le thème dans le canonical, car c’est souvent trop spécifique
if (!empty($canonicalParams)) {
    $canonicalPage = '/recherche/?' . http_build_query($canonicalParams);
}

$meta=[   
   'title'=>$pageTitle,
   'description'=>$description,
   'h1'=>$h1,
   'canonical'=>$canonicalPage
];

//pour l'image bg du header

$typeThemeCode  = '';
$typeThemeValue = '';

if ( isset($_GET['theme']) and (!isset($_GET['country']) or $_GET['country'] =='0' ) )
{
 $typeThemeCode  = 'th';
 $typeThemeValue = $_GET['theme'];
}

if ( isset($_GET['type']) and (!isset($_GET['country']) or $_GET['country'] =='0' ) )
{
 $typeThemeCode  = 'ty';
 $typeThemeValue = $_GET['type'];
}

//echo $produits['total'];
//var_dump($produits);

//  passage de variables au mteur de rendu TWIG
echo $twig->render('recherche/listeProduitsRecherche.html.twig', 
     [ 
        'page'  => 'recherche',
        'meta'   => $meta,
        'SEOContent'=>$SEOContent,
        'produits'=>$produits,
        'searchFilters'=>$searchFilters,
        'typeThemeCode' => $typeThemeCode,
        'typeThemeValue' => $typeThemeValue,
        'preposition'=>$preposition,
        'article'=>$article,
        'path'=>$urlPath,
        'label'=>ucfirst($typeLabel).' '.$preposition,
        'typeLabel'=>$typeLabel,
        'countryCode'=>$countryCode,
        'countryLabel'=>$destination,
        'moteurRecherche'=>$moteurRecherche,
        'currentPage'=>$page,
        'paginationPath'=> $paginationPath,
        'lastPage'=> ceil($produits['total']/$nbrResults),  //$nbResult
        'showAlwaysFirstAndLast'=> false,
        ]
 );
