<?php
	set_time_limit(59);
	ini_set('max_execution_time', 59);
	//if(!isset($_GET["teste"])){ exit; }
	echo 'Iniciou em '.date('d/m/Y H:i:s').'<br />';
    date_default_timezone_set('America/Fortaleza');
    //ini_set('display_errors',1);
    ini_set('memory_limit', '-1');
    ini_set('display_startup_erros',1);
    error_reporting(E_ALL);
    // header('Content-Type: text/xml');
	$ch = curl_init();
	$url = 'http://104.236.60.76:8080/eoddsbroker/api/provider/43/event';
	curl_setopt($ch, CURLOPT_URL, $url);
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
	curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
	$output = curl_exec($ch);
	$info = curl_getinfo($ch);
	curl_close($ch);

	$output = json_decode($output);
	$filename = 'aovivo-sb.xml';

	// echo '<pre>'.print_r($output).'</pre>';

	function cmp($a, $b){
	    return strcmp($a["campeonato"], $b["campeonato"]);
	}

    function traduzPaises($nome){
        $paises = array('Brazil' => 'Brasil', 'England' => 'Inglaterra', 'France' => 'França', 'Japan' => 'Japão', 'United States of America' => 'Estados Unidos', 'Cameroon' => 'Camarões', 'Argentina' => 'Argentina', 'Greece' => 'Grécia', 'Spain' => 'Espanha', 'Germany' => 'Alemanha', 'South Africa' => 'Africa do Sul', 'Ivory Coast' => 'Costa do Marfim', 'China' => 'China', 'Bolivia' => 'Bolívia', 'Czech Republic' => 'Republica Tcheca', 'Finland' => 'Finlândia', 'Guinea' => 'Guiné', 'Scotland' => 'Escócia', 'Italy' => 'Itália', 'Hungary' => 'Hungria', 'Iceland' => 'Islândia', 'Jamaica' => 'Jamaica', 'Austria' => 'Austria', 'Argentina' => 'Argentina', 'Australia' => 'Austrália', 'Azerbaijan' => 'Azerbaijão', 'Bahrain' => 'Bahrein', 'Belgium' => 'Bélgica', 'Croatia' => 'Croácia', 'New Zeland' => 'Nova Zelândia', 'Cuba' => 'Cuba', 'Egypt' => 'Egito', 'Ecuador' => 'Equador', 'Ireland' => 'Irlanda', 'Iraq' => 'Iraque', 'Israel' => 'Israel', 'Kenya' => 'Quênia', 'Korea' => 'Coréia', 'Malaysia' => 'Malásia', 'Marocco' => 'Marrocos', 'Netherlands' => 'Holanda', 'Pakistan' => 'Paquistão', 'Paraguay' => 'Paraguai', 'Poland' => 'Polônia', 'Sweden' => 'Suécia', 'Rwanda' => 'Ruanda', 'Saudi Arabia' => 'Arábia Saudita', 'Uruguay' => 'Uruguai', 'Thailand' => 'Tailândia', 'Ukraine' => 'Ucrânia', 'Vietnam' => 'Vietnã', 'Algeria' => 'Argélia', 'Denmark' => 'Dinamarca', 'Europe' => 'Europa', 'Hong Kong' => 'Japão', 'Northern Ireland' => 'Irlanda do Norte', 'Morocco' => 'Marrocos', 'Luxembourg' => 'Luxemburgo', 'Latvia' => 'Letónia', 'Norway' => 'Noruega', 'Philippines' => 'Filipinas', 'Rep. Ireland' => 'Irlanda', 'Romania' => 'Romênia', 'Serbia' => 'Sérvia', 'Singapore' => 'Singapura', 'Slovakia' => 'Eslováquia', 'South Korea' => 'Coréia do Sul', 'Switzerland' => 'Suíça', 'Turkey' => 'Turquia', 'USA' => 'Estados Unidos', 'United Arab Emirates' => 'Emirados Árabes', 'Uzbekistan' => 'Uzbequistão', 'Wales' => 'Gales', 'World' => 'Mundo', 'Slovenia' => 'Eslovênia', 'Cyprus' => 'Chipre', 'Kazakhstan' => 'Cazaquistão');

        foreach ($paises as $ing => $pt) {
            $nome = str_replace($ing, $pt, $nome);
        }

        return $nome;
    }

	function defineTempo($tempo){

		switch ($tempo) {
			case 'Second Half':
				return '2º Tempo';
				break;

			case 'First Half':
				return '1º Tempo';
				break;

			case 'Finished':
				return 'OFF';
				break;

			case 'Not Started':
				return 'OFF';
				return 'Não iniciado';
				break;

			case 'Halftime ':
				return 'Intervalo';
				break;
			
			default:
				return $tempo;
				break;
		}

		return $tempo;
	}

	function defineBloqueio($s){

		switch ($s) {
			case '0':
				return 'False';
				break;
			
			default:
				return 'True';
				break;
		}

	}

	function defineEsporte($s){
		return $s;
	}

	function subscription($jogo_id, $cancelar){	
		$ch = curl_init();
		$url = 'http://104.236.60.76:8080/eoddsbroker/api/provider/43/event/'.$jogo_id.'/subscription';
		curl_setopt($ch, CURLOPT_URL, $url);
		curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
		curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
		if($cancelar == '1'){
			curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "DELETE");
			curl_setopt($ch, CURLOPT_HEADER, false);
		}
		$output = curl_exec($ch);
		$info = curl_getinfo($ch);
		curl_close($ch);

		echo '<br />OTP: '.$output.'<br />';
		return $output;
	}

	function resetBroker(){
		$ch = curl_init("http://104.236.60.76:8080/eoddsbroker/api/reinitialize"); // such as http://example.com/example.xml
		curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
		curl_setopt($ch, CURLOPT_HEADER, 0);
		$data = curl_exec($ch);
		curl_close($ch);
	}


    function alteraCotacao($odd, $porcentagem, $sinal){

        if($sinal == '+'){
          $add = $odd / 100;
          $add *= $porcentagem;
          $odd = $odd + $add;
        }
        else {
          $add = $odd / 100;
          $add *= $porcentagem;
          $odd = $odd - $add;
        }


        if($odd <= 1.01){ $odd = 0; }
        return number_format($odd, 2);
    }

	// echo 'O: '.print_r($output);

	foreach ($output as $r1) {
		foreach ($r1 as $r2) {
			// echo 'PEGA: '.$r2->id.' <br />';
			$jogos[$i]['bookmaker'] = $r2->bm;
			$jogos[$i]['std'] = $r2->std;
			$jogos[$i]['id'] = $r2->id;
			$jogos[$i]['campeonato'] = $r2->inf;
			$jogos[$i]['esporte'] = $r2->s;
			$jogos[$i]['bloqueado'] = $r2->b;
			$jogos[$i]['campeonato'] = $r2->inf;
			$jogos[$i]['pn'] = $r2->pn;
			$jogos[$i]['tempo'] = $r2->tm / 60;
			$jogos[$i]['jogo'] = $r2->t1->n.' x '.$r2->t2->n;

			// Consulta ODDS, tempo e placar

			$i++;
		}
	}

	usort($jogos, "cmp");

	echo 'T: '.count($jogos).' <br /><br />';

	//echo 'IDS: '.$ids;
	//print_r($jogos);

	$xatual = simplexml_load_file($filename);
	$jatual = array();

	foreach ($xatual as $j) {
		$jid = (string)$j->id;
		$jatual[$jid]['tempo'] = (string)$j->tempo;
		$jatual[$jid]['placar_jogo'] = (string)$j->placar_jogo;
		$jatual[$jid]['time1'] = (string)$j->cotacoes->time1;
		$jatual[$jid]['empate'] = (string)$j->cotacoes->empate;
		$jatual[$jid]['time2'] = (string)$j->cotacoes->time2;
		$jatual[$jid]['casaid'] = (string)$j->cotacoes->casaid;
		$jatual[$jid]['empateid'] = (string)$j->cotacoes->empateid;
		$jatual[$jid]['foraid'] = (string)$j->cotacoes->foraid;
	}

	##################### LOOP #####################
	$iux = 0;
	$brokerResetado = 0;
	$matchesCorrecao = array();

	while ($iux < 11) {
		$iux++;
		$ret = '<aovivo data="'.date('Y-m-d H:i:s').'">';

		foreach ($jogos as $j) {
			if($j["esporte"] <> '50'){ continue; }
			$tempo = defineTempo($j["pn"]);
			if($tempo == 'OFF'){ continue; }
			if($tempo <> $j["pn"] && $tempo <> 'Não iniciado'){ $tempo = ((int)$j["tempo"]); }
			if($j["pn"] == 'Halftime'){ $tempo = 'Intervalo'; }
			if(((int)$j["tempo"]) >= 88){ continue; }
			//if($tempo == 'Não iniciado'){ continue; }

			// Inicialização
			$placar_jogo = '-:-';
			$time1 = '--';
			$empate = '--';
			$time2 = '--';
			$casaid = '--';
			$empate = '--';
			$foraid = '--';
			$jid = $j["id"];
			$jstd = $j["std"];
        	if((int)$jstd == 0 || (int)$jstd == '0'){ $jstd = $jid; }
			$atualizacao = '...';
			$atualizacao_codigo = '...';

			if(file_exists('xml/live/'.$jstd.'.xml')){
				$xml = simplexml_load_file('xml/live/'.$jstd.'.xml');
	        	$mainodds = array();
	        	$data_atualizacao_xml = $xml->attributes()->data;
	        	$placar_jogo = $xml->attributes()->placar;
	        	$atualizacao = $xml->attributes()->atualizacao;
	        	$atualizacao_codigo = $xml->attributes()->atualizacao_codigo;

				// Percorre XML
				foreach ($xml as $b) {
					if($b->attributes()->name == 'Vencedor do Encontro'){
						foreach ($b as $o) {
		                    switch ((string)$o->attributes()->name) {
		                        case 'Casa':
		                            $mainodds['casa']['id'] = (string)$o->attributes()->id;
		                            $mainodds['casa']['odd'] = number_format((string)$o->attributes()->odd, 2);
		                            break;
		                            
		                        case 'Empate':
		                            $mainodds['empate']['id'] = (string)$o->attributes()->id;
		                            $mainodds['empate']['odd'] = number_format((string)$o->attributes()->odd, 2);
		                            break;
		                            
		                        case 'Visitante':
		                            $mainodds['visitante']['id'] = (string)$o->attributes()->id;
		                            $mainodds['visitante']['odd'] = number_format((string)$o->attributes()->odd, 2);
		                            break;
		                        
		                        default:
		                            # code...
		                            break;
		                    }
						}
					}
				}

				$placar_jogo = $placar_jogo;
				$atualizacao = $atualizacao;
				$time1 = $mainodds['casa']['odd'];
				$empate = $mainodds['empate']['odd'];
				$time2 = $mainodds['visitante']['odd'];
				$casaid = $mainodds['casa']['id'];
				$empateid = $mainodds['empate']['id'];
				$foraid = $mainodds['visitante']['id'];

				// echo 'ISS '.$j["id"].' | C: '.$time1.' | E: '.$empate.' | F: '.$time2.' <br />';
			}

			$atualizacao = str_replace('MatchInfo', 'Falha na transmissão', $atualizacao);
			//if($placar_jogo == ':'){ continue; }

			if($time1 == '1.01'){ $time1 = '--'; }
			if($empate == '1.01'){ $empate = '--'; }
			if($time2 == '1.01'){ $time2 = '--'; }

	        $teams = explode(' x ', $j["jogo"]);
	        $team1 = traduzPaises($teams[0]);
	        $team2 = traduzPaises($teams[1]);
			if($data_atualizacao_xml < date('Y-m-d H:i:s', strtotime('-1 minute', strtotime(date('Y-m-d H:i:s'))))){
				// $aCurl = subscription($j["id"], '1');
				// echo 'CANCELAMENTO '.$j["id"].' <br />';
				// unlink('xml/live/'.$jid.'.xml');
			}

			if(file_exists('xml/live/'.$jstd.'.xml') && $data_atualizacao_xml > date('Y-m-d H:i:s', strtotime('-1 minute', strtotime(date('Y-m-d H:i:s'))))){

			}
			elseif(file_exists('xml/live/'.$jstd.'.xml') && $data_atualizacao_xml < date('Y-m-d H:i:s', strtotime('-3 minutes', strtotime(date('Y-m-d H:i:s')))) && $brokerResetado == 0){
				//resetBroker(); $brokerResetado = 1;
				echo 'BROKER RESETADO! <BR />';
			}
			elseif(!file_exists('xml/live/'.$jstd.'.xml') && (int)$tempo > 10 && (int)$tempo < 13 && $brokerResetado == 0){
				//resetBroker(); $brokerResetado = 1;
				echo 'BROKER RESETADO! <BR />';

			}
			elseif(!file_exists('xml/live/'.$jstd.'.xml') && (int)$tempo > 40 && (int)$tempo < 43 && $brokerResetado == 0){
				//resetBroker(); $brokerResetado = 1;
				echo 'BROKER RESETADO! <BR />';

			}
			else {
				echo 'Chamou Subs. '.$jstd.' | DT: '.$data_atualizacao_xml.' | D-1: '.date('Y-m-d H:i:s', strtotime('-1 minute', strtotime(date('Y-m-d H:i:s')))).'<br />';
				$aCurl = subscription($jid, '0');
			}

			$esp = 'Futebol';
			if($placar_jogo == '-:-'){ $esp = 'OFFLINE'; }
			$ret .= '<jogo>
						<id>'.$jstd.'</id>
						<tipo>'.$esp.'</tipo>
						<campeonato>'.$j["campeonato"].'</campeonato>
						<tempo>'.$tempo.'</tempo>
						<nome>'.$team1.' x '.$team2.'</nome>
						<placar_jogo>'.$placar_jogo.'</placar_jogo>
						<placar1>OFF</placar1>
						<placar2>OFF</placar2>
						<locked>'.defineBloqueio($j["bloqueado"]).'</locked>
						<atualizacao>'.$atualizacao.'</atualizacao>
						<atualizacao_codigo>'.$atualizacao_codigo.'</atualizacao_codigo>
						<cotacoes>
						<time1>'.alteraCotacao($time1, 0, '-').'</time1>
						<empate>'.alteraCotacao($empate, 0, '-').'</empate>
						<time2>'.alteraCotacao($time2, 0, '-').'</time2>
						<casaid>'.$casaid.'</casaid>
						<empateid>'.$empateid.'</empateid>
						<foraid>'.$foraid.'</foraid>
						</cotacoes>
					</jogo>';

			$matchesCorrecao[$j["id"]]['id'] = $jstd; 
			$matchesCorrecao[$j["id"]]['nome'] = $team1.' x '.$team2; 
			$matchesCorrecao[$j["id"]]['data'] = date('Y-m-d H:i:s'); 

		}

		$ret .= '</aovivo>';


		$ret = str_replace('&', '', $ret);
		file_put_contents($filename, $ret);
		//echo '<textarea>'.$ret.'</textarea>';
		echo 'Terminou loop! '.date('d/m/Y H:i:s').'<br />';
		sleep(5);
	}



	################################# ADICIONA JOGOS PARA CORREÇÃO #################################
		$xml = simplexml_load_file('jogos_correcao.xml');

		$jogos = array();

		foreach ($xml as $match) {
			if(!in_array((string)$match->attributes()->id, $jogos)){
				$jogos[(string)$match->attributes()->id]['id'] = (string)$match->attributes()->id;
				$jogos[(string)$match->attributes()->id]['nome'] = (string)$match->attributes()->nome;
				$jogos[(string)$match->attributes()->id]['data'] = (string)$match->attributes()->data;
				$jogos[(string)$match->attributes()->id]['aovivo'] = (int)$match->attributes()->aovivo;
				$jogos[(string)$match->attributes()->id]['atualizado_timestamp'] = (string)$match->attributes()->atualizado_timestamp;
			}
		}

		foreach ($matchesCorrecao as $id => $match) {
			if(!isset($jogos[$id])){
				$jogos[$id]['id'] = $match['id'];
				$jogos[$id]['nome'] = $match['nome'];
				$jogos[$id]['data'] = $match['data'];
				$jogos[$id]['aovivo'] = 1;
				$jogos[$id]['atualizado_timestamp'] = $match['atualizado_timestamp'];
			}
		}


		/* Monta XML
		$retorno = '<matches>';

		foreach ($jogos as $j => $data) {
			$datanome = str_replace("'", '', $data["nome"]);
			$datanome = str_replace("&", '', $datanome);

			// Confere se já passou 1 dia
			$confere = date('Y-m-d H:i:s', strtotime("-1 day", strtotime(date('Y-m-d H:i:s'))));

			if(strtotime($confere) >= strtotime($data["data"])){ continue; }
			$retorno .= '<match aovivo="'.(int)$data["aovivo"].'"  id="'.$j.'" nome="'.$datanome.'" data="'.$data["data"].'" atualizado_timestamp="'.$data["atualizado_timestamp"].'" />';
		}

		$retorno .= '</matches>';

		file_put_contents('jogos_correcao.xml', $retorno);*/

	################################# /ADICIONA JOGOS PARA CORREÇÃO #################################

	##################### /LOOP #####################
	echo 'Finalizou em '.date('d/m/Y H:i:s').'<br />';
?>
