<?php 

	if (Session::get("tipo_usuario") != "1" and Session::get("tipo_usuario") != "2" and Session::get("tipo_usuario") != "6"){ show_403();}
	if ($_SERVER["REQUEST_METHOD"] == "POST") {
		import_file(DIR_MODELS."Model.class.php");
		import_file(DIR_LIBRARIES."functions.php");

		$valor_saldo = str_replace(",", ".", str_replace(".", "", filter_input(INPUT_POST, "valor_saldo", FILTER_SANITIZE_STRING)));
		$forma_pagamento = filter_input(INPUT_POST, "forma_pagamento", FILTER_SANITIZE_STRING);

		$model = new Model();

		if ($valor_saldo <= 0) {
			echo json_encode(["status" => false, "reason" => "valor_maior_zero"]);
			exit();
		}

		if ($forma_pagamento == "Transferência Bancária") {
			// Cadastra a Solicitação de Saldo
			$result = $model->insert("solicitacao_saldo", [
				"id_usuario" => intval(Session::get("id_usuario")),
				"valor_saldo" => $valor_saldo,
				"forma_pagamento" => $forma_pagamento,
				"data_hora_solicitacao_saldo" => date("Y-m-d H:i:s"),
				"status_solicitacao_saldo" => "E"
			]);

			if ($result > 0) {	
				// Gera o histórico da Solicitação de Saldo
				$last_query = $model->lastQuery();
				$model->insert("historico", [
					"comando_sql" => $last_query,
					"datahora_acao" => date("Y-m-d H:i:s"),
					"id_usuario" => Session::get("id_usuario")
				]);

				$model->commit();
				echo json_encode(["status" => true, "form_payment" => $forma_pagamento]);
			}
			else{
				$model->rollback();
				echo json_encode(["status" => false]);
			}
		}
		elseif ($forma_pagamento == "PagSeguro") {
			import_file(DIR_LIBRARIES."PagSeguro/PagSeguro.class.php");

			// Cadastra a Solicitação de Saldo
			$id_solicitacao_saldo = $model->insert("solicitacao_saldo", [
				"id_usuario" => intval(Session::get("id_usuario")),
				"valor_saldo" => $valor_saldo,
				"forma_pagamento" => $forma_pagamento,
				"data_hora_solicitacao_saldo" => date("Y-m-d H:i:s"),
				"status_solicitacao_saldo" => "E"
			]);

			if ($id_solicitacao_saldo > 0) {	
				// Gera o histórico da Solicitação de Saldo
				$last_query = $model->lastQuery();
				$model->insert("historico", [
					"comando_sql" => $last_query,
					"datahora_acao" => date("Y-m-d H:i:s"),
					"id_usuario" => Session::get("id_usuario")
				]);

				$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);

				$pagseguro->addItem([
					"id" => $id_solicitacao_saldo,
					"description" => "Aquisição de Saldo - ".$config->nome_sistema,
					"amount" => $valor_saldo,
					"quantity" => 1
				]);

				$pagseguro->setReference("S".$id_solicitacao_saldo);
				
				$pagseguro->setRedirect((isset($_SERVER["HTTPS"]) ? "https" : "http")."://".$_SERVER["HTTP_HOST"].URL_BASE."/saldo-aguardando-confirmacao/?saldo=".urlencode(encrypt_encode($id_solicitacao_saldo)));

				$pagseguro->setNotification((isset($_SERVER["HTTPS"]) ? "https" : "http")."://".$_SERVER["HTTP_HOST"].URL_BASE."/atualizar-status-saldo/?saldo=".urlencode(encrypt_encode($id_solicitacao_saldo)));
				
				$link_pagseguro = $pagseguro->checkout();

				$result = $model->update("solicitacao_saldo", [
					"link_pagamento" => $link_pagseguro
				], [
					"id_solicitacao_saldo" => $id_solicitacao_saldo
				]);

				$model->commit();
				echo json_encode(["status" => true, "form_payment" => $forma_pagamento, "link" => $link_pagseguro]);
			}
			else{
				$model->rollback();
				echo json_encode(["status" => false]);
			}
		}
		else{
			echo json_encode(["status" => false]);
			exit();
		}
	}
	else{
		show_403();
	}

?>