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(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."; // } //} }