From 6d9e717912e855a81f536752c7b83c90d7ba9e88 Mon Sep 17 00:00:00 2001
From: Chris Albert <christiangultom5@gmail.com>
Date: Fri, 5 Apr 2024 14:25:40 +0700
Subject: [PATCH] feat: show only current user transaction

---
 .../if3210_2024_android_aab/ScanFragment.kt   |  3 +-
 .../if3210_2024_android_aab/Transaction.kt    | 12 +++++++-
 .../if3210_2024_android_aab/TransactionDB.kt  |  6 ++--
 .../TransactionFragment.kt                    | 12 ++++++--
 .../TransactionListAdapter.kt                 | 29 ++++++++++++-------
 5 files changed, 44 insertions(+), 18 deletions(-)

diff --git a/app/src/main/java/com/example/if3210_2024_android_aab/ScanFragment.kt b/app/src/main/java/com/example/if3210_2024_android_aab/ScanFragment.kt
index 89e2942..a08a301 100644
--- a/app/src/main/java/com/example/if3210_2024_android_aab/ScanFragment.kt
+++ b/app/src/main/java/com/example/if3210_2024_android_aab/ScanFragment.kt
@@ -274,7 +274,8 @@ class ScanFragment : Fragment() {
                                     judul = item.name,
                                     isPemasukan = false,
                                     nominal = item.price,
-                                    lokasi = "Institut Teknologi Bandung"
+                                    lokasi = "Institut Teknologi Bandung",
+                                    email = SharedPreference.getEmail(requireContext())
                                 )
                                 transactionViewModel.insert(tr)
 //                                val replyIntent = Intent()
diff --git a/app/src/main/java/com/example/if3210_2024_android_aab/Transaction.kt b/app/src/main/java/com/example/if3210_2024_android_aab/Transaction.kt
index 3f544bc..d7314df 100644
--- a/app/src/main/java/com/example/if3210_2024_android_aab/Transaction.kt
+++ b/app/src/main/java/com/example/if3210_2024_android_aab/Transaction.kt
@@ -18,7 +18,9 @@ data class Transaction(@PrimaryKey(autoGenerate = true) private val id:Int? = nu
                        @ColumnInfo(name = "isPemasukan") private var isPemasukan:Boolean?,
                        @ColumnInfo(name = "nominal") private var nominal:Double?,
                        @ColumnInfo(name = "lokasi") private var lokasi:String?,
-                       @ColumnInfo(name = "date") private var date:String? = LocalDate.now().format(DateTimeFormatter.ofPattern("dd-MM-yyyy"))
+                       @ColumnInfo(name = "email") private var email:String?,
+                       @ColumnInfo(name = "date") private var date:String? = LocalDate.now().format(DateTimeFormatter.ofPattern("dd-MM-yyyy")
+                       )
 ) {
 
 //    companion object{
@@ -59,6 +61,14 @@ data class Transaction(@PrimaryKey(autoGenerate = true) private val id:Int? = nu
         this.isPemasukan = _isPemasukan
     }
 
+    public fun getEmail():String?{
+        return this.email
+    }
+
+    public fun setEmail(_email:String?){
+        this.email = _email
+    }
+
     public fun getLokasi():String?{
         return this.lokasi
     }
diff --git a/app/src/main/java/com/example/if3210_2024_android_aab/TransactionDB.kt b/app/src/main/java/com/example/if3210_2024_android_aab/TransactionDB.kt
index fbe4d3b..40e696f 100644
--- a/app/src/main/java/com/example/if3210_2024_android_aab/TransactionDB.kt
+++ b/app/src/main/java/com/example/if3210_2024_android_aab/TransactionDB.kt
@@ -47,12 +47,12 @@ public abstract class TransactionDB : RoomDatabase() {
         }
 
         suspend fun populateDB(transactionDao: TransactionDao){
-            transactionDao.deleteAll()
+//            transactionDao.deleteAll()
 
-            var transaction = Transaction(1,"Gaji",true,1000000.0,"Kantor")
+//            var transaction = Transaction(1,"Gaji",true,1000000.0,"Kantor",email = null)
 //            transactionDao.insert(transaction)
 //            transaction = Transaction(2,"Makan",false,20000,"Kantin")
-            transactionDao.insert(transaction)
+//            transactionDao.insert(transaction)
         }
 
     }
diff --git a/app/src/main/java/com/example/if3210_2024_android_aab/TransactionFragment.kt b/app/src/main/java/com/example/if3210_2024_android_aab/TransactionFragment.kt
index 0dd652a..3d24489 100644
--- a/app/src/main/java/com/example/if3210_2024_android_aab/TransactionFragment.kt
+++ b/app/src/main/java/com/example/if3210_2024_android_aab/TransactionFragment.kt
@@ -37,11 +37,17 @@ class TransactionFragment : Fragment() {
 
         transactionViewModel.allTransactions.observe(viewLifecycleOwner) {
             transactions -> transactions?.let {
+                var userTransaction: MutableList<Transaction> = ArrayList<Transaction>()
+                for (transaction in it) {
+                    if (!transaction.getEmail()!!.isNullOrBlank() && !SharedPreference.getEmail(requireContext()).isNullOrBlank() && transaction.getEmail()!! == SharedPreference.getEmail(requireContext())) {
+                        userTransaction.add(transaction)
+                    }
+                }
 //                Log.d("TransactionFragment", "Transaction List: "+it.toString())
 //                it.forEach{
 //                    Log.d("TransactionFragment", "Transaction ID: "+it.getId().toString())
 //                }
-                adapter.submitList(it) }
+                adapter.submitList(userTransaction) }
         }
 
         adapter.setOnClickListener(object : TransactionListAdapter.OnClickListener {
@@ -88,7 +94,7 @@ class TransactionFragment : Fragment() {
             val lokasi = data?.getStringExtra(NewTransactionActivity.EXTRA_LOKASI)
             val isPemasukan = data?.getBooleanExtra(NewTransactionActivity.EXTRA_ISPEMASUKAN, false)
             Log.d("TransactionFragment", "judul: $judul nominal: $nominal lokasi: $lokasi isPemasukan: $isPemasukan")
-            val tr = Transaction( judul = judul, isPemasukan = isPemasukan, nominal = nominal, lokasi = lokasi)
+            val tr = Transaction( judul = judul, isPemasukan = isPemasukan, nominal = nominal, lokasi = lokasi, email = SharedPreference.getEmail(requireContext()))
             Log.d("TransactionFragment",tr.toString())
             transactionViewModel.insert(tr)
 
@@ -116,7 +122,7 @@ class TransactionFragment : Fragment() {
         val randomLokasi = "Location ${Random.nextInt(10)}"
         val randomIsPemasukan = Random.nextBoolean()
 
-        val transaction = Transaction(judul = randomJudul, isPemasukan = randomIsPemasukan, nominal = randomNominal, lokasi = randomLokasi)
+        val transaction = Transaction(judul = randomJudul, isPemasukan = randomIsPemasukan, nominal = randomNominal, lokasi = randomLokasi, email = SharedPreference.getEmail(requireContext()))
         transactionViewModel.insert(transaction)
 
         Log.d("TransactionFragment", "Inserted random transaction: $transaction")
diff --git a/app/src/main/java/com/example/if3210_2024_android_aab/TransactionListAdapter.kt b/app/src/main/java/com/example/if3210_2024_android_aab/TransactionListAdapter.kt
index 44bedf0..cbbb991 100644
--- a/app/src/main/java/com/example/if3210_2024_android_aab/TransactionListAdapter.kt
+++ b/app/src/main/java/com/example/if3210_2024_android_aab/TransactionListAdapter.kt
@@ -37,14 +37,23 @@ class TransactionListAdapter(val context: Context) : ListAdapter<Transaction, Tr
 
     override fun onBindViewHolder(holder: TransactionViewHolder, position: Int) {
         val current = getItem(position)
-        holder.bindNominal(current.getNominal().toString())
-        holder.bindJudul(current.getJudul())
-        holder.bindLokasi(current.getLokasi())
-        holder.bindDate(current.getDate())
-        holder.bindId(current.getId().toString())
+//        Log.d("TransactionListAdapter",SharedPreference.getEmail(context)!!)
+        if (current.getEmail()!=null &&SharedPreference.getEmail(context)!=null && current.getEmail()!!.equals(SharedPreference.getEmail(context))){
+            holder.bindNominal(current.getNominal().toString())
+            holder.bindJudul(current.getJudul())
+            holder.bindLokasi(current.getLokasi())
+            holder.bindDate(current.getDate())
+            holder.bindId(current.getId().toString())
+            holder.transactionMenuButton.setOnClickListener{
+                if (onClickListener != null){
+                    onClickListener!!.onClick(current)
+                }
+            }
+        }
+
 //        Log.d("TransactionListAdapter", "Transaction ID: "+current.getId().toString())
 //        holder.setTransactionMenuButtonOnClickListener()
-        holder.transactionMenuButton.setOnClickListener{
+//        holder.transactionMenuButton.setOnClickListener{
 //            val popupMenu = PopupMenu(holder.transactionMenuButton.context, holder.transactionMenuButton)
 //            popupMenu.inflate(R.menu.transaction_popup_menu)
 //            popupMenu.setOnMenuItemClickListener { item ->
@@ -72,10 +81,10 @@ class TransactionListAdapter(val context: Context) : ListAdapter<Transaction, Tr
 //                    else -> false
 //                }
 //            }
-            if (onClickListener != null){
-                onClickListener!!.onClick(current)
-            }
-        }
+//            if (onClickListener != null){
+//                onClickListener!!.onClick(current)
+//            }
+//        }
 
         holder.openMapButton.setOnClickListener{
 //            if (onClickMapListener != null){
-- 
GitLab