diff --git a/app/build.gradle b/app/build.gradle index 8227ff53eb..ea6201c523 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -10,8 +10,8 @@ android { applicationId "org.ole.planet.myplanet" minSdkVersion 21 targetSdkVersion 34 - versionCode 1948 - versionName "0.19.48" + versionCode 1949 + versionName "0.19.49" ndkVersion '21.3.6528147' testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" vectorDrawables.useSupportLibrary = true diff --git a/app/src/main/java/org/ole/planet/myplanet/ui/dashboard/BellDashboardFragment.kt b/app/src/main/java/org/ole/planet/myplanet/ui/dashboard/BellDashboardFragment.kt index 677e156f12..58cd461927 100644 --- a/app/src/main/java/org/ole/planet/myplanet/ui/dashboard/BellDashboardFragment.kt +++ b/app/src/main/java/org/ole/planet/myplanet/ui/dashboard/BellDashboardFragment.kt @@ -24,8 +24,6 @@ import org.ole.planet.myplanet.databinding.FragmentHomeBellBinding import org.ole.planet.myplanet.model.RealmCertification import org.ole.planet.myplanet.model.RealmCourseProgress import org.ole.planet.myplanet.model.RealmMyCourse -import org.ole.planet.myplanet.model.RealmMyCourse.Companion.getCourseByCourseId -import org.ole.planet.myplanet.model.RealmMyCourse.Companion.getCourseSteps import org.ole.planet.myplanet.model.RealmStepExam import org.ole.planet.myplanet.model.RealmSubmission import org.ole.planet.myplanet.model.RealmUserModel @@ -149,26 +147,31 @@ class BellDashboardFragment : BaseDashboardFragment() { private fun showBadges() { fragmentHomeBellBinding.cardProfileBell.llBadges.removeAllViews() - val courseCount = countCourseIds(mRealm) - - for ((index, entry) in courseCount.withIndex()) { + val completedCourses = getCompletedCourses(mRealm, user?.id) + completedCourses.forEachIndexed { index, course -> val rootView = requireActivity().findViewById(android.R.id.content) val star = LayoutInflater.from(activity).inflate(R.layout.image_start, rootView, false) as ImageView - val courseId = entry.keys.first() - val count = entry.values.first() - val steps = getCourseSteps(mRealm, courseId) - if (count.toInt() == steps.size) { - setColor(courseId, star) - fragmentHomeBellBinding.cardProfileBell.llBadges.addView(star) - star.setOnClickListener { - val course = getCourseByCourseId(courseId, mRealm) - star.contentDescription = "${getString(R.string.completed_course)} ${course?.courseTitle}" - openCourse(course, index) - } + setColor(course.courseId, star) + fragmentHomeBellBinding.cardProfileBell.llBadges.addView(star) + star.contentDescription = "${getString(R.string.completed_course)} ${course.courseTitle}" + star.setOnClickListener { + openCourse(course, index) } } } + private fun getCompletedCourses(realm: Realm, userId: String?): List { + val myCourses = RealmMyCourse.getMyCourseByUserId(userId, realm.where(RealmMyCourse::class.java).findAll()) + val courseProgress = RealmCourseProgress.getCourseProgress(realm, userId) + + return myCourses.filter { course -> + val progress = courseProgress[course.id] + progress?.let { + it.asJsonObject["current"].asInt == it.asJsonObject["max"].asInt + } ?: false + } + } + private fun openCourse(realmMyCourses: RealmMyCourse?, position: Int) { if (homeItemClickListener != null) { val f: Fragment = TakeCourseFragment() @@ -180,28 +183,13 @@ class BellDashboardFragment : BaseDashboardFragment() { } } - private fun countCourseIds(mRealm: Realm): List> { - val courseIdCounts: MutableMap = HashMap() - val results = mRealm.where(RealmCourseProgress::class.java).findAll() - for (progress in results) { - val courseId = progress.courseId - if (courseId != null) { - if (courseIdCounts.containsKey(courseId)) { - courseIdCounts[courseId] = courseIdCounts[courseId]!! + 1 - } else { - courseIdCounts[courseId] = 1 - } - } - } - return courseIdCounts.map { mapOf(it.key to it.value) } - } - - private fun setColor(courseId: String, star: ImageView) = + private fun setColor(courseId: String?, star: ImageView) { if (RealmCertification.isCourseCertified(mRealm, courseId)) { star.setColorFilter(ContextCompat.getColor(requireContext(), R.color.colorPrimary)) } else { star.setColorFilter(ContextCompat.getColor(requireContext(), R.color.md_blue_grey_300)) } + } private fun declareElements() { fragmentHomeBellBinding.homeCardTeams.llHomeTeam.setOnClickListener { homeItemClickListener?.openCallFragment(TeamFragment()) }