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

feat: transaction CRUD

parent 5d221933
Branches
Tags
No related merge requests found
Pipeline #61362 failed with stages
......@@ -2,11 +2,11 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_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.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_COARSE_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.WRITE_EXTERNAL_STORAGE" />
<application
android:name=".BondowowoApp"
......@@ -22,7 +22,11 @@
<activity
android:name=".MainActivity"
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
android:name=".LoginActivity"
android:exported="true"
......
......@@ -23,12 +23,12 @@ class BondowowoApp : Application() {
}
override fun onTokenInvalid() {
val intent = Intent(context, LoginActivity::class.java)
intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK
context.startActivity(intent)
if (context is Activity) {
context.finish()
}
// val intent = Intent(context, LoginActivity::class.java)
// intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK
// context.startActivity(intent)
// if (context is Activity) {
// context.finish()
// }
}
override fun onNetworkError() {
......
......@@ -3,32 +3,35 @@ package com.atm.bondowowo.ui.transaction
import android.content.Intent
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import com.atm.bondowowo.MainActivity
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?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.fragment_transaction)
setContentView(R.layout.activity_transaction)
val fragment = TransactionFragment()
fragment.setListener(this)
val transactionInputFragment = TransactionInputFragment()
// 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()
.replace(R.id.transactionFragment, fragment)
.add(R.id.fragment_container, transactionInputFragment)
.commit()
}
override fun onTransactionItemClick(transactionId: Int?) {
val intent = Intent(this, TransactionInputFragment::class.java)
intent.putExtra("id", transactionId)
startActivity(intent)
}
override fun onAddTransactionButtonClick() {
// Navigasi ke TransactionInputFragment
val intent = Intent(this, TransactionInputFragment::class.java)
startActivity(intent)
override fun onTransactionSubmitted() {
startActivity(Intent(this, MainActivity::class.java))
finish()
}
}
......@@ -2,6 +2,7 @@ package com.atm.bondowowo.ui.transaction
import android.app.AlertDialog
import android.content.DialogInterface
import android.content.Intent
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
......@@ -17,13 +18,7 @@ import com.atm.bondowowo.data.entity.Transaction
import com.google.android.material.floatingactionbutton.FloatingActionButton
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 fab: FloatingActionButton
......@@ -37,9 +32,6 @@ class TransactionFragment : Fragment() {
fun onAddTransactionButtonClick()
}
fun setListener(listener: TransactionInteractionListener) {
this.listener = listener
}
override fun onCreateView(
inflater: LayoutInflater,
......@@ -58,17 +50,20 @@ class TransactionFragment : Fragment() {
override fun onClick(position: Int) {
val dialog = AlertDialog.Builder(requireContext())
dialog.setTitle(list[position].nama)
dialog.setItems(R.array.transaction_option,
DialogInterface.OnClickListener { dialog, which ->
if (which == 0) {
listener.onTransactionItemClick(list[position].id)
} else if (which == 1) {
database.transactionDao().delete(list[position])
getData()
} else {
dialog.dismiss()
}
})
dialog.setItems(R.array.transaction_option
) { dialog, which ->
if (which == 0) {
val intent =
Intent(requireContext(), TransactionActivity::class.java)
intent.putExtra("id", list[position].id)
startActivity(intent)
} else if (which == 1) {
database.transactionDao().delete(list[position])
getData()
} else {
dialog.dismiss()
}
}
val dialogView = dialog.create()
dialogView.show()
}
......@@ -81,7 +76,7 @@ class TransactionFragment : Fragment() {
)
fab.setOnClickListener {
listener.onAddTransactionButtonClick()
startActivity(Intent(requireContext(), TransactionActivity::class.java))
}
return view
......
package com.atm.bondowowo.ui.transaction
import android.content.Intent
import android.os.Bundle
import android.util.Log
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
......@@ -9,6 +11,7 @@ import android.widget.EditText
import android.widget.Toast
import androidx.fragment.app.Fragment
import androidx.navigation.fragment.findNavController
import com.atm.bondowowo.MainActivity
import com.atm.bondowowo.R
import com.atm.bondowowo.data.AppDatabase
import com.atm.bondowowo.data.entity.Transaction
......@@ -21,8 +24,17 @@ class TransactionInputFragment : Fragment() {
private lateinit var lokasi_transaksi: EditText
private lateinit var btnSave: Button
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)
nama_transaksi = view.findViewById(R.id.nama_transaksi)
......@@ -68,7 +80,7 @@ class TransactionInputFragment : Fragment() {
lokasi_transaksi.text.toString()
)
)
findNavController().navigate(R.id.action_transactionInputFragment_to_transactionFragment)
listener.onTransactionSubmitted()
}
} else {
Toast.makeText(requireContext(), "Input invalid", Toast.LENGTH_SHORT).show()
......@@ -77,4 +89,8 @@ class TransactionInputFragment : Fragment() {
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