<?php 

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

		$id_usuario = filter_input(INPUT_POST, "id_usuario", FILTER_SANITIZE_NUMBER_INT);
		$valor = str_replace(",", ".", str_replace(".", "", filter_input(INPUT_POST, "valor_transferencia", FILTER_SANITIZE_STRING)));

		$model = new Model();

		if ($model->issetElementInTable("usuario", ["id_usuario" => $id_usuario]) == false or Session::get("id_usuario") == $id_usuario) {
			echo json_encode(["status" => false, "motivo" => "ID"]);
			exit();
		}

		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();
		}

		$result = $model->insert("saida", [
			"id_usuario" => Session::get("id_usuario"),
			"valor_saida" => $valor,
			"descricao_saida" => "Transferência de saldo para o usuário do ID: ".$id_usuario,
			"datahora_saida" => date("Y-m-d H:i:s"),
			"status_saida" => "S"
		]);

		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")
			]);

			$result = $model->insert("entrada", [
				"id_usuario" => $id_usuario,
				"valor_entrada" => $valor,
				"descricao_entrada" => "Transferência de saldo do usuário do ID: ".Session::get("id_usuario"),
				"datahora_entrada" => date("Y-m-d H:i:s"),
				"status_entrada" => "S"
			]);

			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();
	}

?>