<?php if (Session::get("tipo_usuario") != "1"){ show_403();} ?>
<?php import_file(DIR_TEMPLATES."header.php", ["title" => "Transações do PagSeguro", "active_page" => "transacoes-pagseguro"]); ?>
<?php import_file(DIR_LIBRARIES."functions.php"); ?>

<h4 class="mb-3">
	<i class="fa-regular fa-exchange"></i> Transações do PagSeguro
</h4>

<?php 

	import_file(DIR_LIBRARIES."PagSeguro/PagSeguro.class.php");

	$pagina = (isset($_GET["pag"])) ? filter_input(INPUT_GET, "pag", FILTER_SANITIZE_NUMBER_INT) : 1;

	$referencia = (isset($_GET["referencia"])) ? filter_input(INPUT_GET, "referencia", FILTER_SANITIZE_STRING) : null;
	$data_inicial = (isset($_GET["data_inicial"])) ? filter_input(INPUT_GET, "data_inicial", FILTER_SANITIZE_STRING) : date("d/m/Y", strtotime("-30 days", strtotime(date("Y-m-d"))));
	$data_final = (isset($_GET["data_final"])) ? filter_input(INPUT_GET, "data_final", FILTER_SANITIZE_STRING) : date("d/m/Y");

	$config = obter_configuracao();

	if ($config->ambiente_teste_pagseguro == "S") {
		$pagseguro = new PagSeguro(false);
	}
	else{
		$pagseguro = new PagSeguro(true);
	}

	$pagseguro->setEmail($config->email_pagseguro);
	$pagseguro->setToken($config->token_pagseguro);

	date_default_timezone_set("America/Sao_Paulo");

	$params = [
		"reference" => $referencia,
		"initialDate" => (!empty($data_inicial)) ? date("Y-m-d\TH:i", strtotime(convert_date($data_inicial))) : null,
		"finalDate" => (!empty($data_final)) ? date("Y-m-d\TH:i", strtotime(convert_date($data_final." ".date("H:i:s")))) : null,
		"page" => $pagina,
		"maxPageResults" => 15
	];

	$xml = $pagseguro->getTransaction(null, $params);

	$result = ($xml !== false) ? $xml->transactions->transaction : [];

	$n = ($pagina*15)-15 + 1;

?>

<div class="content-box">
	<form method="get">
		<div class="form-group">
			<label for="referencia">Referência</label>
			<div class="input-group">
				<input type="text" name="referencia" id="referencia" class="form-control" autocomplete="off" value="<?php echo $referencia; ?>" required>
				<div class="input-group-append">
					<button type="submit" class="btn btn-primary">
						<i class="fa-regular fa-search"></i>
					</button>
				</div>
			</div>
		</div>
	</form>

	<form method="get">
		<div class="form-group">
			<label for="data-inicial">Período</label>
			<div class="input-group">
				<input type="text" name="data_inicial" id="data-inicial" class="form-control data" placeholder="Data Inicial" autocomplete="off" value="<?php echo $data_inicial; ?>" data-toggle="popover" data-placement="bottom" data-trigger="hover" title="Aviso" data-content="A data inicial não pode ser anterior a 6 meses da data atual." required>
				<input type="text" name="data_final" id="data-final" class="form-control data" placeholder="Data Final" autocomplete="off" value="<?php echo $data_final; ?>" data-toggle="popover" data-placement="bottom" data-trigger="hover" title="Aviso" data-content="O intervalo entre data inicial e data final não pode ser superior a 30 dias e a data final não pode ser maior que data atual." required>
				<div class="input-group-append">
					<button type="submit" class="btn btn-primary">
						<i class="fa-regular fa-search"></i>
					</button>
				</div>
			</div>
		</div>
	</form>

	<hr>

	<div class="alert alert-info">
		<strong><i class="fa-regular fa-exclamation-circle"></i> Aviso:</strong> Todas as datas estão no Fuso Horários de São Paulo - SP
	</div>
	<div class="table-responsive">
		<table class="table table-sm table-hover table-striped">
			<thead class="thead-inverse">
				<tr>
					<th class="align-middle text-center">Código</th>
					<th class="align-middle text-center">Referência</th>
					<th class="align-middle text-center">Tipo</th>
					<th class="align-middle text-center">Data</th>
					<th class="align-middle text-center">Valor</th>
					<th class="align-middle text-center">Taxas</th>
					<th class="align-middle text-center">Valor a Receber</th>
					<th class="align-middle text-center">Status</th>
					<th class="align-middle text-center">Opção</th>
				</tr>
			</thead>
			<tbody>
				<?php foreach ($result as $i): ?>
					<tr>
						<td class="align-middle text-center"><?php echo strval($i->code); ?></td>
						<td class="align-middle text-center"><?php echo strval($i->reference); ?></td>
						<td class="align-middle text-center"><?php if (intval($i->type) == 1) {echo "Pagamento";} ?></td>
						<td class="align-middle text-center"><?php echo date("d/m/Y H:i:s", strtotime($i->date)); ?></td>
						<td class="align-middle text-center"><?php echo money_mask_BR(strval($i->grossAmount)); ?></td>
						<td class="align-middle text-center"><?php echo money_mask_BR(strval($i->feeAmount)); ?></td>
						<td class="align-middle text-center"><?php echo money_mask_BR(strval($i->netAmount)); ?></td>
						<td class="align-middle text-center"><?php echo $pagseguro->getStatusDescription(intval($i->status)); ?></td>
						<td class="align-middle text-center">
							<button type="button" class="btn btn-info btn-square btn-ver-mais" data-value="<?php echo strval($i->code); ?>" data-toggle="tooltip" data-placement="bottom" title="Ver Detalhes">
								<i class="fa-regular fa-search-plus"></i>
							</button>
						</td>
					</tr>	
				<?php endforeach; ?>
			</tbody>
		</table>
	</div>

	<ul class="pagination justify-content-center" style="margin-bottom: -15px;">
		<?php

			$total_paginas = ($xml !== false) ? intval($xml->totalPages) : 0;
						   
			if ($pagina <= $total_paginas and $pagina > 1) {
 				echo '<li class="page-item"><a href="?'.(!empty($data_inicial) ? "data_inicial=".urlencode($data_inicial)."&" : "").(!empty($data_final) ? "data_final=".urlencode($data_final)."&" : "").'pag='.($pagina-1).'" class="page-link"><span aria-hidden="true">&laquo;</span></a> </li>';
			}

			echo ' <li class="page-item active"><p class="page-link">'.$pagina.'</p></li> ';

			if ($pagina < $total_paginas) {	
				echo '<li class="page-item"><a href="?'.(!empty($data_inicial) ? "data_inicial=".urlencode($data_inicial)."&" : "").(!empty($data_final) ? "data_final=".urlencode($data_final)."&" : "").'pag='.($pagina+1).'" class="page-link"><span aria-hidden="true">&raquo;</span></a></li> ';
			}
			
		?>
	</ul>
</div>

<div class="modal fade" id="modal-transacao" tabindex="-1" role="dialog" aria-hidden="true">
	<div class="modal-dialog modal-lg" role="document">
		<div class="modal-content">
			<div class="modal-header">
				<h5 class="modal-title">
					<i class="fa-regular fa-exchange"></i> Dados da Transação
				</h5>
			</div>
			<div class="modal-body" id="modal-content" style="max-height: 500px; overflow-y: scroll;">
				
			</div>
			<div class="modal-footer">
				<button type="button" class="btn btn-white" data-dismiss="modal">
					<i class="fa-regular fa-times"></i> Fechar
				</button>
			</div>
		</div>
	</div>
</div>

<script>
	$(".data").mask("00/00/0000");

	var status_transacao = {
		1: "Aguardando pagamento",
		2: "Em análise",
		3: "Pago",
		4: "Disponível",
		5: "Em disputa",
		6: "Devolvida",
		7: "Cancelada"
	};

	var forma_pagamento = {
		1: "Cartão de crédito",
		2: "Boleto",
		3: "Débito online (TEF)",
		4: "Saldo PagSeguro",
		5: "Oi Paggo",
		7: "Depósito em conta"
	};

	var meio_pagamento = {
		101: "Cartão de crédito Visa",
		102: "Cartão de crédito MasterCard",
		103: "Cartão de crédito American Express",
		104: "Cartão de crédito Diners",
		105: "Cartão de crédito Hipercard",
		106: "Cartão de crédito Aura",
		107: "Cartão de crédito Elo",
		108: "Cartão de crédito PLENOCard",
		109: "Cartão de crédito PersonalCard",
		110: "Cartão de crédito JCB",
		111: "Cartão de crédito Discover",
		112: "Cartão de crédito BrasilCard",
		113: "Cartão de crédito FORTBRASIL",
		114: "Cartão de crédito CARDBAN",
		115: "Cartão de crédito VALECARD",
		116: "Cartão de crédito Cabal",
		117: "Cartão de crédito Mais!",
		118: "Cartão de crédito Avista",
		119: "Cartão de crédito GRANDCARD",
		120: "Cartão de crédito Sorocred",
		122: "Cartão de crédito Up Policard",
		123: "Cartão de crédito Banese Card",
		201: "Boleto Bradesco",
		202: "Boleto Santander",
		301: "Débito online Bradesco",
		302: "Débito online Itaú",
		303: "Débito online Unibanco",
		304: "Débito online Banco do Brasil",
		305: "Débito online Banco Real",
		306: "Débito online Banrisul",
		307: "Débito online HSBC",
		401: "Saldo PagSeguro",
		501: "Oi Paggo",
		701: "Depósito em conta - Banco do Brasil"
	};

	function convertDate(date){
		var aux = date.split(".");
		var d = new Date(aux[0]);
		var day = (d.getDate() < 10) ? "0"+d.getDate() : d.getDate();
		var month = ((d.getMonth()+1) < 10) ? "0"+(d.getMonth()+1) : (d.getMonth()+1);
		var year = d.getFullYear();
		var hours = ((d.getHours()) < 10) ? "0"+(d.getHours()) : (d.getHours());
		var minutes = (d.getMinutes() < 10) ? "0"+d.getMinutes() : d.getMinutes();
		var seconds = (d.getSeconds() < 10) ? "0"+d.getSeconds() : d.getSeconds();

		return day+"/"+month+"/"+year+" "+hours+":"+minutes+":"+seconds;
	}

	function mascaraDinheiro(valor){
		var novo_valor = String(valor);

		if (novo_valor.indexOf(".") != -1) {
			var aux = novo_valor.split(".");

			if (aux[1].length == 1) {
				aux[1] += "0";
			}
			else if (aux[1].length > 2){
				aux[1] = aux[1].substr(0,2);
			}

			return "R$ "+aux[0]+","+aux[1];
		}
		else if (isNaN(novo_valor)) {
			return "R$ 0,00";
		}
		else{
			return "R$ "+novo_valor+",00";
		}
	}

	function mascaraTelefone(valor){
		var novo_valor = String(valor);

		if (novo_valor.length == 9) {
			return novo_valor.substr(0,5)+"-"+novo_valor.substr(5);
		}
		else if (novo_valor.length == 8){
			return novo_valor.substr(0,4)+"-"+novo_valor.substr(4);
		}
		return false;
	}

	$(".btn-ver-mais").click(function(){
		var codigo = $(this).data("value");

		$.ajax({
			type: "POST",
			data: {codigo: codigo},
			url: "<?php echo show_link("/obter-transacao-pagseguro/"); ?>",
			async: true
		}).then(function(response){
			var result = $.parseJSON(response);
		
			var dados = result.data;
			var html = "";

			html += "<div class='card'>";
			html += "<div class='card-body border-bottom'>";
			html += "<h5>Transação</h5>";
			html += "<p class='mb-0'><strong>Código da transação:</strong> "+dados.code+"</p>";
			html += "<p class='mb-0'><strong>Código de referência:</strong> "+dados.reference+"</p>";
			html += "<p class='mb-0'><strong>Forma de Pagamento:</strong> "+window.forma_pagamento[dados.paymentMethod.type]+" ("+window.meio_pagamento[dados.paymentMethod.code]+")</p>";
			if (dados.paymentLink != undefined) {
				html += "<p class='mb-0'><strong>Link do Pagamento:</strong> <a href='"+dados.paymentLink+"' target='_blank'>Clique Aqui</a></p>";
			}
			html += "<p class='mb-0'><strong>Valor Pago:</strong> "+mascaraDinheiro(dados.grossAmount)+"</p>";
			html += "<p class='mb-0'><strong>Data da Ultima Atualização:</strong> "+convertDate(dados.lastEventDate)+"</p>";
			html += "<p class='mb-0'><strong>Status:</strong> "+window.status_transacao[dados.status]+"</p>";
			html += "</div>";

			html += "<div class='card-body border-bottom'>";
			html += "<h5>Comprador</h5>";
			html += "<p class='mb-0'><strong>Nome:</strong> "+dados.sender.name+"</p>";
			html += "<p class='mb-0'><strong>E-mail:</strong> "+dados.sender.email+"</p>";
			html += "<p class='mb-0'><strong>Telefone:</strong> ("+dados.sender.phone.areaCode+") "+mascaraTelefone(dados.sender.phone.number)+"</p>";
			html += "<p class='mb-0'><strong>"+dados.sender.documents.document.type+":</strong> "+dados.sender.documents.document.value+"</p>";
			html += "<p class='mb-0'><strong>CEP:</strong> "+dados.shipping.address.postalCode+"</p>";
			html += "<p class='mb-0'><strong>Endereço:</strong> "+dados.shipping.address.street+"</p>";
			html += "<p class='mb-0'><strong>Número:</strong> "+dados.shipping.address.number+"</p>";
			html += "<p class='mb-0'><strong>Bairro:</strong> "+dados.shipping.address.district+"</p>";
			html += "<p class='mb-0'><strong>Cidade:</strong> "+dados.shipping.address.city+"</p>";
			html += "<p class='mb-0'><strong>Estado:</strong> "+dados.shipping.address.state+"</p>";
			html += "</div>";
			html += "<div class='card-body'>";
			html += "<h5>Itens do Carrinho</h5>";
			html += "<p class='mb-0'><strong>ID:</strong> "+dados.items.item.id+"</p>";
			html += "<p class='mb-0'><strong>Descrição:</strong> "+dados.items.item.description+"</p>";
			html += "<p class='mb-0'><strong>Quantidade:</strong> "+dados.items.item.quantity+"</p>";
			html += "<p class='mb-0'><strong>Valor:</strong> "+mascaraDinheiro(dados.items.item.amount)+"</p>";
			html += "</div>";
			html += "</div>";

			$("#modal-content").html(html);
			$("#modal-transacao").modal("show");	
		}, function(error){
			console.log("Erro: "+error);
		});
	});
</script>

<?php import_file(DIR_TEMPLATES."footer.php"); ?>