<?php 

	if ($_SERVER["REQUEST_METHOD"] == "POST") {
		import_file(DIR_MODELS."Model.class.php");
		import_file(DIR_LIBRARIES."functions.php");

		$nome = filter_input(INPUT_POST, "nome_usuario", FILTER_SANITIZE_STRING);
		$telefone = filter_input(INPUT_POST, "telefone_usuario", FILTER_SANITIZE_STRING);
		$data_nascimento = filter_input(INPUT_POST, "data_nascimento_usuario", FILTER_SANITIZE_STRING);
		$sexo = filter_input(INPUT_POST, "sexo_usuario", FILTER_SANITIZE_STRING);

		$cep = filter_input(INPUT_POST, "cep_usuario", FILTER_SANITIZE_STRING);
		$rua = filter_input(INPUT_POST, "rua_usuario", FILTER_SANITIZE_STRING);
		$numero_casa = filter_input(INPUT_POST, "numero_casa_usuario", FILTER_SANITIZE_NUMBER_INT);
		$bairro = filter_input(INPUT_POST, "bairro_usuario", FILTER_SANITIZE_STRING);
		$complemento = filter_input(INPUT_POST, "complemento_usuario", FILTER_SANITIZE_STRING);

		$id_estado = filter_input(INPUT_POST, "id_estado", FILTER_SANITIZE_NUMBER_INT);
		$id_cidade = filter_input(INPUT_POST, "id_cidade", FILTER_SANITIZE_NUMBER_INT);

		$id_banco = encrypt_decode(filter_input(INPUT_POST, "id_banco", FILTER_SANITIZE_STRING));
		$agencia = filter_input(INPUT_POST, "numero_agencia_usuario", FILTER_SANITIZE_STRING);
		$conta = filter_input(INPUT_POST, "numero_conta_usuario", FILTER_SANITIZE_STRING);
		$pix = filter_input(INPUT_POST, "chave_pix_usuario", FILTER_SANITIZE_STRING);

		$senha = filter_input(INPUT_POST, "senha_usuario", FILTER_SANITIZE_STRING);

		$model = new Model();

		// Valida o data de nascimento
		if (validate_birth_date($data_nascimento) == false) {
			echo json_encode(["status" => false, "motivo" => "data_false"]);
			exit();
		}

		// Edita os dados do usuário
		if (!empty($senha)) {
			$result = $model->update("usuario", [
				"nome_usuario" => $nome,
				"telefone_usuario" => $telefone,
				"data_nascimento_usuario" => convert_date($data_nascimento),
				"sexo_usuario" => $sexo,
				"cep_usuario" => $cep,
				"rua_usuario" => $rua,
				"bairro_usuario" => $bairro,
				"numero_casa_usuario" => $numero_casa,
				"complemento_usuario" => $complemento,
				"id_estado" => $id_estado,
				"id_cidade" => $id_cidade,
				"id_banco" => $id_banco,
				"numero_agencia_usuario" => $agencia,
				"numero_conta_usuario" => $conta,
				"chave_pix_usuario" => $pix,
				"senha_usuario" => md5($senha)
			],[
				"id_usuario" => Session::get("id_usuario")
			]);
		}
		else{
			$result = $model->update("usuario", [
				"nome_usuario" => $nome,
				"telefone_usuario" => $telefone,
				"data_nascimento_usuario" => convert_date($data_nascimento),
				"sexo_usuario" => $sexo,
				"cep_usuario" => $cep,
				"rua_usuario" => $rua,
				"bairro_usuario" => $bairro,
				"numero_casa_usuario" => $numero_casa,
				"complemento_usuario" => $complemento,
				"id_estado" => $id_estado,
				"id_cidade" => $id_cidade,
				"id_banco" => $id_banco,
				"numero_agencia_usuario" => $agencia,
				"numero_conta_usuario" => $conta,
				"chave_pix_usuario" => $pix
			],[
				"id_usuario" => Session::get("id_usuario")
			]);
		}
		
		if ($result > 0) {
			// Gera o histórico da edição do usuário
			$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")
			]);

			// Editar o nome sessão do usuário
			Session::set([
				"nome_usuario" => $nome,
				"id_estado" => $id_estado,
				"id_cidade" => $id_cidade
			], [
				FILTER_SANITIZE_STRING,
				FILTER_SANITIZE_NUMBER_INT,
				FILTER_SANITIZE_NUMBER_INT
			]);

			$model->commit();
			echo json_encode(["status" => true]);
		}
		else{
			$model->rollback();
			echo json_encode(["status" => false]);
		}
	}
	else{
		show_403();
	}

?>