Skip to content
Snippets Groups Projects
Commit cb7a4d38 authored by 0xzre's avatar 0xzre
Browse files

feat: transaction CRUD

parent 5d221933
No related merge requests found
Pipeline #61362 failed with stages
...@@ -2,11 +2,11 @@ ...@@ -2,11 +2,11 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android" <manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"> xmlns:tools="http://schemas.android.com/tools">
<uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<application <application
android:name=".BondowowoApp" android:name=".BondowowoApp"
...@@ -22,7 +22,11 @@ ...@@ -22,7 +22,11 @@
<activity <activity
android:name=".MainActivity" android:name=".MainActivity"
android:exported="false" android:exported="false"
android:theme="@style/AppTheme.NoActionBar"/> android:theme="@style/AppTheme.NoActionBar" />
<activity
android:name=".ui.transaction.TransactionActivity"
android:exported="false"
android:theme="@style/AppTheme.NoActionBar" />
<activity <activity
android:name=".LoginActivity" android:name=".LoginActivity"
android:exported="true" android:exported="true"
......
...@@ -23,12 +23,12 @@ class BondowowoApp : Application() { ...@@ -23,12 +23,12 @@ class BondowowoApp : Application() {
} }
override fun onTokenInvalid() { override fun onTokenInvalid() {
val intent = Intent(context, LoginActivity::class.java) // val intent = Intent(context, LoginActivity::class.java)
intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK // intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK
context.startActivity(intent) // context.startActivity(intent)
if (context is Activity) { // if (context is Activity) {
context.finish() // context.finish()
} // }
} }
override fun onNetworkError() { override fun onNetworkError() {
......
...@@ -3,32 +3,35 @@ package com.atm.bondowowo.ui.transaction ...@@ -3,32 +3,35 @@ package com.atm.bondowowo.ui.transaction
import android.content.Intent import android.content.Intent
import android.os.Bundle import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import com.atm.bondowowo.MainActivity
import com.atm.bondowowo.R import com.atm.bondowowo.R
import com.atm.bondowowo.ui.transaction.TransactionFragment.TransactionInteractionListener
class TransactionActivity : AppCompatActivity(), TransactionInteractionListener { class TransactionActivity : AppCompatActivity(), TransactionInputFragment.TransactionInputListener {
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
setContentView(R.layout.fragment_transaction) setContentView(R.layout.activity_transaction)
val fragment = TransactionFragment() val transactionInputFragment = TransactionInputFragment()
fragment.setListener(this)
// Get the id passed from the intent
val id = intent.getIntExtra("id", -1)
// Pass the id to the fragment
val args = Bundle().apply {
putInt("id", id)
}
transactionInputFragment.arguments = args
transactionInputFragment.setListener(this)
supportFragmentManager.beginTransaction() supportFragmentManager.beginTransaction()
.replace(R.id.transactionFragment, fragment) .add(R.id.fragment_container, transactionInputFragment)
.commit() .commit()
} }
override fun onTransactionItemClick(transactionId: Int?) { override fun onTransactionSubmitted() {
val intent = Intent(this, TransactionInputFragment::class.java) startActivity(Intent(this, MainActivity::class.java))
intent.putExtra("id", transactionId) finish()
startActivity(intent)
}
override fun onAddTransactionButtonClick() {
// Navigasi ke TransactionInputFragment
val intent = Intent(this, TransactionInputFragment::class.java)
startActivity(intent)
} }
} }
...@@ -2,6 +2,7 @@ package com.atm.bondowowo.ui.transaction ...@@ -2,6 +2,7 @@ package com.atm.bondowowo.ui.transaction
import android.app.AlertDialog import android.app.AlertDialog
import android.content.DialogInterface import android.content.DialogInterface
import android.content.Intent
import android.os.Bundle import android.os.Bundle
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
...@@ -17,13 +18,7 @@ import com.atm.bondowowo.data.entity.Transaction ...@@ -17,13 +18,7 @@ import com.atm.bondowowo.data.entity.Transaction
import com.google.android.material.floatingactionbutton.FloatingActionButton import com.google.android.material.floatingactionbutton.FloatingActionButton
class TransactionFragment : Fragment() { class TransactionFragment : Fragment() {
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?
): View? {
return inflater.inflate(R.layout.fragment_transaction, container, false)
}
private lateinit var recyclerView: RecyclerView private lateinit var recyclerView: RecyclerView
private lateinit var fab: FloatingActionButton private lateinit var fab: FloatingActionButton
...@@ -37,9 +32,6 @@ class TransactionFragment : Fragment() { ...@@ -37,9 +32,6 @@ class TransactionFragment : Fragment() {
fun onAddTransactionButtonClick() fun onAddTransactionButtonClick()
} }
fun setListener(listener: TransactionInteractionListener) {
this.listener = listener
}
override fun onCreateView( override fun onCreateView(
inflater: LayoutInflater, inflater: LayoutInflater,
...@@ -58,17 +50,20 @@ class TransactionFragment : Fragment() { ...@@ -58,17 +50,20 @@ class TransactionFragment : Fragment() {
override fun onClick(position: Int) { override fun onClick(position: Int) {
val dialog = AlertDialog.Builder(requireContext()) val dialog = AlertDialog.Builder(requireContext())
dialog.setTitle(list[position].nama) dialog.setTitle(list[position].nama)
dialog.setItems(R.array.transaction_option, dialog.setItems(R.array.transaction_option
DialogInterface.OnClickListener { dialog, which -> ) { dialog, which ->
if (which == 0) { if (which == 0) {
listener.onTransactionItemClick(list[position].id) val intent =
} else if (which == 1) { Intent(requireContext(), TransactionActivity::class.java)
database.transactionDao().delete(list[position]) intent.putExtra("id", list[position].id)
getData() startActivity(intent)
} else { } else if (which == 1) {
dialog.dismiss() database.transactionDao().delete(list[position])
} getData()
}) } else {
dialog.dismiss()
}
}
val dialogView = dialog.create() val dialogView = dialog.create()
dialogView.show() dialogView.show()
} }
...@@ -81,7 +76,7 @@ class TransactionFragment : Fragment() { ...@@ -81,7 +76,7 @@ class TransactionFragment : Fragment() {
) )
fab.setOnClickListener { fab.setOnClickListener {
listener.onAddTransactionButtonClick() startActivity(Intent(requireContext(), TransactionActivity::class.java))
} }
return view return view
......
package com.atm.bondowowo.ui.transaction package com.atm.bondowowo.ui.transaction
import android.content.Intent
import android.os.Bundle import android.os.Bundle
import android.util.Log
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
...@@ -9,6 +11,7 @@ import android.widget.EditText ...@@ -9,6 +11,7 @@ import android.widget.EditText
import android.widget.Toast import android.widget.Toast
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import androidx.navigation.fragment.findNavController import androidx.navigation.fragment.findNavController
import com.atm.bondowowo.MainActivity
import com.atm.bondowowo.R import com.atm.bondowowo.R
import com.atm.bondowowo.data.AppDatabase import com.atm.bondowowo.data.AppDatabase
import com.atm.bondowowo.data.entity.Transaction import com.atm.bondowowo.data.entity.Transaction
...@@ -21,8 +24,17 @@ class TransactionInputFragment : Fragment() { ...@@ -21,8 +24,17 @@ class TransactionInputFragment : Fragment() {
private lateinit var lokasi_transaksi: EditText private lateinit var lokasi_transaksi: EditText
private lateinit var btnSave: Button private lateinit var btnSave: Button
private lateinit var database: AppDatabase private lateinit var database: AppDatabase
private lateinit var listener: TransactionInputListener
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { interface TransactionInputListener {
fun onTransactionSubmitted()
}
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
val view = inflater.inflate(R.layout.fragment_transaction_input, container, false) val view = inflater.inflate(R.layout.fragment_transaction_input, container, false)
nama_transaksi = view.findViewById(R.id.nama_transaksi) nama_transaksi = view.findViewById(R.id.nama_transaksi)
...@@ -68,7 +80,7 @@ class TransactionInputFragment : Fragment() { ...@@ -68,7 +80,7 @@ class TransactionInputFragment : Fragment() {
lokasi_transaksi.text.toString() lokasi_transaksi.text.toString()
) )
) )
findNavController().navigate(R.id.action_transactionInputFragment_to_transactionFragment) listener.onTransactionSubmitted()
} }
} else { } else {
Toast.makeText(requireContext(), "Input invalid", Toast.LENGTH_SHORT).show() Toast.makeText(requireContext(), "Input invalid", Toast.LENGTH_SHORT).show()
...@@ -77,4 +89,8 @@ class TransactionInputFragment : Fragment() { ...@@ -77,4 +89,8 @@ class TransactionInputFragment : Fragment() {
return view return view
} }
fun setListener(listener: TransactionInputListener) {
this.listener = listener
}
} }
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/fragment_container"
android:layout_width="match_parent"
android:layout_height="match_parent">
<!-- Other layout elements for the Activity -->
</FrameLayout>
\ No newline at end of file
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment