<?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 = str_replace(",", ".", str_replace(".", "", filter_input(INPUT_POST, "valor_saque", FILTER_SANITIZE_STRING)));

		$config = obter_configuracao();

		if ($config->cobrar_taxa == "S") {
			if ($config->taxa_fixa == "S") {
				$valor_taxa = $config->valor_taxa;
			}
			else{
				$valor_taxa = (pct($config->valor_taxa) * $valor);
			}
		}
		else{
			$valor_taxa = "0.00";
		}

		$model = new Model();

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

		if (obter_saldo(Session::get("id_usuario")) < $valor) {
			echo json_encode(["status" => false, "motivo" => "valor"]);
			exit();
		}

		if ($valor < $config->valor_minimo_saque) {
			echo json_encode(["status" => false, "motivo" => "valor_minimo_saque"]);
			exit();
		}

		$usuario = $model->query("SELECT * FROM usuario WHERE id_usuario = :id", [":id" => Session::get("id_usuario")])->fetch();

		if (empty($usuario->id_banco) or empty($usuario->numero_agencia_usuario) or empty($usuario->numero_conta_usuario)) {
			echo json_encode(["status" => false, "motivo" => "dados_bancarios"]);
			exit();
		}

		$id_saida = $model->insert("saida", [
			"id_usuario" => Session::get("id_usuario"),
			"valor_saida" => $valor,
			"descricao_saida" => "Valor separado devido uma solicitação de saque.",
			"datahora_saida" => date("Y-m-d H:i:s"),
			"status_saida" => "S"
		]);

		if ($id_saida > 0) {
			$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")
			]);

			$result = $model->insert("saque", [
				"id_usuario" => Session::get("id_usuario"),
				"id_banco" => $usuario->id_banco,
				"numero_agencia_saque" => $usuario->numero_agencia_usuario,
				"numero_conta_saque" => $usuario->numero_conta_usuario,
				"chave_pix_saque" => $usuario->chave_pix_usuario,
				"valor_saque" => $valor,
				"valor_taxa_saque" => $valor_taxa,
				"id_saida" => $id_saida,
				"datahora_solicitacao" => date("Y-m-d H:i:s"),
				"status_saque" => "E"
			]);

			if ($result > 0) {
				$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]);
			}
			else{
				$model->rollback();
				echo json_encode(["status" => false]);
			}
		}
		else{
			$model->rollback();
			echo json_encode(["status" => false]);
		}
	}
	else{
		show_403();
	}

?>