diff --git a/app/src/main/java/com/cyb3rko/techniklogger/fragments/MissionFragment.kt b/app/src/main/java/com/cyb3rko/techniklogger/fragments/MissionFragment.kt index b295a40..13f6d32 100644 --- a/app/src/main/java/com/cyb3rko/techniklogger/fragments/MissionFragment.kt +++ b/app/src/main/java/com/cyb3rko/techniklogger/fragments/MissionFragment.kt @@ -39,8 +39,10 @@ class MissionFragment : Fragment() { private val args: MissionFragmentArgs by navArgs() private var objectId = "" - private var time = "" + private var date = "" + private var dateTime = "" private var duration = 0f + private var time = "" private lateinit var participationAdapter: ParticipationAdapter private var adminMode = false private lateinit var sharedPref: SharedPreferences @@ -84,6 +86,7 @@ class MissionFragment : Fragment() { ParseController.fetchParticipations(objectId, false) { entries, e -> if (e == null) { ParseObject.deleteAllInBackground(entries) + initializeRecyclerView() participationAdapter.submitList(listOf()) showDivider(false) updateTechnikerCount(0) @@ -112,13 +115,13 @@ class MissionFragment : Fragment() { private fun loadData() { ParseController.fetchMission(objectId) { mission, e -> if (e == null) { - val date = SimpleDateFormat("dd.MM.yyyy", Locale.GERMANY).format(mission!!.date()) - time = mission.time() + date = SimpleDateFormat("dd.MM.yyyy", Locale.GERMANY).format(mission!!.date()) duration = mission.duration val prettyDuration = duration.toPrettyString() - time = if (time != "") ", $time ($prettyDuration h)" else ", $prettyDuration h" - val dateTime = date + time + val tempTime = mission.time() + time = if (tempTime != "") "$tempTime Uhr ($prettyDuration h)" else "$prettyDuration h" + dateTime = "$date, $time" binding.apply { if (titleView.text != mission.name) { @@ -168,14 +171,20 @@ class MissionFragment : Fragment() { } } + private fun isRecyclerViewInitialized() = this::participationAdapter.isInitialized + private fun initializeRecyclerView() { - if (this::participationAdapter.isInitialized) { + if (isRecyclerViewInitialized()) { return } participationAdapter = ParticipationAdapter(duration) { if (adminMode || it.name == sharedPref.getString(NAME, "")) { - val uhrzeit = if (it.time == "0") time else it.time - val message = "Arbeitszeit:
$uhrzeit Uhr

" + + val uhrzeit = if (it.time == "0") { + time + } else { + "${it.time} Uhr (${it.duration.toPrettyString()} h)" + } + val message = "Arbeitszeit:
$uhrzeit

" + "Wie möchtest du diesen Eintrag bearbeiten?" @Suppress("DEPRECATION") @@ -263,14 +272,15 @@ class MissionFragment : Fragment() { } .setNegativeButton("Entfernen") { _, _ -> val list = participationAdapter.currentList.toMutableList() - list.remove(it) + val subList = list.filter { filteredParticipation -> + filteredParticipation.name == it.name + } + list.remove(subList[0]) participationAdapter.submitList(list) updateTechnikerCount(list.size) - if (list.isEmpty()) { - showDivider(false) - } + if (list.isEmpty()) showDivider(false) + Participation.emptyObject(it.objectId).deleteInBackground() - if (participationAdapter.currentList.size == 0) showDivider(false) loadParticipations() } .show() @@ -281,9 +291,11 @@ class MissionFragment : Fragment() { } private fun memberExists(name: String): Boolean { - for (member in participationAdapter.currentList) { - if (name == member.name) { - return true + if (isRecyclerViewInitialized()) { + for (member in participationAdapter.currentList) { + if (name == member.name) { + return true + } } } return false @@ -327,9 +339,11 @@ class MissionFragment : Fragment() { if (e == null) { val currentSelection = BooleanArray(members.size) memberNames.forEachIndexed { index, name -> - participationAdapter.currentList.forEach { - if (name == it.name) { - currentSelection[index] = true + if (isRecyclerViewInitialized()) { + participationAdapter.currentList.forEach { + if (name == it.name) { + currentSelection[index] = true + } } } } @@ -406,9 +420,7 @@ class MissionFragment : Fragment() { } private fun emptyCheck() { - if (this::participationAdapter.isInitialized && - participationAdapter.currentList.isEmpty()) - { + if (isRecyclerViewInitialized() && participationAdapter.currentList.isEmpty()) { binding.divider.visibility = View.GONE } }