From 1016fd3ce67df3cec16236f449f4ebef5ed569b9 Mon Sep 17 00:00:00 2001
From: I Putu Bakta Hari Sudewa <13521150@std.stei.itb.ac.id>
Date: Sun, 31 Mar 2024 14:15:00 +0000
Subject: [PATCH] fix: amount field on save transaction unhandled exception

---
 .../transaction/TransactionViewModel.kt       |  2 +-
 .../fragments/ScanReceiptResultFragment.kt    | 47 +++++++++++--------
 2 files changed, 29 insertions(+), 20 deletions(-)

diff --git a/app/src/main/java/com/example/bondoman/data/viewmodels/transaction/TransactionViewModel.kt b/app/src/main/java/com/example/bondoman/data/viewmodels/transaction/TransactionViewModel.kt
index 2f61bb3..2341bf8 100644
--- a/app/src/main/java/com/example/bondoman/data/viewmodels/transaction/TransactionViewModel.kt
+++ b/app/src/main/java/com/example/bondoman/data/viewmodels/transaction/TransactionViewModel.kt
@@ -56,7 +56,7 @@ class TransactionViewModel(
 				Transaction(
 					title = title,
 					owner = currentUserNim,
-					amount = Long.MAX_VALUE,
+					amount = amount,
 					category = category,
 					location = location,
 				)
diff --git a/app/src/main/java/com/example/bondoman/views/fragments/ScanReceiptResultFragment.kt b/app/src/main/java/com/example/bondoman/views/fragments/ScanReceiptResultFragment.kt
index f62f7be..ba72717 100644
--- a/app/src/main/java/com/example/bondoman/views/fragments/ScanReceiptResultFragment.kt
+++ b/app/src/main/java/com/example/bondoman/views/fragments/ScanReceiptResultFragment.kt
@@ -145,7 +145,8 @@ class ScanReceiptResultFragment : Fragment() {
 			val observer =
 				Observer<ScanReceiptResponseItemsWrapper> { response ->
 					if (response.error != null) {
-						Toast.makeText(this.requireContext(), response.error, Toast.LENGTH_SHORT).show()
+						Toast.makeText(this.requireContext(), response.error, Toast.LENGTH_SHORT)
+							.show()
 						Navigation.findNavController(view)
 							.navigate(R.id.action_scanReceiptResultFragment_to_scanReceiptFragment)
 					} else {
@@ -211,24 +212,32 @@ class ScanReceiptResultFragment : Fragment() {
 
 		// Save button listener
 		viewBinding.scanReceiptFormButtonSave.setOnClickListener {
-			val title = viewBinding.scanReceiptFormTitle.getText().trim()
-			val amount = viewBinding.scanReceiptFormAmount.getText().trim().toLong()
-			val location = viewBinding.scanReceiptFormLocationField.text.toString().trim()
-			val isDataValid = validateInput(title, amount, location)
-
-			if (isDataValid == null) {
-				// Create new transaction
-				transactionViewModel.insertTransaction(
-					title,
-					TransactionCategory.EXPENSE,
-					amount,
-					location,
-				) { _, message ->
-					Toast.makeText(this.requireContext(), message, Toast.LENGTH_SHORT).show()
-					findNavController().popBackStack(R.id.scanReceiptFragment, false)
+			try {
+				val title = viewBinding.scanReceiptFormTitle.getText().trim()
+				val amount = viewBinding.scanReceiptFormAmount.getText().trim().toLong()
+				val location = viewBinding.scanReceiptFormLocationField.text.toString().trim()
+				val isDataValid = validateInput(title, amount, location)
+
+				if (isDataValid == null) {
+					// Create new transaction
+					transactionViewModel.insertTransaction(
+						title,
+						TransactionCategory.EXPENSE,
+						amount,
+						location
+					) { _, message ->
+						Toast.makeText(this.requireContext(), message, Toast.LENGTH_SHORT).show()
+						findNavController().popBackStack(R.id.scanReceiptFragment, false)
+					}
+				} else {
+					Toast.makeText(this.requireContext(), isDataValid, Toast.LENGTH_SHORT).show()
 				}
-			} else {
-				Toast.makeText(this.requireContext(), isDataValid, Toast.LENGTH_SHORT).show()
+			} catch (e: NumberFormatException) {
+				Toast.makeText(
+					this.requireContext(),
+					"Amount must be a positive number",
+					Toast.LENGTH_SHORT
+				).show()
 			}
 		}
 	}
@@ -243,7 +252,7 @@ class ScanReceiptResultFragment : Fragment() {
 		}
 
 		if (amount < 0) {
-			return "Amount must be greater than zero"
+			return "Amount must be a positive number"
 		}
 
 		if (location == "") {
-- 
GitLab