<?php
	header("access-control-allow-origin: https://pagseguro.uol.com.br");

	require_once("../../config.php");

    $cs = new cs;

    $arquivo = fopen("log/arquivo_".time().".txt", "w");
	foreach($_REQUEST as $k => $v){
		fwrite($arquivo, $k . ' -> ' . $v);
	}
	fclose($arquivo);

	if(isset($_POST['notificationType'])){
		//echo 'ENTREI'; 
		$PagSeguro = new PagSeguro();
		$response = $PagSeguro->executeNotification($_POST);
		
		if($response->status==3 || $response->status==4 || $response->status==6) {    	
        	//PAGAMENTO CONFIRMADO
			//ATUALIZAR O STATUS NO BANCO DE DADOS	
			//Consulta os dados nas TABELAS PAGAMENTOS && PLANOS e retorna id, id_usuario, id_profile, tipo -- onde o pagamento ID for igual ao response reference		
			$q = $cs->executeQuery("
				SELECT 
				p.id, 
				p.id_usuario, 
				p.id_profile, 
				pl.tipo,
				pl.nome 
				from pagamentos p 
				INNER JOIN planos pl on 
				pl.id = p.id_profile 
				WHERE p.id = ".mysqli_real_escape_string($cs->con, $response->reference)."");
            
            $user = (object) $cs->fetchQuery($q)[0];

            $q = $cs->executeQuery("SELECT * from pagamentos WHERE id = ".mysqli_real_escape_string($cs->con, $response->reference)." AND pagseguro_status = $response->status");
			
			switch ($response->status){
				
				// Pagamento Efetuado
				case 3;
					// Verifica se o pagamento já não foi atualizado e atualiza o vencimento do cliente.			
			        if($cs->num_rows($q) == 0)
			        {
						$cs->executeQuery("UPDATE pagamentos SET data_baixa = NOW(), status_fatura = 'pago' WHERE id = ".mysqli_real_escape_string($cs->con, $response->reference)."");
						$cs->executeQuery("UPDATE usuarios SET status = 'normal', vencimento = date_format(DATE_ADD(NOW(), INTERVAL $user->tipo MONTH), '%Y-%m-%d'), profile = '$user->nome' WHERE id = ".mysqli_real_escape_string($cs->con, $user->id_usuario)."");
						$cs->updatePlanoIPTV($user->id_usuario);
			        }
				break;
				
				// Devoluçao
				case 6;
					// Verifica se o pagamento já não foi atualizado e atualiza o vencimento do cliente.
					
			        if($cs->num_rows($q) == 0)
			        {
						$cs->executeQuery("UPDATE pagamentos SET status_fatura = 'devolvido' WHERE id = ".mysqli_real_escape_string($cs->con, $response->reference)."");
						$cs->executeQuery("UPDATE usuarios SET vencimento = date_format(DATE_SUB(NOW(), INTERVAL $user->tipo MONTH), '%Y-%m-%d') WHERE id = ".mysqli_real_escape_string($cs->con, $user->id_usuario)."");
						$cs->updatePlanoIPTV($user->id_usuario);
			        }
				break;
			}

			$cs->executeQuery("UPDATE pagamentos SET pagseguro_status = $response->status, data_alteracao = NOW() WHERE id = ".mysqli_real_escape_string($cs->con, $response->reference)."");
			exit;

			/*
			1	Aguardando pagamento: o comprador iniciou a transação, mas até o momento o PagSeguro não recebeu nenhuma informação sobre o pagamento.
			2	Em análise: o comprador optou por pagar com um cartão de crédito e o PagSeguro está analisando o risco da transação.
			3	Paga: a transação foi paga pelo comprador e o PagSeguro já recebeu uma confirmação da instituição financeira responsável pelo processamento.
			4	Disponível: a transação foi paga e chegou ao final de seu prazo de liberação sem ter sido retornada e sem que haja nenhuma disputa aberta.
			5	Em disputa: o comprador, dentro do prazo de liberação da transação, abriu uma disputa.
			6	Devolvida: o valor da transação foi devolvido para o comprador.
			7	Cancelada: a transação foi cancelada sem ter sido finalizada.
			*/
		} else {
			//PAGAMENTO PENDENTE
			echo $PagSeguro->getStatusText($PagSeguro->status);

			
		}
	}
?>