<?php

echo "cargando jumpseller..."."\n";

function conectaPDO(){
    $credenciales_db = [
        'database' => 'bdsoftne_conta',
        'user' => 'bdsoftne_victor',
        'password' => 'Mgx!p[EtHq68',
        'host' => '200.35.156.225',
    ];

    return new PDO(
        'mysql:host='.$credenciales_db['host'].';dbname='.$credenciales_db['database'].';charset=utf8',
        $credenciales_db['user'],
        $credenciales_db['password']
    );
}


$coneccion_erp = conectaPDO();
$coneccion_erp->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);






$post = file_get_contents('php://input'); //post data is in another format (e.g. JSON, etc.)

$ruta_archivo = "jumpseller_postorder.txt";

// DETECTAR SI EXISTE EL ARCHIVO PARA BORRARLO
if(!empty($post) && is_file($ruta_archivo)) {
    unlink($ruta_archivo);
}

$fecha = date('Y-m-d');
$hora = date('h:i:s');

$consulta = "INSERT INTO `log_jumpseller`(`datos`, `fecha`, `hora`) VALUES (:datos,:fecha,:hora)";
$consulta = $coneccion_erp->prepare($consulta);
$consulta->bindValue(':datos', $post, PDO::PARAM_STR);
$consulta->bindValue(':fecha', $fecha, PDO::PARAM_STR);
$consulta->bindValue(':hora', $hora, PDO::PARAM_STR);
$consulta->execute();


file_put_contents($ruta_archivo, $post, FILE_APPEND); //store data locally (JSON to a file in this case)*/

$post_data = file_get_contents($ruta_archivo); //read JSON file

$json_data = json_decode($post_data, true); //Takes a JSON encoded string and converts it into a PHP variable.

//echo $json_data['order']['id']."<br>";
//echo $json_data['order']['customer']['email']."<br>";

if(!empty($json_data)):

	// PREPARO EL EL STRING DE CONSULTAS EN FORMATO JSON PARA ENVIARLO AL SERVIDOR
	$login = array(
    	'username' => 'apiweb',
    	'password' => 'apiweb',
    	'rut' => '76412415-4' );

	$string = json_encode($login);

	// CONEXION A LA API
	$api = 'http://api.softnet.cl/login';

	$json_token = login_post($api, $string);
    $array_token = json_decode($json_token);
    $token = $array_token->token;

    //echo $token.'<br>';

    if(!empty($token)):

        // DATOS DEL CLIENTE
        $nombre = ucwords(strtolower(trim($json_data['order']['shipping_address']['name']).' '.trim($json_data['order']['shipping_address']['surname'])));
        $email  = trim(strtolower($json_data['order']['customer']['email']));
        $fono   = trim($json_data['order']['customer']['phone']);
        $rut    = rut($json_data['order']['billing_address']['taxid']);
        $direccion = ucfirst(trim($json_data['order']['shipping_address']['address']));
        $comuna = ucwords(trim($json_data['order']['shipping_address']['city']));
        $pais = ucwords(trim($json_data['order']['shipping_address']['country']));
        $mensaje = ucfirst(trim($json_data['order']['additional_information']));

        if(empty($mensaje)) {
            $mensaje = 'Compra realizada';
        }

        //$mensaje = 'Esto es solo un prueba para realizar conexion del api de softnet al sitio web de athomedeco.cl, favor de eliminar';

        // BUSCAR CLIENTE A TRAVES DEL RUT
        $url_usuario = 'http://api.softnet.cl/cliente/'.$rut;
        $json_usuario = get_recurso($url_usuario);
        $json_usuario = json_encode($json_usuario, true);
        $json_usuario = json_decode($json_usuario, true);

        // VERIFICAR SI EXISTE USUARIO EN LA API SINO SE CREA
        if(isset($json_usuario["rut"]) && !empty($json_usuario["rut"])) {

            //echo 'Existe';

        } else {

            //echo 'No existe';

            // AGREGAR NUEVO CLIENTE
            $datos_cliente = array(
                  'clientes' =>
                  array(
                    0 =>
                    array(
                      'nombre_rz' => $nombre,
                      'nombre_fantasia' => $nombre,
                      'rut' => $rut,
                      'cliente' => '1',
                      'proveedor' => '1',
                      'prospecto' => '0',
                      'extranjero' => '0',
                      'giro' => 'giro',
                      'direccion' => $direccion,
                      'telefono' => $fono,
                      'comuna' => $comuna,
                      'ciudad' => $comuna,
                      'pais' => $pais,
                      'email' => $email,
                      'observacion' => $mensaje,
                      'nombre_cto' => $nombre,
                      'rut_cto' => $rut,
                      'email_cto' => $email,
                      'telefono_cto' => $fono,
                      'celular_cto' => $fono,
                      'cargo_cto' => 'cargo',
                      'cobranza_cto' => '1',
                      'vendedor' => $rut
                    ),
                  ),
                );

            echo '<pre>';
            //echo json_encode($datos_cliente);
            print_r($datos_cliente);
            echo '</pre>';

            $url_usuario = 'http://api.softnet.cl/cliente';

            $json_usuario = post_recurso($url_usuario, $datos_cliente);
            $array_usuario = json_decode($json_usuario);

            echo '<pre>';
            echo $json_usuario;
            print_r($array_usuario);
            echo '</pre>';


        }

        // LISTAR PRODUCTOS DE LA COMPRA
        $productos = array();
        foreach($json_data['order']['products'] as $p) {
            $productos[] = array(
                'Codigo'    => $p['sku'],
                'Cantidad'  => $p['qty'],
                'Descuento' => round($p['discount']),
                'Precio'    => round($p['price']),
                'Afecto'    => true,
                'Bodega'    => '927'
            );
        }

        // ELEGIR MÉTODO DE PAGO
        $metodo_pago = $json_data['order']['payment_method_name'];
        if($metodo_pago == 'Webpay Plus Webservices') {
            // WEBPAY
            $pago_id = '5080';
        } elseif($metodo_pago == 'Transferencia bancaria') {
            $pago_id = '5081';
            // TRANSFERENCIA BANCARIA
        } else {
            // CONTADO
            $pago_id = '3032';
        }

        // DATOS DE LA COMPRA
        $datos_compra = array(
                            0 => array(
                                'Encabezado' => array(
                                    'Receptor' => $rut,
                                    'MontoNeto' => round($json_data['order']['total']),
                                    'Descuento' => round($json_data['order']['discount']),
                                    'TipoDocumento' => '39',
                                    'AreaNegocio' => '4354',
                                    'Observacion' => $mensaje,
                                ),
                                'Detalle' => $productos,
                                'Adicional' => array(
                                    'Uno' => $pago_id,
                                    'Dos' => $rut,
                                )
                            ));

        echo '<pre>';
        //echo json_encode($datos_compra);
        print_r($datos_compra);
        echo '</pre>';

        // ENVIAR COMPRA A LA API
        $url_pedido = 'http://api.softnet.cl/pedido';

        $json_pedido = post_recurso($url_pedido, $datos_compra);
        $array_pedido = json_decode($json_pedido);

        echo '<pre>';
        //echo $json_pedido;
        print_r($array_pedido);
        echo '</pre>';

    endif;

endif;


function rut($rut='') {
    if(!empty($rut)) {
        $rut = str_replace('-', '', str_replace('.', '', str_replace(',', '', trim($rut))));
        $rut = substr($rut, 0, -1).'-'.strtoupper(substr($rut, -1));
    }
    return $rut;
}

function get_url($url) {

    if(ini_get('allow_url_fopen')) {
        $json = file_get_contents($url);
    } else {
        $curl = curl_init($url);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
        $json = curl_exec($curl);
        curl_close($curl);
    }
    $json_api = json_decode($json);

    return $json_api;

}


function get_recurso($url) {

    global $token;

	// Inicia cURL
    $session = curl_init($url);

    // Indica a cURL que retorne data
    curl_setopt($session, CURLOPT_RETURNTRANSFER, true);

    // Configura cabeceras
    $headers = array();
    $headers[] = 'Content-type: application/json';
    $headers[] = 'token:'.$token;

    curl_setopt($session, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($session, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($session, CURLOPT_SSL_VERIFYHOST, false);

    // Ejecuta cURL
    $response = curl_exec($session);
    $code = curl_getinfo($session, CURLINFO_HTTP_CODE);

    // Cierra la sesión cURL
    curl_close($session);

    //Esto es sólo para poder visualizar lo que se está retornando
    //print_r($response);


	$json = json_decode($response);

	return $json;
}

function post_recurso($url, $data) {

    global $token;

    // json encode data
    $data_string = json_encode($data, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);

    // Inicia cURL
    $session = curl_init($url);

    // Indica a cURL que retorne data
    curl_setopt($session, CURLOPT_RETURNTRANSFER, true);

    // Configura cabeceras
    $headers = array();
    $headers[] = 'Content-type: application/json';
    $headers[] = 'token:'.$token;
    curl_setopt($session, CURLOPT_HTTPHEADER, $headers);

    // Indica que se va ser una petición POST
    curl_setopt($session, CURLOPT_POST, true);

    // Agrega parámetros
    curl_setopt($session, CURLOPT_POSTFIELDS, $data_string);
    curl_setopt($session, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($session, CURLOPT_SSL_VERIFYHOST, false);

    // Ejecuta cURL
    $response = curl_exec($session);
    $code = curl_getinfo($session, CURLINFO_HTTP_CODE);

    // Cierra la sesión cURL
    curl_close($session);

    //Esto es sólo para poder visualizar lo que se está retornando
    //print_r($response);

    return $response;
}


function login_post($url, $login) {

	$ch = curl_init($url);
	curl_setopt($ch,CURLOPT_POST,true);
	curl_setopt($ch, CURLOPT_POSTFIELDS,$login);
	curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
	curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
	//curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type:application/json'));
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

	$exec = curl_exec($ch);

	return $exec;


}
