<?php
namespace App\Api\Helper;
use Symfony\Component\Yaml\Yaml;
class PaysHelper {
protected $client;
protected $locale;
protected $rootdir;
public function __construct(\App\Api\ApiClient $client, $locale, $rootdir) {
$this->client = $client;
$this->locale = $locale;
$this->rootdir = $rootdir;
}
public function getOneBySlug($slug) {
/*(jb) liste des exceptions de slug */
$slugExceptionArray = [
"indonesia" => "indonesie",
"thailand" => "thailande",
"cambodia" => "cambodge",
];
if(isset($slugExceptionArray[$slug])){
$slug = $slugExceptionArray[$slug];
}
$pays = $this->client->get('/pays/' . $slug);
if (!empty($pays)) {
return $pays[0];
}
return null;
}
public function getAll($sort = null, $direction = null, $limit = null, $offset = null) {
$param = '';
$param .= $sort ? '&sort=' . $sort : '';
$param .= $direction ? '&direction=' . $direction : '';
$param .= $limit ? '&limit=' . $limit : '';
$param .= $offset ? '&offset=' . $offset : '';
$pays = $this->client->get('/pays?1=1' . $param);
return $pays;
}
public function getAllMultiple($paysSlugs = [], $theme = '', $favoris = '', $dateDebut = '', $duree = '', $tag = '', $sort = null, $direction = null, $limit = null, $offset = null) {
$param = '';
foreach ($paysSlugs as $pays) {
$param .= $pays ? '&pays[]=' . $pays : '';
}
$param .= $theme ? '&theme=' . $theme : '';
$param .= $favoris ? '&favoris=' . $favoris : '';
$param .= $dateDebut ? '&dateDebut=' . $dateDebut : '';
$param .= $duree ? '&duree=' . $duree : '';
$param .= $sort ? '&sort=' . $sort : '';
$param .= $tag ? '&tag=' . $tag : '';
$param .= $direction ? '&direction=' . $direction : '';
$param .= $limit ? '&limit=' . $limit : '';
$param .= $offset ? '&offset=' . $offset : '';
//dd($param);
$voyages = $this->client->get('/tours?1=1' . $param);
//dd('/tours?1=1' . $param);
return $voyages;
}
public function getAllTranslated($locale,$context = null) {
$arrPaysTranslated = [];
$ArrPays = $this->getAll();
foreach ($ArrPays as $pays) {
$data = [
"table"=>"ext_pays",
"content_id"=>$pays['pays_id'],
"locale"=>$locale
];
//19/07/21 - TOM - cache pour les traductions car beaucoup trop long
if(!is_null($context)){
$strTradFile = $this->rootdir . DIRECTORY_SEPARATOR ."public" . DIRECTORY_SEPARATOR ."cache-traductions.yaml";
$arrYamlFile = Yaml::parseFile($strTradFile);
}else{
$strTradFile = "cache-traductions.yaml";
$arrYamlFile = Yaml::parseFile($strTradFile);
}
//Si traduction trouvée
if(isset($arrYamlFile[md5(serialize($data))])) {
$arrPaysTranslated[] = unserialize(urldecode($arrYamlFile[md5(serialize($data))]));
}
//Si non trouvée
else {
//Appel à l'API
$paysTranslated = $this->client->post('/find-traduction-content',$data);
//Mise en cache
file_put_contents($strTradFile, Yaml::dump(array_merge(is_array($arrYamlFile) ? $arrYamlFile : [], [md5(serialize($data)) => urlencode(serialize($paysTranslated))])));
$arrPaysTranslated[] = $paysTranslated;
}
}
return $arrPaysTranslated;
}
}