Disabled transaction type delete if used

dev
Laurent 7 years ago
parent 2344f4dc9f
commit 8ffa72d0f4
  1. 5
      app/src/main/java/net/pokeranalytics/android/model/realm/TransactionType.kt
  2. 15
      app/src/main/java/net/pokeranalytics/android/ui/activity/SessionActivity.kt
  3. 4
      app/src/main/java/net/pokeranalytics/android/ui/activity/components/Codes.kt
  4. 23
      app/src/main/java/net/pokeranalytics/android/ui/fragment/FeedFragment.kt
  5. 5
      app/src/main/java/net/pokeranalytics/android/ui/fragment/data/TransactionTypeDataFragment.kt
  6. 1
      app/src/main/res/values/strings.xml

@ -96,11 +96,12 @@ open class TransactionType : RealmObject(), NameManageable, StaticRowRepresentab
}
override fun isValidForDelete(realm: Realm): Boolean {
return true
return realm.where(Transaction::class.java)
.equalTo("type.id", this.id).findAll().isEmpty()
}
override fun getFailedDeleteMessage(status: DeleteValidityStatus): Int {
return R.string.relationship_error
return R.string.transaction_relationship_error
}
}

@ -1,8 +1,10 @@
package net.pokeranalytics.android.ui.activity
import android.app.Activity
import android.content.Context
import android.content.Intent
import android.os.Bundle
import androidx.fragment.app.Fragment
import kotlinx.android.synthetic.main.activity_session.*
import net.pokeranalytics.android.R
import net.pokeranalytics.android.ui.activity.components.PokerAnalyticsActivity
@ -16,6 +18,7 @@ class SessionActivity: PokerAnalyticsActivity() {
}
companion object {
fun newInstance(context: Context, isTournament: Boolean? = false, sessionId: String? = "") {
val intent = Intent(context, SessionActivity::class.java)
isTournament?.let {
@ -27,6 +30,17 @@ class SessionActivity: PokerAnalyticsActivity() {
context.startActivity(intent)
}
fun newInstanceforResult(fragment: Fragment, isTournament: Boolean? = false, sessionId: String? = "", requestCode: Int) {
val intent = Intent(fragment.requireContext(), SessionActivity::class.java)
isTournament?.let {
intent.putExtra(IntentKey.IS_TOURNAMENT.keyName, isTournament)
}
sessionId?.let {
intent.putExtra(IntentKey.SESSION_ID.keyName, sessionId)
}
fragment.startActivityForResult(intent, requestCode)
}
}
override fun onCreate(savedInstanceState: Bundle?) {
@ -37,6 +51,7 @@ class SessionActivity: PokerAnalyticsActivity() {
}
override fun onBackPressed() {
setResult(Activity.RESULT_OK)
super.onBackPressed()
(sessionFragment as SessionFragment).onBackPressed()
}

@ -2,7 +2,9 @@ package net.pokeranalytics.android.ui.activity.components
enum class RequestCode(var value: Int) {
DEFAULT(1),
NEW_REPORT(800),
NEW_SESSION(800),
NEW_TRANSACTION(801),
NEW_REPORT(802),
IMPORT(900)
}

@ -23,6 +23,7 @@ import net.pokeranalytics.android.model.realm.Filter
import net.pokeranalytics.android.model.realm.Session
import net.pokeranalytics.android.model.realm.Transaction
import net.pokeranalytics.android.ui.activity.*
import net.pokeranalytics.android.ui.activity.components.RequestCode
import net.pokeranalytics.android.ui.adapter.FeedSessionRowRepresentableAdapter
import net.pokeranalytics.android.ui.adapter.FeedTransactionRowRepresentableAdapter
import net.pokeranalytics.android.ui.adapter.RowRepresentableDelegate
@ -38,6 +39,11 @@ import java.util.*
class FeedFragment : FilterableFragment(), RowRepresentableDelegate {
private enum class Tab {
SESSIONS,
TRANSACTIONS
}
companion object {
const val REQUEST_CODE_MENU = 100
@ -107,6 +113,10 @@ class FeedFragment : FilterableFragment(), RowRepresentableDelegate {
data?.let {
this.saveFilter(this.requireContext(), it.getStringExtra(FiltersActivity.IntentKey.FILTER_ID.keyName))
}
} else if (requestCode == RequestCode.NEW_TRANSACTION.value && resultCode == RESULT_OK) {
this.selectTab(Tab.TRANSACTIONS)
} else if (requestCode == RequestCode.NEW_SESSION.value && resultCode == RESULT_OK) {
this.selectTab(Tab.SESSIONS)
}
}
@ -276,7 +286,7 @@ class FeedFragment : FilterableFragment(), RowRepresentableDelegate {
return
}
SessionActivity.newInstance(requireContext(), isTournament)
SessionActivity.newInstanceforResult(this, isTournament, requestCode = RequestCode.NEW_SESSION.value)
newSessionCreated = true
}
@ -289,8 +299,9 @@ class FeedFragment : FilterableFragment(), RowRepresentableDelegate {
this.showEndOfBetaMessage()
return
}
EditableDataActivity.newInstanceForResult(this, LiveData.TRANSACTION, null, RequestCode.NEW_TRANSACTION.value)
EditableDataActivity.newInstance(requireContext(), LiveData.TRANSACTION.ordinal)
// EditableDataActivity.newInstance(requireContext(), LiveData.TRANSACTION.ordinal)
}
/**
@ -329,11 +340,11 @@ class FeedFragment : FilterableFragment(), RowRepresentableDelegate {
when (it.filterableType) {
FilterableType.SESSION -> {
recyclerView.adapter = feedSessionAdapter
tabs.getTabAt(0)?.select()
this.selectTab(Tab.SESSIONS)
}
FilterableType.TRANSACTION -> {
recyclerView.adapter = feedTransactionAdapter
tabs.getTabAt(1)?.select()
this.selectTab(Tab.TRANSACTIONS)
}
else -> {
}
@ -359,4 +370,8 @@ class FeedFragment : FilterableFragment(), RowRepresentableDelegate {
}
}
private fun selectTab(tab: Tab) {
this.tabs.getTabAt(tab.ordinal)?.select()
}
}

@ -54,10 +54,7 @@ class TransactionTypeDataFragment : EditableDataFragment(), RowRepresentableData
override fun isEnabled(row: RowRepresentable): Boolean {
return when (row) {
TransactionTypeRow.TRANSACTION_ADDITIVE -> {
val realm = getRealm()
val useCount = realm.where(Transaction::class.java)
.equalTo("type.id", this.transactionType.id).findAll().size
return useCount == 0
return this.transactionType.isValidForDelete(getRealm())
}
else -> super.isEnabled(row)
}

@ -36,6 +36,7 @@
<string name="comparison_chart">Comparison chart</string>
<string name="filter_currently_selected">The filter cannot be deleted because it is currently selected.</string>
<string name="custom_field">Custom field</string>
<string name="transaction_relationship_error">The item is used in one or more transactions&#8230;Please delete the linked transactions first</string>
<string name="address">Address</string>
<string name="suggestions">Naming suggestions</string>

Loading…
Cancel
Save