<?php

include(__DIR__."/../../includes/config.php");

class AccionsPayTpv{
    
    /**
     * Clase per fer crides al ws de JAVA
     */
    
    static function preparaVenda(
        $idSessio,
        $adults,
        $infants,
        $preu,
        $compradorNom,
        $compradorEmail,
        $compradorTelefon,
        $lang
        ){
            include(__DIR__."/../../includes/config.php");
        // Crida al ws de reserva de tiquets
        $url = $vendaTiquetsSsl.'/ws/preparaVenda';
		// Prepara les dades per enviar 
        $data = http_build_query (array(
            "terminalCodi" => $terminal,
            "idSessio" => $idSessio,
            "adults" => $adults,
            "infants" => $infants,
            "preu" => $preu,
            "compradorNom" => $compradorNom,
            "compradorEmail" => $compradorEmail,
            "compradorTelefon" => $compradorTelefon,
            "codiOficina" => isset($_COOKIE['codiOficina']) ? $_COOKIE['codiOficina'] : null,
            "lang" => $lang
        ));
        return self::post($data, $url);
    }

    static function completaVenda(
        $localitzador,
		$email
    ){
        include(__DIR__."/../../includes/config.php");
        // Crida al ws de compra
        $url = $vendaTiquetsSsl.'/ws/completaVenda';
		// Prepara les dades per enviar 
        $data = http_build_query (array(
            "localitzador" => $localitzador,
            "terminalCodi" => $terminal,
            "email" => $email
        ));
        return self::post($data, $url);
    }

    static function notificacioPayTpv($data){
        include(__DIR__."/../../includes/config.php");
		
		$time_start = microtime(true); 
		$id = rand();
		
		// file_put_contents("/tmp/notificacioPayTpv.log", "START #$id#\r\n", FILE_APPEND);
		
        // Crida al ws de notificació amb les dades rebudes des de paytpv
        $url = $vendaTiquetsSsl.'/ws/notificacionsPayTPV';
		// Prepara les dades per enviar 
        $pData = http_build_query ($data);
        $post = self::post($pData, $url);
		
		$time = (microtime(true) - $time_start);
		
		// file_put_contents("/tmp/notificacioPayTpv.log", "TRAMA #$id# " . print_r($data, true), FILE_APPEND);
		
		// file_put_contents("/tmp/notificacioPayTpv.log", "END #$id# $time segons\r\n", FILE_APPEND);
		
		return $post;
    }

    static public function post($data,$url ){
        global $proves;

        $opcions = array(
            "ssl"=>array(
            "verify_peer"=>false,
            "verify_peer_name"=>false,
        ),
        'http' =>
            array(
                'method'  => 'POST',
                'header'  => 'Content-Type: application/x-www-form-urlencoded',
                'content' => $data
            )
        );

        $context = stream_context_create($opcions);
        $response;
        if($proves) {
            /** Resposta d'exemple */
            $response = json_decode( '{"codi":0,"missatge":"OK","localitzador":"RD4K12IU"}' );
        } else {
            /** Petició remota */
            $response = @file_get_contents($url, false, $context);
            $httpStatus = 500;
            if(isset($http_response_header))
                $httpStatus = explode(" ", $http_response_header[0])[1];
        }
        $res = json_decode( $response );
        $res->httpStatus = $httpStatus;
        return $res;
    }
}