<?php
/*################################################
@author: Code Tecnologia
@date: 15/04/2019
@version: 1.00
@purpose: Classe responsavel por retornar dados do CEP baseado no CEP e LOCALE

Resposta esperada para locale PT:
{ 
"erro": false,
"mensagem":"",
"endereco": {
        "cep":640941,
        "estado":"Hokkaido",
        "cidade":"Chuo-ku, Sapporo",
        "bairro":"Asahigaoka",
        "zone_id":"1668",
   }
}


Resposta esperada para locale JA:
{ 
"erro": false,
"mensagem":"",
"endereco": {
        "cep":640941,
        "estado":"北海道",
        "cidade":"札幌市中央区",
        "bairro":"旭ケ丘",
        "zone_id":"1668",
   }
}

*/
  
################################################*/
error_reporting(E_ERROR | E_PARSE);

include_once("connect3.php");

    mysqli_query($conexao,"SET NAMES 'utf8'");
    mysqli_query($conexao,'SET character_set_connection=utf8');
    mysqli_query($conexao,'SET character_set_client=utf8');
    mysqli_query($conexao,'SET character_set_results=utf8');

//Funcao para exibir o json
function exibir_json($json){
    $echo_json = json_encode($json);
    $json = array_map('utf8_encode', $json);
    echo $echo_json;
}


//Verificando se a mensagem foi transmitida por POST

/*
if(strcasecmp($_SERVER['REQUEST_METHOD'], 'POST') != 0){  
    $status = array(
                'erro' => 'true',
                'mensagem' => 'O formato recebido não é um POST');
    //$json = json_encode($status);
    exibir_json($status);
    exit(0);
}



//Verificando se o Content-type é 'application/json'
/*
$contentType = isset($_SERVER["CONTENT_TYPE"]) ? trim($_SERVER["CONTENT_TYPE"]) : '';
if(strcasecmp($contentType, 'application/json') != 0){
    $status = array(
                'erro' => 'true',
                'mensagem' => 'O tipo da mensagem está incorreto.');
    $json = json_encode($status);
    exibir_json($json);
    exit(0);
}
*/



//recebendo a requisicao
$content = file_get_contents("php://input");
$content = utf8_encode($content); //evita erros


  //obtendo informacoes do Header da mensagem

    /*
    $locale = isset($_SERVER["HTTP_LOCALE"]) ? trim($_SERVER["HTTP_LOCALE"])    : '';//pegando o locale (pt ou ja) do header 
    $estado = isset($_SERVER["HTTP_ESTADO"]) ? trim($_SERVER["HTTP_ESTADO"])    : '';//pegando o cep do header
*/

    //$v_customer_id      = isset($_POST["v_customer_id"])    ? trim($_POST["v_customer_id"])      : 0;
    $locale = isset($_POST["LOCALE"]) ? trim($_POST["LOCALE"])    : '';//pegando o locale (pt ou ja) do header 
    //$locale = 'pt';
   

//    $estado = isset($_POST["ESTADO"]) ? trim($_POST["ESTADO"])    : '';//pegando o cep do header    
    

//Forcando locale para teste    
//$locale = "pt";

/*Checando dados obrigatórios*/  
    if(empty($locale)){
      $status = array(
                'erro' => true,
                'mensagem' => 'Locale não informados');
      //$json = json_encode($status);
      //enviarCurl($url,$json);
      exibir_json($status);
      
    }else{
      
                        /*
                        $formas = array(
                            'formas'    => ''
                        );         

                        $programacao_arr = array (
                            'programacao_list' => ''
                         );    
*/

        //Aceitou o TERMO deve ser tratado. Substituir o "1" pelo tratamento correto.
        //Verifica o locale
        
        $consulta_formas_envio =  "select   sp.id
                                            ,sn.name
                                            ,sp.price
                                            ,sp.no_cep
                                            ,sp.programation_data
                                            -- ,sp.* 
                                      from shipping_programation sp inner join shipping_programation_name sn 
                                        on sp.id = sn.shipping_programation_id
                                     where sn.language_id = (select language_id 
                                                               from oc_language 
                                                              where locale like concat('%','$locale','%'))
                                       -- and no_cep = 1
                                       -- and sp.id = 5
                                    order by 2; "; 
                                    // and no_cep = 1
                                    // echo $consulta_formas_envio;
                                    // exit;

        $consulta_mysql_date = "select date_format(now(),'%d/%m/%Y %H:%i:%s') as mysql_date";
            $result = mysqli_query($conexao, $consulta_mysql_date) or die(mysqli_error($conexao));
            if(mysqli_num_rows($result)>0){
                while($row = mysqli_fetch_assoc($result)){
                    $mysql_date              = $row['mysql_date'];
                  //  echo $mysql_date;
                  //  exit;
                }
            }

        }

        
//echo $consulta_mysql_date;
//exit;


        $result = mysqli_query($conexao, $consulta_formas_envio) or die(mysqli_error($conexao));
        if(mysqli_num_rows($result)>0){
            while($row = mysqli_fetch_assoc($result)){

                $formas['id']                        = $row['id'];
                $formas['name']                      = $row['name'];
                $formas['price']                     = $row['price'];
                $formas['no_cep']                    = $row['no_cep'];               
              
                //Aqui vem um json
                $datas                               = json_decode($row['programation_data'],true); 

/*
                echo "<pre>";
                print_r ($datas);
                echo "</pre>";
                exit;
*/

//obtendo e tratando a data
$date           = date_create_from_format('d/m/Y H:i:s', $mysql_date);

//separando variaveis para navegar no json
$dia_compra     = date_format($date, 'd');
$mes_compra_idx = date_format((date_modify($date, '-1 month')), 'n'); //usado N, pois o array do indice do mes nao traz zero a esquerda
$ano_compra     = date_format($date, 'Y');

//depois ver com Doughan
//$mes_compra_idx = ($mes_compra_idx*1) -1;


                //Navegando no json
                foreach($datas as $campo=>$valor){
                    //echo $campo . "=>" . $valor . "<br>";

                            /*
                            {
                              "allow_dates": {array}
                              "dateformat": "1"
                              "enable_time" : "1"
                              "timetable":{array}
                            }


                            Arvore de arrays
                            {
                              "allow_dates": {
                                 "9": { --indice mes compra
                                   "11": { --dia compra
                                     "9": { -- mes possivel compra
                                       "2019": [ -- ano possivel compra
                                          "28", -- dias possivel compra
                                          "27",
                                          "26", ...
                            */
                    
                    if ($campo == 'allow_dates'){
                      //echo "Entrei no noh allow_dates" . "<br>";

                      foreach ($valor as $arrAnoCompraCampo => $arrAnoCompraValor){
                        //echo "<br>" . "arrAnoCompraCampo: " . $arrAnoCompraCampo . "<br>";


                        if($arrAnoCompraCampo >= $ano_compra){

                        foreach($arrAnoCompraValor as $arrMesCompraCampo => $arrMesCompraValor){
                            //echo "<br>" . "-->arrMesCompraCampo: " . $arrMesCompraCampo . "<br>";

                            if ($arrMesCompraCampo == $mes_compra_idx){ 

                            foreach($arrMesCompraValor as $arrDiaCompraCampo => $arrDiaCompraValor){
                                //echo "---->arrDiaCompraCampo: " . $arrDiaCompraCampo . "<br>";

                                if ($arrDiaCompraCampo == $dia_compra){

                                foreach($arrDiaCompraValor as $arrAnoPossibilidadeCampo => $arrAnoPossibilidadeValor){
                                    //echo "--------> arrAnoPossibilidadeCampo: " . $arrAnoPossibilidadeCampo . "<br>";

                                    foreach($arrAnoPossibilidadeValor as $arrMesPossibilidadeCampo => $arrMesPossibilidadeValor){
                                   //     echo "----------------> arrMesPossibilidadeCampo: " . $arrMesPossibilidadeCampo . "<br>";

                                        
                                        foreach($arrMesPossibilidadeValor as $arrDiasPossiveis){
                                            //echo $arrDiasPossiveis . "<br>";
                                            $intMesPossivel = (int)$arrMesPossibilidadeCampo;
                                            //echo $arrDiasPossiveis . "/" . ($intMesPossivel+1) . "/" . $arrAnoPossibilidadeCampo . "<br>";
                                            $programacao = strval(str_pad($arrDiasPossiveis,2,'00',STR_PAD_LEFT) . "/" . str_pad(($intMesPossivel+1),2,'00',STR_PAD_LEFT) . "/" . $arrAnoPossibilidadeCampo);
                                            $programacao_list[] = $programacao;

                                        }

                                    }

                                }

                            }

                        }

                     }

                  }

               } 

            }


         } //fechamento do IF ALLOW DATES

         

      } //fechamento do foreach DATAS



                //echo "<pre>";

                //$programacao_list[] = '';

                 
                 if (!empty($programacao_list)){
                 

                              if ($campo == 'timetable'){
                                //echo "<br>" . "teste";
                                

                                foreach ($valor as $arrHorariosCampo => $arrHorariosValor){
                                  //echo "<br>" . "arrHorariosCampo: " . $arrHorariosCampo;

                                  foreach ($arrHorariosValor as $arrHoraCampo => $arrHoraValor){
                                    //echo "<br>" . "arrHoraCampo: " . $arrHoraCampo;

                                    if($arrHoraCampo == 'timefrom'){
                                      //echo "<br>" . "timefrom: " . $arrHoraValor;

                                      $timefrom = $arrHoraValor;

                                    }

                                    if ($arrHoraCampo == 'timeto'){
                        //              echo "<br>" . "timeto: " . $arrHoraValor;
                                      $timeto = $arrHoraValor;

                                    }

                                    
                                    if (!empty($timeto) || !empty($timeto)){
                                      $horarios = $timefrom .'-'. $timeto;
                                    }

                                  }

                                  if(!in_array($horarios, $horarios_list)){
                                      $horarios_list[] = $horarios;
                                    }

                                }

                              
                              }
                        //Echo "<Br>";

/*
                        echo "<pre>";
                        print_r($horarios_list);
                        echo "</pre>";
                        exit;
*/

                        $formas['datas_list'] = $programacao_list;
                       // unset($programacao_list);
                        $formas['horarios_list'] = $horarios_list;
                        unset($horarios_list);
                       // $formas_list[] = $formas;


                        //echo "<br>" . $formas['name'];
                        //echo "<br>" . $formas['datas_list'];
                        //print_r($programacao_list);
                        //print_r($formas); FABIO
                        unset($programacao_list);
                        $formas_list[] = $formas;

                        

                        
                    }


  


                
            }

                

                $status = array( 'erro'     => false
                                ,'mensagem' => ''
                                ,'formas'   => $formas_list                                
                                );
                                

                $json = json_encode($status);
                
                echo $json;
                exit(0);
                
            
        }else{
            $status = array(
                'erro' => true,
                'mensagem' => 'Houve um erro na obtencao da lista de formas de envio');
                //$json = json_encode($status);
                exibir_json($status); 
        }
  

?>