MIF_E31221325/Assets/script/HistoryScoreLoader.cs

239 lines
7.1 KiB
C#

using MySql.Data.MySqlClient;
using TMPro;
using UnityEngine;
using UnityEngine.Networking;
using System.Collections;
public class HistoryScoreLoader : MonoBehaviour
{
public TextMeshProUGUI txtnamaUser;
public TextMeshProUGUI txtNoAbsen;
public TextMeshProUGUI txtHistoryScore;
public TextMeshProUGUI txtPostestScore;
public TextMeshProUGUI txtLevelScore;
private void Start()
{
LoadUserInfo();
StartCoroutine(LoadScoresFromAPI());
}
void LoadUserInfo()
{
if (GlobalUser.Instance != null)
{
txtnamaUser.text = "Nama: " + GlobalUser.Instance.namaUser;
txtNoAbsen.text = "No Absen: " + GlobalUser.Instance.noAbsen;
}
else
{
txtnamaUser.text = "Nama: Tidak Dikenal";
txtNoAbsen.text = "No Absen: Tidak Dikenal";
}
}
IEnumerator LoadScoresFromAPI()
{
int userId = GlobalUser.Instance != null ? GlobalUser.Instance.userId : -1;
if (userId == -1)
{
txtNoAbsen.text = "Belum ada data.";
txtHistoryScore.text = "Belum ada data.";
txtPostestScore.text = "Belum ada data.";
txtLevelScore.text = "Belum ada data.";
yield break;
}
string url = "https://wifiapi.wazzgroup.com/api.php";
WWWForm form = new WWWForm();
form.AddField("api", "get_history_score");
form.AddField("id", userId);
UnityWebRequest request = UnityWebRequest.Post(url, form);
yield return request.SendWebRequest();
#if UNITY_2020_1_OR_NEWER
if (request.result != UnityWebRequest.Result.Success)
#else
if (request.isNetworkError || request.isHttpError)
#endif
{
Debug.LogError("Gagal mengambil data dari API: " + request.error);
txtHistoryScore.text = "Gagal memuat skor.";
txtPostestScore.text = "Gagal memuat skor.";
txtNoAbsen.text = "Gagal memuat data.";
txtLevelScore.text = "Gagal memuat skor.";
}
else
{
string json = request.downloadHandler.text;
HistoryScoreData data = JsonUtility.FromJson<HistoryScoreData>(json);
if (data.success)
{
txtHistoryScore.text = "Skor Pretest: " + data.pretest;
txtPostestScore.text = "Skor Postest: " + data.postest;
txtLevelScore.text = "Level Tertinggi: Level " + data.highestLevel + "\nSkor: " + data.highestScore;
}
else
{
//txtNoAbsen.text = "-";
txtHistoryScore.text = "Data tidak ditemukan.";
txtPostestScore.text = "-";
txtLevelScore.text = "-";
}
}
}
[System.Serializable]
public class HistoryScoreData
{
public bool success;
public int pretest;
public int postest;
public string no_absen;
public int highestLevel;
public int highestScore;
}
//public TextMeshProUGUI txtnamaUser;
//public TextMeshProUGUI txtHistoryScore;
//public TextMeshProUGUI txtLevelScore;
//public TextMeshProUGUI txtNoAbsen;
//private string connectionString;
//private MySqlConnection connection;
//private MySqlCommand command;
//void Start()
//{
// LoadUserInfo();
// LoadHistoryScore();
// LoadLevelTertinggiScore();
//}
//void LoadUserInfo()
//{
// if (GlobalUser.Instance != null)
// {
// txtnamaUser.text = "Nama: " + GlobalUser.Instance.namaUser;
// }
// else
// {
// txtnamaUser.text = "Nama: Tidak Dikenal";
// }
//}
//void Koneksi()
//{
// connectionString = "Server=127.0.0.1; Database=game; User=root; Password=; Charset=utf8;";
// connection = new MySqlConnection(connectionString);
// connection.Open();
//}
//void LoadHistoryScore()
//{
// try
// {
// Koneksi();
// int userId = GlobalUser.Instance != null ? GlobalUser.Instance.userId : -1;
// if (userId == -1)
// {
// Debug.LogWarning("User ID tidak ditemukan.");
// txtHistoryScore.text = "Belum ada data.";
// return;
// }
// string query = "SELECT pretest FROM score WHERE id = @id";
// command = new MySqlCommand(query, connection);
// command.Parameters.AddWithValue("@id", userId);
// object result = command.ExecuteScalar();
// if (result != null && float.TryParse(result.ToString(), out float score))
// {
// //txtHistoryScore.text = "Skor Pretest: " + score.ToString("F2");
// txtHistoryScore.text = "Skor Pretest: " + Mathf.RoundToInt(score).ToString();
// }
// else
// {
// txtHistoryScore.text = "Belum ada skor yang tersimpan.";
// }
// connection.Close();
// }
// catch (MySqlException ex)
// {
// Debug.LogError("Gagal mengambil skor history: " + ex.Message);
// txtHistoryScore.text = "Gagal memuat skor.";
// }
//}
//// Fungsi untuk memuat skor level tertinggi dari database
//void LoadLevelTertinggiScore()
//{
// int skorTertinggi = 0;
// int levelTertinggi = 0;
// try
// {
// Koneksi();
// int userId = GlobalUser.Instance != null ? GlobalUser.Instance.userId : -1;
// if (userId == -1)
// {
// Debug.LogWarning("User ID tidak ditemukan.");
// txtLevelScore.text = "Belum ada data.";
// return;
// }
// // Loop untuk mengambil skor dari level 1 hingga 10 dari database
// for (int i = 1; i <= 10; i++)
// {
// string query = $"SELECT level{i} FROM high_score WHERE id_score = @id";
// command = new MySqlCommand(query, connection);
// command.Parameters.AddWithValue("@id", userId);
// object result = command.ExecuteScalar();
// if (result != null && int.TryParse(result.ToString(), out int skor))
// {
// if (skor > skorTertinggi)
// {
// skorTertinggi = skor;
// levelTertinggi = i;
// }
// }
// }
// connection.Close();
// if (skorTertinggi > 0)
// {
// txtLevelScore.text = "Level Tertinggi: Level " + levelTertinggi + "\nSkor: " + skorTertinggi;
// // txtLevelScore.text = "Skor Tertinggi: " + skorTertinggi;
// }
// else
// {
// // txtLevelScore.text = "Skor Tertinggi: -";
// txtLevelScore.text = "Level Tertinggi: -\nSkor: -";
// }
// }
// catch (MySqlException ex)
// {
// Debug.LogError("Gagal mengambil skor level tertinggi: " + ex.Message);
// txtLevelScore.text = "Gagal memuat skor.";
// }
//}
}