diff --git a/app/src/main/java/com/example/bondoman/DBViewModel.kt b/app/src/main/java/com/example/bondoman/DBViewModel.kt
index d0898cb4c566b5d4dc233056e42226aeb5170947..dcc237e75adf86ccc8f583136cb65f4d2e86423e 100644
--- a/app/src/main/java/com/example/bondoman/DBViewModel.kt
+++ b/app/src/main/java/com/example/bondoman/DBViewModel.kt
@@ -1,7 +1,9 @@
 package com.example.bondoman
 
 import android.app.Application
+import android.util.Log
 import androidx.lifecycle.AndroidViewModel
+import com.example.bondoman.models.GraphData
 import com.example.bondoman.retrofit.data.TransactionDB
 import com.example.bondoman.retrofit.data.entity.Category
 import com.example.bondoman.retrofit.data.entity.TransactionEntity
@@ -19,7 +21,7 @@ class DBViewModel(application: Application) : AndroidViewModel(application) {
     fun addTransaksi(name: String, category: String, price: Double, location: String = "") {
         viewModelScope.launch {
             val currentDate = SimpleDateFormat("yyyy-MM-dd", Locale.getDefault()).format(Date())
-            var tempLocation = location
+            val tempLocation = location
             val newTransaction = TransactionEntity(
                 name = name,
                 category = Category.valueOf(category),
@@ -30,4 +32,31 @@ class DBViewModel(application: Application) : AndroidViewModel(application) {
             db.transactionDao().insertAll(newTransaction)
         }
     }
+
+    fun getGraphData(): List<GraphData> {
+        val data: MutableList<GraphData> = mutableListOf()
+        var dbData = listOf<GraphData>()
+        viewModelScope.launch {
+            dbData = db.transactionDao().sumPriceByCategory()
+        }
+        Log.d("VIEWMODELDATA", dbData.toString())
+        if(dbData.size != 2) {
+            if (dbData.size==1) {
+                if (Category.valueOf(dbData[0].category!!) == Category.Pemasukan) {
+                    data.add(0, dbData[0])
+                    data.add(1, GraphData("Pengeluaran", 0.0))
+                } else {
+                    data.add(0, GraphData("Pemasukan", 0.0))
+                    data.add(1, dbData[0])
+                }
+            } else {
+                data.add(0, GraphData("Pemasukan", 0.0))
+                data.add(1, GraphData("Pengeluaran", 0.0))
+            }
+        } else {
+            data.add(0, dbData[0])
+            data.add(1, dbData[1])
+        }
+        return data
+    }
 }
\ No newline at end of file
diff --git a/app/src/main/java/com/example/bondoman/GraphFragment.kt b/app/src/main/java/com/example/bondoman/GraphFragment.kt
index 6f2ee6ca948c3b3d6412eae40bb6b943a9a99217..c6de94cb611aefaf3950b1e8010863f18245b7ca 100644
--- a/app/src/main/java/com/example/bondoman/GraphFragment.kt
+++ b/app/src/main/java/com/example/bondoman/GraphFragment.kt
@@ -14,6 +14,8 @@ import android.widget.RelativeLayout
 import android.widget.TextView
 import androidx.core.content.ContextCompat
 import androidx.fragment.app.Fragment
+import androidx.lifecycle.ViewModelProvider
+import com.example.bondoman.retrofit.data.TransactionDB
 import com.github.mikephil.charting.charts.PieChart
 import com.github.mikephil.charting.data.PieData
 import com.github.mikephil.charting.data.PieDataSet
@@ -21,13 +23,19 @@ import com.github.mikephil.charting.data.PieEntry
 
 class GraphFragment : Fragment() {
 
+    private lateinit var db: DBViewModel
+    private lateinit var database: TransactionDB
     override fun onCreateView(
         inflater: LayoutInflater, container: ViewGroup?,
         savedInstanceState: Bundle?
     ): View? {
-
+        database = TransactionDB.getInstance(requireContext())
+        if (!database.isOpen){
+            database.openHelper.writableDatabase
+        }
         val view = inflater.inflate(R.layout.fragment_grafik, container, false)
         val pieChart: PieChart = view.findViewById(R.id.pieChart)
+        db = ViewModelProvider(requireActivity())[DBViewModel::class.java]
 
         val navbar = requireActivity().findViewById<LinearLayout>(R.id.navbar_main)
         val toolbar = requireActivity().findViewById<RelativeLayout>(R.id.toolbar)
@@ -47,12 +55,12 @@ class GraphFragment : Fragment() {
         settingButton.isSelected = false
 
         // Dummy data
-        val income = 5000f
-        val outcome = 3000f
+        val graphData = db.getGraphData()
+        Log.d("DATA", graphData.toString())
 
         val entries = ArrayList<PieEntry>()
-        entries.add(PieEntry(income, "Income"))
-        entries.add(PieEntry(outcome, "Outcome"))
+        entries.add(PieEntry(graphData[0].amount!!.toFloat(), graphData[0].category.toString()))
+        entries.add(PieEntry(graphData[1].amount!!.toFloat(), graphData[1].category.toString()))
 
         val dataSet = PieDataSet(entries, "Transaction Summary")
 
@@ -80,38 +88,5 @@ class GraphFragment : Fragment() {
         return view
     }
 
-    override fun onConfigurationChanged(newConfig: Configuration) {
-        super.onConfigurationChanged(newConfig)
-
-        if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
-            val transactionButton = requireActivity().findViewById<ImageButton>(R.id.transaction_button)
-            val graphButton = requireActivity().findViewById<ImageButton>(R.id.graph_button)
-            val settingButton = requireActivity().findViewById<ImageButton>(R.id.setting_button)
-            val scanButton = requireActivity().findViewById<ImageButton>(R.id.scan_button)
-
-            val animation = AnimationUtils.loadAnimation(requireContext(), R.anim.rotate_90_deg)
-
-            transactionButton.startAnimation(animation)
-            graphButton.startAnimation(animation)
-            settingButton.startAnimation(animation)
-            scanButton.startAnimation(animation)
-
-            Log.d("ORIENTATION CHANGED", "rotate 90")
-        } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) {
-            val transactionButton = requireActivity().findViewById<ImageButton>(R.id.transaction_button)
-            val graphButton = requireActivity().findViewById<ImageButton>(R.id.graph_button)
-            val settingButton = requireActivity().findViewById<ImageButton>(R.id.setting_button)
-            val scanButton = requireActivity().findViewById<ImageButton>(R.id.scan_button)
 
-            val animation = AnimationUtils.loadAnimation(requireContext(), R.anim.rotate_270_deg)
-
-            transactionButton.startAnimation(animation)
-            graphButton.startAnimation(animation)
-            settingButton.startAnimation(animation)
-            scanButton.startAnimation(animation)
-
-            Log.d("ORIENTATION CHANGED", "rotate 270")
-
-        }
-    }
 }
diff --git a/app/src/main/java/com/example/bondoman/LoginActivity.kt b/app/src/main/java/com/example/bondoman/LoginActivity.kt
index 46560ff0b1ee0e10f6a3565a609e9f614f22602b..3b469221573494ba65b1981a9f26ebd8a5b22c7e 100644
--- a/app/src/main/java/com/example/bondoman/LoginActivity.kt
+++ b/app/src/main/java/com/example/bondoman/LoginActivity.kt
@@ -43,6 +43,7 @@ class LoginActivity : AppCompatActivity() {
                         val editor = sharedPreferences.edit()
                         editor.apply {
                             putString("TOKEN", token)
+                            putString("EMAIL", email)
                         }.apply()
                         val intent = Intent(this@LoginActivity, MainActivity::class.java)
                         startActivity(intent)
diff --git a/app/src/main/java/com/example/bondoman/SettingFragment.kt b/app/src/main/java/com/example/bondoman/SettingFragment.kt
index f3858cc21959ef6ea362c6a0698b41599bdae777..9c1aa9127bf2616d62065465631ebb29686d2ea3 100644
--- a/app/src/main/java/com/example/bondoman/SettingFragment.kt
+++ b/app/src/main/java/com/example/bondoman/SettingFragment.kt
@@ -1,6 +1,7 @@
 package com.example.bondoman
 import android.app.AlertDialog
 import android.content.ActivityNotFoundException
+import android.content.Context
 import android.content.Context.MODE_PRIVATE
 import android.content.Intent
 import android.graphics.Color
@@ -21,6 +22,9 @@ import com.example.bondoman.helper.Xls
 import com.example.bondoman.models.SqlTransaction
 import com.example.bondoman.retrofit.data.TransactionDB
 import com.example.bondoman.services.RandomizeTransaction
+import java.text.SimpleDateFormat
+import java.util.Date
+import java.util.Locale
 import kotlin.random.Random
 
 class SettingFragment: Fragment() {
@@ -89,14 +93,21 @@ class SettingFragment: Fragment() {
     }
 
     private fun sendEmail() {
+        val sharedPreferences =
+            requireActivity().getSharedPreferences(
+                "sharedPrefs",
+                Context.MODE_PRIVATE
+            )
+        val email = sharedPreferences.getString("EMAIL", "") ?: ""
+
         // Create an intent to send an email
         val intent = Intent(Intent.ACTION_SEND)
         intent.type = "message/rfc822" // Email MIME type
-
+        val currentDate = SimpleDateFormat("yyyy-MM-dd", Locale.getDefault()).format(Date())
         // Fill in the email details (optional)
-        intent.putExtra(Intent.EXTRA_EMAIL, arrayOf("bintanghijriawan433@gmail.com"))
-        intent.putExtra(Intent.EXTRA_SUBJECT, "Subject")
-        intent.putExtra(Intent.EXTRA_TEXT, "Body of the email")
+        intent.putExtra(Intent.EXTRA_EMAIL, arrayOf(email))
+        intent.putExtra(Intent.EXTRA_SUBJECT, "Daftar Transaksi")
+        intent.putExtra(Intent.EXTRA_TEXT, "Daftar Transaksi $currentDate")
 
         try {
             // Start the email activity
diff --git a/app/src/main/java/com/example/bondoman/TransactionFragment.kt b/app/src/main/java/com/example/bondoman/TransactionFragment.kt
index 32c455c45274ec818519807b0bd4d4933dce18d5..d4b76b3242da331559a036d889db1d29354c430c 100644
--- a/app/src/main/java/com/example/bondoman/TransactionFragment.kt
+++ b/app/src/main/java/com/example/bondoman/TransactionFragment.kt
@@ -63,8 +63,6 @@ class TransactionFragment : Fragment() {
         graphButton.isSelected = false
         settingButton.isSelected = false
 
-
-
         return binding.root
     }
 
@@ -72,18 +70,6 @@ class TransactionFragment : Fragment() {
         super.onViewCreated(view, savedInstanceState)
 
         adapter = TransactionAdapter(listTransaction)
-
-        transactionData = binding.itemTransaction
-        transactionData.adapter = adapter
-        transactionData.layoutManager =
-            LinearLayoutManager(requireContext(), RecyclerView.VERTICAL, false)
-        transactionData.addItemDecoration(
-            DividerItemDecoration(
-                requireContext(),
-                RecyclerView.VERTICAL
-            )
-        )
-
         db = ViewModelProvider(requireActivity())[DBViewModel::class.java]
 
         Log.d("PENDING LIST NOT EMPTY?", pendingTransaction.isNotEmpty().toString())
@@ -97,6 +83,16 @@ class TransactionFragment : Fragment() {
             }
             pendingTransaction.clear()
         }
+        transactionData = binding.itemTransaction
+        transactionData.adapter = adapter
+        transactionData.layoutManager =
+            LinearLayoutManager(requireContext(), RecyclerView.VERTICAL, false)
+        transactionData.addItemDecoration(
+            DividerItemDecoration(
+                requireContext(),
+                RecyclerView.VERTICAL
+            )
+        )
 
         binding.addButton.setOnClickListener {
             val intent = Intent(requireContext(), ContainerActivity::class.java)
diff --git a/app/src/main/java/com/example/bondoman/models/GraphData.kt b/app/src/main/java/com/example/bondoman/models/GraphData.kt
new file mode 100644
index 0000000000000000000000000000000000000000..c3d7fd06fc8482acd1c8fe305c93bf00c6fe17a1
--- /dev/null
+++ b/app/src/main/java/com/example/bondoman/models/GraphData.kt
@@ -0,0 +1,9 @@
+package com.example.bondoman.models
+
+import androidx.room.ColumnInfo
+import com.example.bondoman.retrofit.data.entity.Category
+
+data class GraphData(
+    @ColumnInfo(name = "category") val category: String?,
+    @ColumnInfo(name = "amount") val amount: Double?
+)
diff --git a/app/src/main/java/com/example/bondoman/retrofit/data/dao/TransactionDao.kt b/app/src/main/java/com/example/bondoman/retrofit/data/dao/TransactionDao.kt
index 8f93301768d951c03f872de36169dc31674d6363..55304ec05c3b776723ad4a0340f3dae3768ce9c7 100644
--- a/app/src/main/java/com/example/bondoman/retrofit/data/dao/TransactionDao.kt
+++ b/app/src/main/java/com/example/bondoman/retrofit/data/dao/TransactionDao.kt
@@ -5,6 +5,7 @@ import androidx.room.Delete
 import androidx.room.Insert
 import androidx.room.Query
 import androidx.room.Update
+import com.example.bondoman.models.GraphData
 import com.example.bondoman.retrofit.data.entity.TransactionEntity
 
 @Dao
@@ -30,4 +31,6 @@ interface TransactionDao {
     @Query("SELECT * FROM transactionentity WHERE id = :id")
     fun getId(id: Int): TransactionEntity
 
+    @Query("SELECT 'kategori_transaksi' as 'category', 'nominal_transaksi' as 'amount' FROM transactionentity GROUP BY 'kategori_transaksi'")
+    fun sumPriceByCategory(): List<GraphData>
 }
\ No newline at end of file