using Firebase.Database; using UnityEngine; using UnityEngine.UI; using UnityEngine.SceneManagement; using System.Text.RegularExpressions; using System.Threading.Tasks; // Tambahan public class DatabaseManager : MonoBehaviour { public InputField Name; public InputField NomorAbsen; private DatabaseReference dbReference; void Start() { dbReference = FirebaseDatabase.DefaultInstance.RootReference; NomorAbsen.contentType = InputField.ContentType.IntegerNumber; Name.onValueChanged.AddListener(FilterNamaInput); } public async void CreateUser() { // Validasi input kosong if (string.IsNullOrEmpty(Name.text) || string.IsNullOrEmpty(NomorAbsen.text)) { return; } // Validasi nama if (!Regex.IsMatch(Name.text, @"^[a-zA-Z\s]+$")) { return; } // Validasi absen harus angka int absen; if (!int.TryParse(NomorAbsen.text, out absen)) { return; } // Generate userID unik string userID = Name.text.ToLower().Replace(" ", "_") + "_" + NomorAbsen.text; PlayerPrefs.SetString("UserID", userID); PlayerPrefs.Save(); DataSnapshot snapshot = await dbReference.Child("users").Child(userID).GetValueAsync(); if (snapshot.Exists) { // Ambil skor jika sudah ada object scorePretestObj = snapshot.Child("score_pretest").Value; int scorePretest = scorePretestObj != null ? int.Parse(scorePretestObj.ToString()) : 0; object scoreQuisObj = snapshot.Child("score_quis").Value; int scoreQuis = scoreQuisObj != null ? int.Parse(scoreQuisObj.ToString()) : 0; PlayerPrefs.SetInt("ScorePretest", scorePretest); PlayerPrefs.SetInt("ScoreQuis", scoreQuis); PlayerPrefs.Save(); Debug.Log("User ditemukan. Skor dimuat dari Firebase."); } else { // Buat user baru User newUser = new User(Name.text, absen); string json = JsonUtility.ToJson(newUser); await dbReference.Child("users").Child(userID).SetRawJsonValueAsync(json); PlayerPrefs.SetInt("ScorePretest", 0); PlayerPrefs.SetInt("ScoreQuis", 0); PlayerPrefs.Save(); Debug.Log("User berhasil dibuat: " + Name.text); } SceneManager.LoadScene("PRETEST"); } private void FilterNamaInput(string input) { string filtered = Regex.Replace(input, @"[^a-zA-Z\s]", ""); if (filtered != input) { Name.text = filtered; } } }