<?php 

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

		$nome = filter_input(INPUT_POST, "nome_usuario", FILTER_SANITIZE_STRING);
		$cpf_cnpj = filter_input(INPUT_POST, "cpf_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);

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

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

		$id_usuario = (int) encrypt_decode(filter_input(INPUT_POST, "id_usuario", FILTER_SANITIZE_STRING));

		$model = new Model();

		// Verifica se o cpf já existe
		if ($model->issetElementInTable("usuario", ["cpf_usuario" => $cpf_cnpj], ["id_usuario" => $id_usuario])) {
			echo json_encode(["status" => false, "reason" => "cpf"]);
			exit();
		}

		// Valida o cpf e cpnj
		if (validate_cpf($cpf_cnpj) == false) {
			if (validate_cnpj($cpf_cnpj) == false) {
				echo json_encode(["status" => false, "reason" => "cpf_false"]);
				exit();
			}
		}

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

		// Verifica se o e-mail já existe
		if ($model->issetElementInTable("usuario", ["email_usuario" => $email], ["id_usuario" => $id_usuario])) {
			echo json_encode(["status" => false, "reason" => "email"]);
			exit();
		}

		if (!empty($senha)) {
				$result = $model->update("usuario", [
				"nome_usuario" => $nome,
				"cpf_usuario" => $cpf_cnpj,
				"telefone_usuario" => $telefone,
				"data_nascimento_usuario" => convert_date($data_nascimento),
				"sexo_usuario" => $sexo,
				"id_estado" => $id_estado,
				"id_cidade" => $id_cidade,
				"email_usuario" => $email,
				"senha_usuario" => md5($senha)
			],[
				"id_usuario" => $id_usuario
			]);
		}
		else{
			$result = $model->update("usuario", [
				"nome_usuario" => $nome,
				"cpf_usuario" => $cpf_cnpj,
				"telefone_usuario" => $telefone,
				"data_nascimento_usuario" => convert_date($data_nascimento),
				"sexo_usuario" => $sexo,
				"id_estado" => $id_estado,
				"id_cidade" => $id_cidade,
				"email_usuario" => $email
			],[
				"id_usuario" => $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")
			]);

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

?>