From 3b6e3f82b57e6d2ba47f61870c9dc1efeb302e67 Mon Sep 17 00:00:00 2001
From: arieljovananda88 <jovanandaa@gmail.com>
Date: Thu, 4 Apr 2024 02:03:12 +0700
Subject: [PATCH] feat: add scan results

---
 .../java/com/example/bondoman/MainActivity.kt |  8 +++-
 .../example/bondoman/ui/scan/ScanFragment.kt  | 41 +++++++++++++++++--
 2 files changed, 45 insertions(+), 4 deletions(-)

diff --git a/app/src/main/java/com/example/bondoman/MainActivity.kt b/app/src/main/java/com/example/bondoman/MainActivity.kt
index ba0141b..c4a3ac7 100644
--- a/app/src/main/java/com/example/bondoman/MainActivity.kt
+++ b/app/src/main/java/com/example/bondoman/MainActivity.kt
@@ -39,6 +39,8 @@ class MainActivity : AppCompatActivity() {
 
     private lateinit var binding: ActivityMainBinding
 
+    private val handler = Handler()
+
     private val db by lazy {
         BondomanDatabase.getDatabase(applicationContext)
     }
@@ -116,7 +118,6 @@ class MainActivity : AppCompatActivity() {
 
     private fun startBackgroundWorker() {
         // Create a handler
-        val handler = Handler()
 
         // Define a runnable task to be executed
         val runnable = object : Runnable {
@@ -188,4 +189,9 @@ class MainActivity : AppCompatActivity() {
         setTitle(headerTitle)
         fragmentTransaction.commit()
     }
+
+    override fun onDestroy() {
+        super.onDestroy()
+        handler.removeCallbacksAndMessages(null)
+    }
 }
\ No newline at end of file
diff --git a/app/src/main/java/com/example/bondoman/ui/scan/ScanFragment.kt b/app/src/main/java/com/example/bondoman/ui/scan/ScanFragment.kt
index fd29788..6880581 100644
--- a/app/src/main/java/com/example/bondoman/ui/scan/ScanFragment.kt
+++ b/app/src/main/java/com/example/bondoman/ui/scan/ScanFragment.kt
@@ -19,6 +19,7 @@ import java.util.concurrent.Executors
 import android.content.Context
 import android.content.Intent
 import android.graphics.BitmapFactory
+import android.location.Location
 import android.provider.MediaStore
 import android.widget.Toast
 import androidx.activity.result.contract.ActivityResultContracts
@@ -29,10 +30,14 @@ import android.util.Log
 import android.widget.ImageView
 import androidx.camera.core.ImageCaptureException
 import androidx.camera.core.ImageProxy
+import androidx.fragment.app.activityViewModels
 import androidx.recyclerview.widget.LinearLayoutManager
 import androidx.recyclerview.widget.RecyclerView
 import com.example.bondoman.models.Item
+import com.example.bondoman.models.Transaction
+import com.example.bondoman.models.TransactionViewModel
 import com.example.bondoman.services.RetrofitClient
+import com.example.bondoman.services.TransactionEvent
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.Dispatchers
 import kotlinx.coroutines.launch
@@ -41,6 +46,8 @@ import okhttp3.MediaType
 import okhttp3.MultipartBody
 import okhttp3.RequestBody
 import retrofit2.HttpException
+import java.math.BigDecimal
+import java.math.RoundingMode
 
 
 class ScanFragment : Fragment() {
@@ -51,7 +58,7 @@ class ScanFragment : Fragment() {
 
     private lateinit var cameraExecutor: ExecutorService
 
-    private lateinit var imageView: ImageView
+    private val viewModel by activityViewModels<TransactionViewModel>()
 
     private val PICK_IMAGE_REQUEST = 1
 
@@ -234,17 +241,45 @@ class ScanFragment : Fragment() {
         itemList.layoutManager = LinearLayoutManager(context)
         itemList.adapter = ItemAdapter(items)
 
+        println(items)
+
         // Create and show the dialog
         val dialog = AlertDialog.Builder(context)
             .setView(dialogView)
-            .setPositiveButton("OK") { _, _ ->
-                // Do something when OK button is clicked, if needed
+            .setPositiveButton("Add") { _, _ ->
+                addScanResults(items)
+            }.setNegativeButton("Cancel") { dialog, _ ->
+                 dialog.dismiss()
             }
             .create()
 
         dialog.show()
     }
 
+    private fun addScanResults(items: List<Item>?){
+        if (items != null) {
+            for(item in items){
+                val judul = item.name + " X" + item.qty
+                val nominalText = item.price
+                try{
+                    var nominalNum = BigDecimal(nominalText)
+                    nominalNum = nominalNum.setScale(2, RoundingMode.HALF_UP)
+                    viewModel._onEvent(TransactionEvent.SetNominal(nominalNum))
+
+                }catch (e : NumberFormatException){
+                    e.printStackTrace()
+                }
+                val category = Transaction.Category.PEMBELIAN
+
+
+                viewModel._onEvent(TransactionEvent.SetJudul(judul))
+                viewModel._onEvent(TransactionEvent.SetKategori(category))
+                viewModel._onEvent(TransactionEvent.SetLokasi(Transaction.Position(0.0, 0.0)))
+                viewModel._onEvent(TransactionEvent.SaveTransaction)
+            }
+        }
+    }
+
 
 
     override fun onDestroy() {
-- 
GitLab