diff --git a/app/src/main/java/com/healthjournal/ui/dashboard/MainActivity.kt b/app/src/main/java/com/healthjournal/ui/dashboard/MainActivity.kt index c373134..2a60205 100644 --- a/app/src/main/java/com/healthjournal/ui/dashboard/MainActivity.kt +++ b/app/src/main/java/com/healthjournal/ui/dashboard/MainActivity.kt @@ -41,16 +41,14 @@ class MainActivity : AppCompatActivity() { binding = ActivityMainBinding.inflate(layoutInflater) // Create notification channel NotificationUtils.createNotificationChannel(this) - // Schedule reminders scheduleHealthReminders(this) - setContentView(binding.root) user = FirebaseAuth.getInstance() database = FirebaseDatabase.getInstance() + userCheck() setupListener() - populateHistory() navigationBottomBar() } @@ -141,33 +139,12 @@ class MainActivity : AppCompatActivity() { } } - - - private fun addJournal(){ - if (dailyReport != false){ - Toast.makeText(this, "Daily Report Already Created", Toast.LENGTH_SHORT).show() - } else { - startActivity(Intent(this, JournalInputActivity::class.java)) - } - } - - private fun home(){ - } - - private fun profile(){ - intent = Intent(this, ProfileActivity::class.java) - startActivity(intent) - } - - private fun setupListener(){ binding.btnRecomendation.setOnClickListener { startActivity(Intent(this, RecommendationActivity::class.java)) - finish() } binding.btnInputData.setOnClickListener { startActivity(Intent(this, JournalInputActivity::class.java)) - finish() } } @@ -213,19 +190,18 @@ class MainActivity : AppCompatActivity() { } private fun userCheck() { - val user = FirebaseAuth.getInstance().currentUser - if (user == null) { - Toast.makeText(this, "Please Login to an account", Toast.LENGTH_SHORT).show() + user = FirebaseAuth.getInstance() - // Redirect to LoginActivity + if (user.currentUser == null) { + Toast.makeText(this, "Please Login to an account", Toast.LENGTH_SHORT).show() val intent = Intent(this, LoginActivity::class.java) startActivity(intent) finish() - } else { Toast.makeText(this, "Welcome back!", Toast.LENGTH_SHORT).show() dailycheck() getWeekCount() + populateHistory() } } @@ -250,7 +226,7 @@ class MainActivity : AppCompatActivity() { val systolicBP = snapshot.child("bloodPressureSYS").value.toString().toIntOrNull() ?: 0 val BMI = snapshot.child("bmi").value.toString().toFloatOrNull() ?: 0f val date = snapshot.child("date").value.toString() - val task = snapshot.child("recommendation").child("task").value as? List> ?: emptyList() + val task = snapshot.child("recommendation").child("tasks").value as? List> ?: emptyList() val resultData = ResultData(journalID, bloodSugar, diastolicBP, systolicBP, BMI, date, task) healthDataList.add(resultData) @@ -264,21 +240,27 @@ class MainActivity : AppCompatActivity() { } - private fun populateTodayReport(referencePath: String){ - val userID = user.currentUser!!.uid - database.getReference("users").child(userID).child("journal").child(referencePath).get().addOnCompleteListener { - if (it.isSuccessful) { - binding.tvBloodsugarLevel.text = it.result.child("bloodSugar").value.toString()+" mg/dL" - binding.tvBloodsugarDesc.text = it.result.child("recommendation").child("bloodSugarAnalysis").value.toString() - binding.tvBloodpressureLevel.text = it.result.child("bloodPressureDIA").value.toString()+"/"+it.result.child("bloodPressureSYS").value.toString()+" mm Hg" - binding.tvBloodpressureDesc.text = it.result.child("recommendation").child("bloodPressureAnalysis").value.toString() - binding.tvBmiLevel.text = it.result.child("BMI").value.toString() +" BMI" - binding.tvBmiDesc.text = it.result.child("recommendation").child("BMIAnalysis").value.toString() - } else { - Log.d("error", it.exception!!.message.toString()) - Toast.makeText(this, it.exception!!.message, Toast.LENGTH_SHORT).show() - } + private fun populateTodayReport(referencePath: String) { + if (!::user.isInitialized || user.currentUser == null) { + Log.e("MainActivity", "User not logged in, cannot fetch today's report") + return } - } + val userID = user.currentUser!!.uid + database.getReference("users").child(userID).child("journal").child(referencePath) + .get().addOnCompleteListener { + if (it.isSuccessful) { + val bmiValue = it.result.child("BMI").value.toString().toDoubleOrNull() ?: 0.0 + binding.tvBloodsugarLevel.text = it.result.child("bloodSugar").value.toString() + " mg/dL" + binding.tvBloodsugarDesc.text = it.result.child("recommendation").child("bloodSugarAnalysis").value.toString() + binding.tvBloodpressureLevel.text = it.result.child("bloodPressureDIA").value.toString() + "/" + it.result.child("bloodPressureSYS").value.toString() + " mm Hg" + binding.tvBloodpressureDesc.text = it.result.child("recommendation").child("bloodPressureAnalysis").value.toString() + binding.tvBmiLevel.text = String.format(Locale.getDefault(), "%.2f BMI", bmiValue) + binding.tvBmiDesc.text = it.result.child("recommendation").child("BMIAnalysis").value.toString() + } else { + Log.e("MainActivity", "Error fetching today's report: ${it.exception?.message}") + Toast.makeText(this, it.exception?.message, Toast.LENGTH_SHORT).show() + } + } + } } \ No newline at end of file diff --git a/app/src/main/java/com/healthjournal/ui/dashboard/MainAdapter.kt b/app/src/main/java/com/healthjournal/ui/dashboard/MainAdapter.kt index 0f6e982..3ab27ea 100644 --- a/app/src/main/java/com/healthjournal/ui/dashboard/MainAdapter.kt +++ b/app/src/main/java/com/healthjournal/ui/dashboard/MainAdapter.kt @@ -1,6 +1,7 @@ package com.healthjournal.ui.dashboard import android.content.Intent +import android.util.Log import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -49,19 +50,23 @@ class MainAdapter(private val healthDataList: MutableList) : Recycle } } - private fun countGoals (list: List>): String { + private fun countGoals(taskList: List>): String { + Log.d("debug", taskList.toString()) var completedGoals = 0 - var goalsCount = 0 - for (item in list) { - if (item["completed"] == true) { + val totalGoals = taskList.size + + for (task in taskList) { + val isCompleted = task["completed"] as? Boolean ?: false + if (isCompleted) { completedGoals++ } - goalsCount++ } - if (completedGoals == 0) { - return "No goals completed" + + return when { + totalGoals == 0 -> "No goals available" + completedGoals == 0 -> "No goals completed" + else -> "$completedGoals/$totalGoals goals completed" } - return "$completedGoals/$goalsCount goals completed" } override fun onBindViewHolder(holder: HealthViewHolder, position: Int) { diff --git a/app/src/main/java/com/healthjournal/ui/journal/detail/DetailJournalActivity.kt b/app/src/main/java/com/healthjournal/ui/journal/detail/DetailJournalActivity.kt index 67bb855..5b2e058 100644 --- a/app/src/main/java/com/healthjournal/ui/journal/detail/DetailJournalActivity.kt +++ b/app/src/main/java/com/healthjournal/ui/journal/detail/DetailJournalActivity.kt @@ -55,11 +55,14 @@ class DetailJournalActivity : AppCompatActivity() { if (task.isSuccessful) { val result = task.result if (result.exists()) { + val bmiValue = result.child("BMI").value.toString().toFloatOrNull() ?: 0f + Log.d("debug", bmiValue.toString()) + binding.tvBloodsugarLevel2.text = "${result.child("bloodSugar").value ?: "N/A"} mg/dL" binding.tvBloodsugarDesc.text = result.child("recommendation").child("bloodSugarAnalysis").value?.toString() ?: "No data" binding.tvBloodpressureLevel2.text = "${result.child("bloodPressureDIA").value ?: "N/A"}/${result.child("bloodPressureSYS").value ?: "N/A"} mm Hg" binding.tvBloodpressureDesc.text = result.child("recommendation").child("bloodPressureAnalysis").value?.toString() ?: "No data" - binding.tvBMILevel2.text = "${result.child("BMI").value ?: "N/A"} BMI" + binding.tvBMILevel2.text = String.format("%.2f BMI", bmiValue) binding.tvBMIDesc.text = result.child("recommendation").child("BMIAnalysis").value?.toString() ?: "No data" binding.tvJournalNote.text = result.child("note").value?.toString() ?: "No notes available" @@ -106,10 +109,9 @@ class DetailJournalActivity : AppCompatActivity() { } } - private fun setupListener() { - binding.btnDeleteHistory.setOnClickListener() { - deleteHistory() - } + private fun setupListener() { + binding.btnDeleteHistory.setOnClickListener() { + deleteHistory() } - + } } \ No newline at end of file diff --git a/app/src/main/java/com/healthjournal/ui/recommendation/RecomendationAdapter.kt b/app/src/main/java/com/healthjournal/ui/recommendation/RecomendationAdapter.kt index 25b5bcc..1b4fabf 100644 --- a/app/src/main/java/com/healthjournal/ui/recommendation/RecomendationAdapter.kt +++ b/app/src/main/java/com/healthjournal/ui/recommendation/RecomendationAdapter.kt @@ -14,7 +14,7 @@ class RecommendationAdapter( ) : RecyclerView.Adapter() { inner class RecommendationViewHolder(view: View) : RecyclerView.ViewHolder(view) { - val tvGoalName: TextView = view.findViewById(R.id.tv_goal_name) + val tvGoal: TextView = view.findViewById(R.id.tv_goal) val checkBox: CheckBox = view.findViewById(R.id.toggle) } @@ -26,7 +26,7 @@ class RecommendationAdapter( override fun onBindViewHolder(holder: RecommendationViewHolder, position: Int) { val (task, isCompleted) = recommendationList[position] - holder.tvGoalName.text = task + holder.tvGoal.text = task holder.checkBox.isChecked = isCompleted holder.checkBox.setOnCheckedChangeListener { _, isChecked -> onCheckedChange(position, isChecked) diff --git a/app/src/main/java/com/healthjournal/ui/recommendation/RecommendationActivity.kt b/app/src/main/java/com/healthjournal/ui/recommendation/RecommendationActivity.kt index 57cf637..f5beacf 100644 --- a/app/src/main/java/com/healthjournal/ui/recommendation/RecommendationActivity.kt +++ b/app/src/main/java/com/healthjournal/ui/recommendation/RecommendationActivity.kt @@ -39,11 +39,13 @@ class RecommendationActivity : AppCompatActivity() { if (task.isSuccessful) { task.result.children.forEach { if (it.child("date").value.toString() == today) { + val bmiValue = it.child("BMI").value.toString().toDoubleOrNull() ?: 0.0 + binding.tvBloodsugarLevel2.text = "${it.child("bloodSugar").value} mg/dL" binding.tvBloodsugarDesc.text = it.child("recommendation").child("bloodSugarAnalysis").value.toString() binding.tvBloodpressureLevel2.text = "${it.child("bloodPressureDIA").value}/${it.child("bloodPressureSYS").value} mm Hg" binding.tvBloodpressureDesc.text = it.child("recommendation").child("bloodPressureAnalysis").value.toString() - binding.tvBMILevel2.text = "${it.child("BMI").value} BMI" + binding.tvBMILevel2.text = "${bmiValue} BMI" binding.tvBMIDesc.text = it.child("recommendation").child("BMIAnalysis").value.toString() val tasks = it.child("recommendation").child("tasks").value diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 744b5b2..b373227 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -22,6 +22,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:visibility="visible" + tools:visibility="invisible" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent"> @@ -198,6 +199,7 @@ z android:layout_width="wrap_content" android:layout_height="wrap_content" android:visibility="invisible" + tools:visibility="visible" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent"> @@ -210,7 +212,7 @@ z android:text="TODAY HEALTH REPORT" android:textAlignment="center" android:textColor="@color/Primary_Dark" - android:textSize="20sp" + android:textSize="24sp" android:textStyle="bold" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" @@ -225,6 +227,7 @@ z android:textAlignment="center" android:textColor="@color/Primary_Light" android:textSize="14sp" + android:textStyle="bold" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/tv_title_2" /> @@ -256,10 +259,10 @@ z @@ -20,9 +20,9 @@