<?php 

	$login_acesso = get_input("POST", "login_acesso", "STRING");
	$senha_acesso = get_input("POST", "senha_acesso", "STRING");

	$db = new DB();
	$session = new Session();

	if (!empty($login_acesso) and !empty($senha_acesso)) {
		$result = $db->query("
			SELECT * FROM usuario 
			WHERE 
				status_usuario = 'S' AND 
				(
					login_usuario = :login OR 
					email_usuario = :login 
				) AND 
				senha_usuario = :senha
		", [
			":login" => $login_acesso,
			":senha" => password($senha_acesso)
		]);

		if ($result->rowCount() == 1) {
			$data = $result->fetch();

			$session->set("usuario", [
				"id"     => $data->id_usuario,
				"nome"   => $data->nome_usuario,
				"email"  => $data->email_usuario,
				"perfil" => $data->id_perfil_usuario
			]);

			$client_data = get_client_access();

			$session->regenerateID();

			$result = $db->insert("log", [
				"id_usuario" => $data->id_usuario,
				"id_sessao_usuario" => $session->getID(),
				"http_user_agent" => $_SERVER["HTTP_USER_AGENT"],
				"ip_login" => $client_data["ip"],
				"plataforma_login" => $client_data["platform"],
				"navegador_login" => $client_data["browser"],
				"data_hora_login" => date("Y-m-d H:i:s")
			]);

			if ($result > 0) {
				$db->commit();
				echo json_encode([
					"status" => "success",
					"redirect" => get_link("/")
				]);
			}
			else{
				$db->rollback();
				echo json_encode([
					"status" => "error",
					"message" => "Ocorreu um erro ao tentar logar!"
				]);
			}
		}
		else{
			echo json_encode([
				"status" => "error",
				"message" => "E-mail, Login ou Senha Inválido!"
			]);
		}
	}
	else{
		echo json_encode([
			"status" => "warning",
			"message" => "Informe o E-mail ou Login e a Senha!"
		]);
	}

?>