diff --git a/app/src/main/java/com/onionsquad/bondoman/AddTransactionActivity.kt b/app/src/main/java/com/onionsquad/bondoman/AddTransactionActivity.kt index e49b61b1892a12f7b0a11a5ec1e4386ab37c519f..57d38616e76b0a2c50c1b89426eb4f106e285394 100644 --- a/app/src/main/java/com/onionsquad/bondoman/AddTransactionActivity.kt +++ b/app/src/main/java/com/onionsquad/bondoman/AddTransactionActivity.kt @@ -1,6 +1,9 @@ package com.onionsquad.bondoman +import android.content.BroadcastReceiver +import android.content.Context import android.content.Intent +import android.content.IntentFilter import android.os.Bundle import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.ViewModelProvider @@ -18,6 +21,10 @@ class AddTransactionActivity : AppCompatActivity() { private val database by lazy { TransactionDatabase.getInstance(this) } private val repository by lazy { TransactionRepository(database.transactionDao()) } + private lateinit var randomizeTransactionReceiver: BroadcastReceiver + private val ACTION_RANDOMIZE_TRANSACTION = "com.onionsquad.bondoman.ACTION_RANDOMIZE_TRANSACTION" + private val EXTRA_RANDOMIZED_TRANSACTION = "extra_randomized_transaction" + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) binding = ActivityAddTransactionBinding.inflate(layoutInflater) @@ -53,5 +60,34 @@ class AddTransactionActivity : AppCompatActivity() { startActivity(it) } } + randomizeTransactionReceiver = object : BroadcastReceiver() { + override fun onReceive(context: Context, intent: Intent) { + if (intent.action == ACTION_RANDOMIZE_TRANSACTION) { + val randomTransaction = intent.getSerializableExtra(EXTRA_RANDOMIZED_TRANSACTION) as? TransactionEntity + if (randomTransaction != null) { + populateTransactionFields(randomTransaction) + } + } + } + } + registerReceiver(randomizeTransactionReceiver, IntentFilter(ACTION_RANDOMIZE_TRANSACTION), RECEIVER_NOT_EXPORTED) + } + + private fun populateTransactionFields(transaction: TransactionEntity) { + binding.titleEditText.setText(transaction.title) + binding.amountEditText.setText(transaction.amount.toString()) + when (transaction.category) { + TransactionCategory.INCOME -> binding.incomeRadioButton.isChecked = true + TransactionCategory.OUTCOME -> binding.outcomeRadioButton.isChecked = true + else -> {} + } + binding.locationEditText.setText(transaction.location) + } + + override fun onDestroy() { + super.onDestroy() + unregisterReceiver(randomizeTransactionReceiver) } + + } \ No newline at end of file diff --git a/app/src/main/java/com/onionsquad/bondoman/room/TransactionEntity.kt b/app/src/main/java/com/onionsquad/bondoman/room/TransactionEntity.kt index 64898cbf7c8ebf97163227d9ddd15a23450d0bc8..2151096418194bcb9679a5adb6e44f06b9cc32de 100644 --- a/app/src/main/java/com/onionsquad/bondoman/room/TransactionEntity.kt +++ b/app/src/main/java/com/onionsquad/bondoman/room/TransactionEntity.kt @@ -5,6 +5,7 @@ import androidx.room.PrimaryKey import androidx.room.ColumnInfo import androidx.room.TypeConverters import com.onionsquad.bondoman.util.Converters +import java.io.Serializable import java.util.Date @Entity(tableName = "transactions") @@ -27,4 +28,4 @@ data class TransactionEntity( @ColumnInfo(name = "location") val location: String -) +) : Serializable diff --git a/app/src/main/java/com/onionsquad/bondoman/ui/settings/SettingsFragment.kt b/app/src/main/java/com/onionsquad/bondoman/ui/settings/SettingsFragment.kt index 1219bbe14f7a5a8503001852174bbf81f0539ad8..d439d0d7760c23860a5ecef4a20badc29670447c 100644 --- a/app/src/main/java/com/onionsquad/bondoman/ui/settings/SettingsFragment.kt +++ b/app/src/main/java/com/onionsquad/bondoman/ui/settings/SettingsFragment.kt @@ -30,6 +30,7 @@ import java.io.File import java.io.OutputStream import java.time.ZoneId import java.time.format.DateTimeFormatter +import java.util.Date class SettingsFragment : Fragment() { private var _binding: FragmentSettingsBinding? = null @@ -39,6 +40,9 @@ class SettingsFragment : Fragment() { private val database by lazy { TransactionDatabase.getInstance(requireContext()) } private val repository by lazy { TransactionRepository(database.transactionDao()) } + private val ACTION_RANDOMIZE_TRANSACTION = "com.onionsquad.bondoman.ACTION_RANDOMIZE_TRANSACTION" + private val EXTRA_RANDOMIZED_TRANSACTION = "extra_randomized_transaction" + private val saveXls = registerForActivityResult(CreateDocument("application/vnd.ms-excel")) { uri -> @@ -146,6 +150,16 @@ class SettingsFragment : Fragment() { Toast.makeText(requireContext(), R.string.transactions_sent, Toast.LENGTH_SHORT) .show() } + + buttonRandomizeTransaction.setOnClickListener { + val randomTransaction = generateRandomTransaction() + val intent = Intent(ACTION_RANDOMIZE_TRANSACTION).apply { + putExtra(EXTRA_RANDOMIZED_TRANSACTION, randomTransaction) + } + requireContext().sendBroadcast(intent) + Toast.makeText(requireContext(), "Transaksi acak dikirim", Toast.LENGTH_SHORT).show() + } + } return binding.root @@ -156,6 +170,20 @@ class SettingsFragment : Fragment() { startActivity(intent) } + private fun generateRandomTransaction(): TransactionEntity { + val titles = listOf("Belanja", "Makan", "Transportasi", "Hiburan") + val categories = listOf(TransactionCategory.INCOME, TransactionCategory.OUTCOME) + val locations = listOf("Jakarta", "Bandung", "Surabaya", "Yogyakarta") + + return TransactionEntity( + title = titles.random(), + amount = (1000..100000).random().toDouble(), + category = categories.random(), + date = Date(), + location = locations.random() + ) + } + override fun onDestroyView() { super.onDestroyView() _binding = null diff --git a/app/src/main/java/com/onionsquad/bondoman/ui/transaction/TransactionAdapter.kt b/app/src/main/java/com/onionsquad/bondoman/ui/transaction/TransactionAdapter.kt index b39a926ac4c347ae5a3e08f8d1763d99622c9af9..68e8ae1ddf11a61f68045ed42330c86fb354d643 100644 --- a/app/src/main/java/com/onionsquad/bondoman/ui/transaction/TransactionAdapter.kt +++ b/app/src/main/java/com/onionsquad/bondoman/ui/transaction/TransactionAdapter.kt @@ -7,6 +7,8 @@ import androidx.recyclerview.widget.RecyclerView import com.onionsquad.bondoman.EditTransactionActivity import com.onionsquad.bondoman.databinding.TransactionCardBinding import com.onionsquad.bondoman.room.TransactionEntity +import java.time.ZoneId +import java.time.format.DateTimeFormatter class TransactionAdapter( private val viewModel: TransactionViewModel, @@ -18,7 +20,11 @@ class TransactionAdapter( binding.titleTextView.text = transaction.title binding.amountTextView.text = "IDR ".plus(transaction.amount) binding.categoryTextView.text = transaction.category.toString() - binding.dateTextView.text = transaction.date.toString() + binding.dateTextView.text = transaction.date + .toInstant() + .atZone(ZoneId.systemDefault()) + .toLocalDateTime() + .format(DateTimeFormatter.ofPattern("dd/MM/yyyy HH:mm:ss")) binding.locationTextView.text = transaction.location binding.deleteButton.setOnClickListener {