using System.Collections; using System.Collections.Generic; using System.Globalization; using TMPro; using UnityEngine; using UnityEngine.SceneManagement; using System; public class InputUserController : MonoBehaviour { public TMP_InputField inputNama; public TMP_InputField inputKelas; public TMP_InputField inputAbsen; public TextMeshProUGUI infoText; public void OnSubmitClicked() { if (string.IsNullOrWhiteSpace(inputNama.text) || string.IsNullOrWhiteSpace(inputKelas.text) || string.IsNullOrWhiteSpace(inputAbsen.text)) { infoText.text = "Semua kolom wajib diisi."; return; } if (!int.TryParse(inputAbsen.text.Trim(), out int absen)) { infoText.text = "Nomor absen harus berupa angka."; return; } string namaInput = inputNama.text.Trim(); string namaFormat = FormatNama(namaInput); if (namaInput != namaFormat) { infoText.text = "Nama harus menggunakan format Title Case.\nContoh: Budi Setiawan"; return; } string username = namaFormat; string kelas = inputKelas.text.Trim().ToUpper(); string absenStr = absen.ToString(); string kodeLogin = $"{username}_{kelas}_{absenStr}"; if (!DBManager.IsConnectedToInternet()) { infoText.text = "Tidak ada koneksi internet."; return; } infoText.text = "Mencoba login..."; // Cek apakah user sudah ada di Firebase DBManager.SyncUserToFirebase(kodeLogin, success => { if (success) { // Jika user ada, ambil semua datanya dari Firebase TestManager.Instance.LoadAllUserDataFromFirebase(kodeLogin, loaded => { if (loaded) { infoText.text = "Login berhasil!"; if (TestManager.Instance.pretestScore > 0) SceneManager.LoadScene("Main Menu"); else SceneManager.LoadScene("Pretest"); } else { infoText.text = "Gagal memuat data user dari Firebase."; } }); } else { infoText.text = "Akun tidak ditemukan. Mencoba mendaftarkan user baru..."; // Buat akun baru di Firebase DBManager.CreateUser(kodeLogin, username, kelas, absenStr, created => { if (created) { // Simpan progress level awal (1) untuk semua materi if (LevelControl.Instance != null) { foreach (var pair in LevelControl.Instance.materiLevelPairs) { DBManager.SaveUnlockedLevel(kodeLogin, pair.materiName, 1); } } // Set user data di TestManager TestManager.Instance.SetUserData(username, 0, 0, kelas, absenStr); infoText.text = "Pendaftaran berhasil. Lanjut ke Pretest..."; SceneManager.LoadScene("Pretest"); } else { infoText.text = "Gagal mendaftarkan user. Periksa koneksi internet."; } }); } }); } private string FormatNama(string nama) { TextInfo textInfo = new CultureInfo("id-ID", false).TextInfo; return textInfo.ToTitleCase(nama.ToLower()); } }