<?
setlocale( LC_ALL, "es_CO" );
ini_set( 'memory_limit', '-1' );
error_reporting( 0 );
header( "Access-Control-Allow-Origin: *" );
header( "Content-Type: application/json" );
include_once('lib/mailer/class.phpmailer.php');
require_once('lib/conexionDB.php');
require_once('lib/funcionesGenerales/seleccionPaisDB.php');
require_once('lib/funcionesGenerales/envioCorreo.php');
require_once('lib/dao/error_nameDAO.php');
require_once('generarLog.php');
include_once('error_http.php');
include_once('lib/param.inc.php');

//Parametros generales del log y envio de correo
$asunto = 'Api - Error: Valorizacion PCPK - Archivo pcpkValorizacion';
$nombreArchivoLog = 'log/pcpkValorizacion'.date(Ym);
$extensionArchivo = '.txt';
$archivo = 'log/pcpkValorizacion'.date(Ym).'.txt';
$email_tec = 'notify_pcpk@automundial.com.co';
$area = "PCPK";
$separador = "----------------------------------------------------------------------";
$alinearLog = "";

$objConexionDB = new ConexionDB();
$objSeleccionPaisDB = new SeleccionPaisDB();
$objGenerarLog = new GenerarLog();
$objEnvioCorreo = new EnvioCorreo();

$data = json_decode(file_get_contents('php://input'), true);

$pais = $objSeleccionPaisDB->seleccionarDB($data['company']); //Seleccion del pais
$construirLog = array($separador);
$respuestaLog = $objGenerarLog->modificarLog($separador, $nombreArchivoLog, $extensionArchivo);
if($pais == 'default'){
  $mensaje = 'THE_COUNTRY_SENT_DOES_NOT_EXIST';
  array_push($construirLog,$mensaje);
  foreach ($construirLog as $linea) {
    $alinearLog =  $alinearLog."".$linea."</br>";
  }
  $respuestaLog = $objGenerarLog->modificarLog($mensaje, $nombreArchivoLog, $extensionArchivo);
  $enviadoCorreo = $objEnvioCorreo->enviarCorreo($mensaje,$asunto,$archivo,'pcpkValorizacion'.date(Ym),'.txt',$email_tec, $area, null);
	render_error($mensaje, "00_SIN CODIGO DE ERROR");
	die();
}
//Funcion de conexion a la base de datos
$DBi = $objConexionDB->conectarDB($pais);

$objError_nameDAO = new Error_nameDAO($DBi);
//Validaciones de los datos que llegan
if(isset($data['vida'])){
  $vida = (string) $data['vida'];
}else{
  $vida = '';
}

if(isset($data['dimensionCanonica'])){
  $dimensionCanonica = (string) $data['dimensionCanonica'];
}else{
  $dimensionCanonica = '';
}

if(isset($data['codigoDimension'])){
  $codigoDimension = (string) $data['codigoDimension'];
}else{
  $codigoDimension = '';
}

if(isset($data['codigoMarca'])){
  $codigoMarca = (string) $data['codigoMarca'];
}else{
  $codigoMarca = '';
}

if(isset($data['nombreDimension'])){
  $nombreDimension = (string) $data['nombreDimension'];
}else{
  $nombreDimension = '';
}

if(isset($data['nombreMarca'])){
  $nombreMarca = (string) $data['nombreMarca'];
}else{
  $nombreMarca = '';
}

if(isset($data['tier'])){
  $tier = (string) $data['tier'];
}else{
  $tier = '';
}

if(isset($data['placa'])){
  $placa = (string) $data['placa'];
}else{
  $placa = '';
}

$sqlnit = "select * from pcpkcondet, pcpkcon where condetcon = condoc and condetpla = '".$placa."' and condetest = 'A' and conest = 'A'";
$resnit = $DBi->Execute($sqlnit);
$resrow = $resnit->fetchrow($resnit);

if(isset($resrow['connit'])){
  $cliente = (string) trim($resrow['connit']);
}else{
  $mensaje = 'La placa'.$placa.' no existe o no esta activo en el contrato propio o el general.';
  $cliente = '';
  $respuestaLog = $objGenerarLog->modificarLog($mensaje, $nombreArchivoLog, $extensionArchivo);
  $enviadoCorreo = $objEnvioCorreo->enviarCorreoAtwplus($mensaje,$asunto,$email_tec);
  render_error('INACTIVE_OR_NOT_CREATED_CONTRACT', 'La placa '.$placa.' no existe o no esta activo en el contrato.');
  die();
}

$mensaje = "Parametros enviados-> cliente:".$cliente.", vida:".$vida.", dimensionCanonica:".$dimensionCanonica.", codigoDimension:".$codigoDimension.", codigoMarca:".$codigoMarca.", nombreDimension:".$nombreDimension.", nombreMarca:".$nombreMarca.", tier:".$tier.", placa:".$placa."</br></br>";
array_push($construirLog,$mensaje);
$respuestaLog = $objGenerarLog->modificarLog($mensaje, $nombreArchivoLog, $extensionArchivo);
if($cliente != '' && $vida != '' && $dimensionCanonica != '' && $codigoDimension != '' && $codigoMarca != '' && $nombreDimension != '' && $nombreMarca != '' && $tier != '' && $placa != ''){
  switch($_SERVER['REQUEST_METHOD']){
    case 'POST':
      $sqlpro = "execute procedure valor_pcpk('".$cliente."', '".$vida."', '".$dimensionCanonica."', '".$codigoDimension."', '".$codigoMarca."', '".$nombreDimension."', '".$nombreMarca."', '".$tier."')";
      $respro = $DBi->Execute($sqlpro);
      $errorDb = $DBi->ErrorMsg($sqlpro);
      $expresion1 = '[Expr_1]';
      $expresion2 = '[Expr_2]';
      $expresion3 = '[Expr_3]';
      $expresion4 = '[Expr_4]';
      $registro = 0;
      $respuestaSP = $respro->_array[0][$expresion1];
      $valorPcpk = $respro->_array[0][$expresion2];
      $valorRetomaChino = $respro->_array[0][$expresion3];
      $valorRetomaPremium = $respro->_array[0][$expresion4];
      array_push($construirLog,"RespuestaSP->".$respuestaSP);
      $respuestaLog = $objGenerarLog->modificarLog("RespuestaSP->".$respuestaSP, $nombreArchivoLog, $extensionArchivo);
      array_push($construirLog,"ValorPcpk->".$valorPcpk);
      $respuestaLog = $objGenerarLog->modificarLog("ValorPcpk->".$valorPcpk, $nombreArchivoLog, $extensionArchivo);
      array_push($construirLog,"ValorRetomaChino->".$valorRetomaChino);
      $respuestaLog = $objGenerarLog->modificarLog("ValorRetomaChino->".$valorRetomaChino, $nombreArchivoLog, $extensionArchivo);
      array_push($construirLog,"ValorRetomaPremium->".$valorRetomaPremium);
      $respuestaLog = $objGenerarLog->modificarLog("ValorRetomaPremium->".$valorRetomaPremium, $nombreArchivoLog, $extensionArchivo);
      $descripcionCodigoSP = $objError_nameDAO->getConsultaDescripcion($respuestaCodigoSP);
      $enviarRespuesta = $respuestaSP;
      if(trim($enviarRespuesta) == 'S'){
        $respuesta = array("codigo"=>$enviarRespuesta, "valor"=>trim($valorPcpk),  "retomaChino"=>trim($valorRetomaChino), "retomaPremium"=>trim($valorRetomaPremium));
        render('Ok', $respuesta);
      }else if(trim($enviarRespuesta) == 'N'){
        $mensaje = 'Error: El SP rechazo la solicitud: '.$enviarRespuesta;
        array_push($construirLog,$mensaje);
        foreach ($construirLog as $linea) {
          $alinearLog =  $alinearLog."".$linea."</br>";
        }
        $respuestaLog = $objGenerarLog->modificarLog($mensaje, $nombreArchivoLog, $extensionArchivo);
        $enviadoCorreo = $objEnvioCorreo->enviarCorreoAtwplus($alinearLog,$asunto,$email_tec);
        render('BadRequest', $enviarRespuesta);     
      }else{
        $mensaje = 'Error: El SP no entrego ninguna respuesta: '.$enviarRespuesta.' - '.$errorDb;
        $respuestaLog = $objGenerarLog->modificarLog($mensaje, $nombreArchivoLog, $extensionArchivo);
        array_push($construirLog,$mensaje);
        foreach ($construirLog as $linea) {
          $alinearLog =  $alinearLog."".$linea."</br>";
        }
        $ip = ADDRESS;
        exec("ping -c6 ".$ip, $salida, $estado);
        foreach ($salida as $linea){
          $respuestaLog = $objGenerarLog->modificarLog("RespuestaServidor->".$ip." - ".$linea, $nombreArchivoLog, $extensionArchivo);
        }
        $enviadoCorreo = $objEnvioCorreo->enviarCorreoAtwplus($alinearLog,$asunto,$email_tec);
        render_error('STORED_PROCEDURE_DID_NOT_SEND_RESPONSE');
      }
    break;
    default:
      $mensaje = 'Error: Se esta usando un metodo no valido';
      array_push($construirLog,$mensaje);
      foreach ($construirLog as $linea) {
        $alinearLog =  $alinearLog."".$linea."</br>";
      }
      $respuestaLog = $objGenerarLog->modificarLog($mensaje, $nombreArchivoLog, $extensionArchivo);
      $enviadoCorreo = $objEnvioCorreo->enviarCorreoAtwplus($alinearLog,$asunto,$email_tec);
      render_error('RESOURCE_DOES_NOT_EXIST');
    break;
  }
}else{
  $mensaje = 'Error: Los parametros estan incompletos';
  array_push($construirLog,$mensaje);
  foreach ($construirLog as $linea) {
    $alinearLog =  $alinearLog."".$linea."</br>";
  }
  $respuestaLog = $objGenerarLog->modificarLog($mensaje, $nombreArchivoLog, $extensionArchivo);
  $enviadoCorreo = $objEnvioCorreo->enviarCorreoAtwplus($alinearLog,$asunto,$email_tec);
  render_error( 'UNPARAMETERED' );
}
?>