Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ import org.ole.planet.myplanet.model.RealmSubmission
import org.ole.planet.myplanet.model.RealmSubmission.Companion.getExamMap
import org.ole.planet.myplanet.model.RealmTag
import org.ole.planet.myplanet.model.RealmUserModel
import org.ole.planet.myplanet.repository.CourseRepository
import org.ole.planet.myplanet.repository.LibraryRepository
import org.ole.planet.myplanet.repository.SubmissionRepository
import org.ole.planet.myplanet.repository.UserRepository
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
package org.ole.planet.myplanet.callback

interface TeamPageListener {
fun onAddDocument()
fun onAddCourse()
}
15 changes: 7 additions & 8 deletions app/src/main/java/org/ole/planet/myplanet/model/RealmMyTeam.kt
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,7 @@ open class RealmMyTeam : RealmObject() {
private val concatenatedLinks = ArrayList<String>()

private fun populateTeamFields(doc: JsonObject, team: RealmMyTeam, includeCourses: Boolean = false) {
println(doc)
team.userId = JsonUtils.getString("userId", doc)
team.teamId = JsonUtils.getString("teamId", doc)
team._rev = JsonUtils.getString("_rev", doc)
Expand Down Expand Up @@ -96,14 +97,12 @@ open class RealmMyTeam : RealmObject() {
team.updatedDate = JsonUtils.getLong("updatedDate", doc)
team.updated = JsonUtils.getBoolean("updated", doc)

if (includeCourses) {
val coursesArray = JsonUtils.getJsonArray("courses", doc)
team.courses = RealmList()
for (e in coursesArray) {
val id = e.asJsonObject["_id"].asString
if (!team.courses!!.contains(id)) {
team.courses!!.add(id)
}
val coursesArray = JsonUtils.getJsonArray("courses", doc)
team.courses = RealmList()
for (e in coursesArray) {
val id = e.asJsonObject["_id"].asString
if (!team.courses!!.contains(id)) {
team.courses!!.add(id)
}
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,15 @@
package org.ole.planet.myplanet.repository

import android.content.Context
import org.ole.planet.myplanet.model.RealmMyCourse
import org.ole.planet.myplanet.model.RealmMyLibrary
import org.ole.planet.myplanet.model.RealmMyTeam
import org.ole.planet.myplanet.model.RealmTeamTask
import org.ole.planet.myplanet.model.RealmUserModel

interface TeamRepository {
suspend fun getTeamResources(teamId: String): List<RealmMyLibrary>
suspend fun getTeamCourses(teamId: String): List<RealmMyCourse>
suspend fun getTeamByDocumentIdOrTeamId(id: String): RealmMyTeam?
suspend fun getTeamLinks(): List<RealmMyTeam>
suspend fun getTeamById(teamId: String): RealmMyTeam?
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ import org.ole.planet.myplanet.MainApplication
import org.ole.planet.myplanet.datamanager.ApiClient.client
import org.ole.planet.myplanet.datamanager.ApiInterface
import org.ole.planet.myplanet.datamanager.DatabaseService
import org.ole.planet.myplanet.model.RealmMyCourse
import org.ole.planet.myplanet.model.RealmMyLibrary
import org.ole.planet.myplanet.model.RealmMyTeam
import org.ole.planet.myplanet.model.RealmTeamTask
Expand Down Expand Up @@ -42,6 +43,16 @@ class TeamRepositoryImpl @Inject constructor(
}
}

override suspend fun getTeamCourses(teamId: String): List<RealmMyCourse> {
val team = getTeamById(teamId) ?: return emptyList()
val courses = queryList(RealmMyCourse::class.java) {
`in`("courseId", team.courses?.toTypedArray<String>()).findAll()
}
//val courses = mRealm.where(RealmMyCourse::class.java).`in`("id", team.courses?.toTypedArray<String>()).findAll()

return courses
}

override suspend fun getTeamByDocumentIdOrTeamId(id: String): RealmMyTeam? {
if (id.isBlank()) return null
return findByField(RealmMyTeam::class.java, "_id", id)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import org.ole.planet.myplanet.base.BaseNewsFragment
import org.ole.planet.myplanet.model.RealmMyTeam
import org.ole.planet.myplanet.model.RealmNews
import org.ole.planet.myplanet.model.RealmUserModel
import org.ole.planet.myplanet.repository.CourseRepository
import org.ole.planet.myplanet.repository.TeamRepository

private val Realm.isOpen: Boolean
Expand All @@ -21,6 +22,8 @@ abstract class BaseTeamFragment : BaseNewsFragment() {
var team: RealmMyTeam? = null
@Inject
lateinit var teamRepository: TeamRepository
@Inject
lateinit var courseRepository: CourseRepository


override fun onCreate(savedInstanceState: Bundle?) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -356,7 +356,7 @@ class TeamDetailFragment : BaseTeamFragment(), MemberChangeListener {
MainApplication.showDownload = true
selectPage(DocumentsPage.id)
MainApplication.showDownload = false
MainApplication.listener?.onAddDocument()
MainApplication.listener?.onAddCourse()
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,10 @@ import org.ole.planet.myplanet.ui.team.TeamPageConfig.ApplicantsPage
import org.ole.planet.myplanet.ui.team.TeamPageConfig.DocumentsPage
import org.ole.planet.myplanet.ui.team.TeamPageConfig.JoinRequestsPage
import org.ole.planet.myplanet.ui.team.TeamPageConfig.MembersPage
import org.ole.planet.myplanet.ui.team.TeamPageConfig.ResourcesPage
import org.ole.planet.myplanet.ui.team.TeamPageConfig.CoursesPage
import org.ole.planet.myplanet.ui.team.TeamPageConfig.SurveyPage
import org.ole.planet.myplanet.ui.team.TeamPageConfig.TeamPage
import org.ole.planet.myplanet.ui.team.teamCourse.TeamCourseFragment
import org.ole.planet.myplanet.ui.team.teamMember.JoinedMemberFragment
import org.ole.planet.myplanet.ui.team.teamMember.MembersFragment
import org.ole.planet.myplanet.ui.team.teamResource.TeamResourceFragment
Expand Down Expand Up @@ -54,7 +55,7 @@ class TeamPagerAdapter(
ApplicantsPage, JoinRequestsPage -> if (fragment is MembersFragment) {
fragment.setMemberChangeListener(memberChangeListener)
}
DocumentsPage, ResourcesPage -> if (fragment is TeamResourceFragment) {
CoursesPage -> if (fragment is TeamCourseFragment) {
MainApplication.listener = fragment
}
SurveyPage -> {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,16 +1,29 @@
package org.ole.planet.myplanet.ui.team.teamCourse

import android.content.DialogInterface
import android.graphics.Typeface
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.ArrayAdapter
import android.widget.ListView
import android.widget.TextView
import androidx.appcompat.app.AlertDialog
import androidx.lifecycle.lifecycleScope
import androidx.recyclerview.widget.LinearLayoutManager
import kotlinx.coroutines.launch
import org.ole.planet.myplanet.R
import org.ole.planet.myplanet.callback.TeamPageListener
import org.ole.planet.myplanet.databinding.FragmentTeamCourseBinding
import org.ole.planet.myplanet.databinding.MyLibraryAlertdialogBinding
import org.ole.planet.myplanet.model.RealmMyCourse
import org.ole.planet.myplanet.model.RealmMyLibrary
import org.ole.planet.myplanet.model.RealmNews
import org.ole.planet.myplanet.ui.team.BaseTeamFragment
import org.ole.planet.myplanet.utilities.CheckboxListView

class TeamCourseFragment : BaseTeamFragment() {
class TeamCourseFragment : BaseTeamFragment(), TeamPageListener {
private var _binding: FragmentTeamCourseBinding? = null
private val binding get() = _binding!!
private var adapterTeamCourse: AdapterTeamCourse? = null
Expand Down Expand Up @@ -43,12 +56,66 @@ class TeamCourseFragment : BaseTeamFragment() {
}
}

private fun showCourseListDialog() {
if (!isAdded || activity == null) return
val safeActivity = activity ?: return

viewLifecycleOwner.lifecycleScope.launch {
val existing = teamRepository.getTeamCourses(teamId)
val existingIds = existing.mapNotNull { it.courseId }
val availableLibraries = courseRepository.getAllCourses()
.filter { it.courseId !in existingIds }

val titleView = TextView(safeActivity).apply {
text = getString(R.string.select_resource)
setTextColor(context.getColor(R.color.daynight_textColor))
setPadding(75, 50, 0, 0)
textSize = 24f
typeface = Typeface.DEFAULT_BOLD
}

val myLibraryAlertdialogBinding = MyLibraryAlertdialogBinding.inflate(layoutInflater)
val alertDialogBuilder = AlertDialog.Builder(safeActivity)
.setCustomTitle(titleView)

alertDialogBuilder.setView(myLibraryAlertdialogBinding.root)
.setPositiveButton(R.string.add) { _: DialogInterface?, _: Int ->
val selectedResources = myLibraryAlertdialogBinding.alertDialogListView.selectedItemsList
.map { index -> availableLibraries[index] }
// viewLifecycleOwner.lifecycleScope.launch {
// teamRepository.addResourceLinks(teamId, selectedResources, user)
// //showLibraryList()
// }
}.setNegativeButton(R.string.cancel, null)

val alertDialog = alertDialogBuilder.create()
alertDialog.window?.setBackgroundDrawableResource(R.color.card_bg)
listSetting(alertDialog, availableLibraries, myLibraryAlertdialogBinding.alertDialogListView)
}
}

private fun listSetting(alertDialog: AlertDialog, courses: List<RealmMyCourse>, lv: CheckboxListView) {
val names = courses.map { it.courseTitle }
val adapter = ArrayAdapter(requireActivity(), R.layout.rowlayout, R.id.checkBoxRowLayout, names)
lv.choiceMode = ListView.CHOICE_MODE_MULTIPLE
lv.setCheckChangeListener {
alertDialog.getButton(AlertDialog.BUTTON_POSITIVE).isEnabled = lv.selectedItemsList.isNotEmpty()
}
lv.adapter = adapter
alertDialog.show()
alertDialog.getButton(AlertDialog.BUTTON_POSITIVE).isEnabled = lv.selectedItemsList.isNotEmpty()
}

override fun onNewsItemClick(news: RealmNews?) {}
override fun clearImages() {
imageList.clear()
llImage?.removeAllViews()
}

override fun onAddCourse() {
showCourseListDialog()
}

override fun onDestroyView() {
_binding = null
super.onDestroyView()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ import org.ole.planet.myplanet.ui.team.BaseTeamFragment
import org.ole.planet.myplanet.utilities.CheckboxListView

@AndroidEntryPoint
class TeamResourceFragment : BaseTeamFragment(), TeamPageListener, ResourceUpdateListner {
class TeamResourceFragment : BaseTeamFragment(), ResourceUpdateListner {
private var _binding: FragmentTeamResourceBinding? = null
private val binding get() = _binding!!
private lateinit var adapterLibrary: AdapterTeamResource
Expand Down Expand Up @@ -152,10 +152,6 @@ class TeamResourceFragment : BaseTeamFragment(), TeamPageListener, ResourceUpdat
}
}

override fun onAddDocument() {
showResourceListDialog()
}

override fun onDestroyView() {
super.onDestroyView()
_binding = null
Expand Down