diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index 7b4ca55af63b4342df03757cfad712a2523ca7dd..a3bd951c3e163d1da63123731e15f5743ca1284f 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -82,4 +82,5 @@ dependencies {
 
     implementation("com.github.bumptech.glide:glide:4.12.0")
     implementation("com.github.AnyChart:AnyChart-Android:1.1.5")
+    implementation("com.github.PhilJay:MPAndroidChart:v3.1.0")
 }
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index e628eb6317e560fa6d58cecdcd67f6020cb4a67a..204ed94e48cb7db2c9a28e5788910b92217d7bb6 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -29,7 +29,6 @@
 
         <activity
             android:name=".MainActivity"
-            android:configChanges="orientation|uiMode"
             android:exported="true"
             android:label="@string/app_name">
             <intent-filter>
diff --git a/app/src/main/java/com/example/bandung_bondowoso/MainActivity.kt b/app/src/main/java/com/example/bandung_bondowoso/MainActivity.kt
index 8a971fa2692bb98d1a119515e5548705e001629c..5805cb8c85a37312b3128db7e591983240f850ec 100644
--- a/app/src/main/java/com/example/bandung_bondowoso/MainActivity.kt
+++ b/app/src/main/java/com/example/bandung_bondowoso/MainActivity.kt
@@ -10,21 +10,20 @@ import androidx.localbroadcastmanager.content.LocalBroadcastManager
 import androidx.navigation.findNavController
 import com.example.bandung_bondowoso.databinding.ActivityMainBinding
 import com.example.bandung_bondowoso.service.JwtCheckerService
+import com.example.bandung_bondowoso.view.graph.GraphFragment
 import com.example.bandung_bondowoso.viewmodel.AuthViewModel
 import com.example.bandung_bondowoso.viewmodel.AuthViewModelFactory
 import com.google.android.material.bottomnavigation.BottomNavigationView
 
 class MainActivity : AppCompatActivity() {
 
-    private lateinit var binding: ActivityMainBinding
+    lateinit var binding: ActivityMainBinding
 
     private lateinit var authViewModel: AuthViewModel
-
     override fun onCreate(savedInstanceState: Bundle?) {
         Log.d("MainActivity", "onCreate")
         super.onCreate(savedInstanceState)
 
-
         binding = ActivityMainBinding.inflate(layoutInflater)
         setContentView(binding.root)
 
@@ -99,18 +98,6 @@ class MainActivity : AppCompatActivity() {
         Log.d("MainActivity", "onDestroy")
     }
 
-    enum class DarkModeConfig{
-        YES,
-        NO,
-        FOLLOW_SYSTEM
-    }
-    fun shouldEnableDarkMode(darkModeConfig: DarkModeConfig){
-        when(darkModeConfig){
-            DarkModeConfig.YES -> AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES)
-            DarkModeConfig.NO -> AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO)
-            DarkModeConfig.FOLLOW_SYSTEM -> AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM)
-        }
-    }
 
 
 }
\ No newline at end of file
diff --git a/app/src/main/java/com/example/bandung_bondowoso/helper/LocationHelper.kt b/app/src/main/java/com/example/bandung_bondowoso/helper/LocationHelper.kt
new file mode 100644
index 0000000000000000000000000000000000000000..a5d5e066c483f9bd13c4487fcc1d18083a6a3cc2
--- /dev/null
+++ b/app/src/main/java/com/example/bandung_bondowoso/helper/LocationHelper.kt
@@ -0,0 +1,34 @@
+package com.example.bandung_bondowoso.helper
+
+import android.content.Context
+import android.location.Address
+import android.location.Geocoder
+import java.util.Locale
+
+class LocationHelper(private val context: Context) {
+    @Suppress("DEPRECATION")
+    fun setLocationByLatLong(
+        lat: Double,
+        lang: Double,
+    ): String? {
+        val geocoder = Geocoder(context, Locale.getDefault())
+        return try {
+            val addresses: MutableList<Address>? = geocoder.getFromLocation(lat, lang, 1)
+            addresses?.firstOrNull()?.getAddressLine(0)
+        } catch (e: Exception) {
+            null
+        }
+    }
+    @Suppress("DEPRECATION")
+    fun setLatLongFromAddress(address:String): Pair<Double,Double>? {
+        val geocoder = Geocoder(context, Locale.getDefault())
+        return try {
+            val addresses: MutableList<Address>? = geocoder.getFromLocationName(address, 1)
+            val lat = addresses?.firstOrNull()?.latitude
+            val long = addresses?.firstOrNull()?.longitude
+            Pair(lat?:0.0,long?:0.0)
+        } catch (e: Exception) {
+            null
+        }
+    }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/bandung_bondowoso/interface/transactionInterface.kt b/app/src/main/java/com/example/bandung_bondowoso/interface/transactionInterface.kt
index e294ad210d19f7dca3104077a2c398369b025e46..cef936fd759cb5a6e47b2c18810fabdf6d867ab4 100644
--- a/app/src/main/java/com/example/bandung_bondowoso/interface/transactionInterface.kt
+++ b/app/src/main/java/com/example/bandung_bondowoso/interface/transactionInterface.kt
@@ -6,5 +6,5 @@ import com.example.bandung_bondowoso.model.Transaction
 interface TransactionItemClickListener {
     fun onDeleteTransaction(transaction: Transaction)
     fun onEditTransaction(root: View, id: Int)
-    fun onOpenMap(location:String)
+    fun onOpenMap(name:String, location:String)
 }
\ No newline at end of file
diff --git a/app/src/main/java/com/example/bandung_bondowoso/local/dao/TransactionDao.kt b/app/src/main/java/com/example/bandung_bondowoso/local/dao/TransactionDao.kt
index 52206feb31375b6e8f6907476eabc2897f4ae3df..795578439396f1759d36e98f706687dba9473d86 100644
--- a/app/src/main/java/com/example/bandung_bondowoso/local/dao/TransactionDao.kt
+++ b/app/src/main/java/com/example/bandung_bondowoso/local/dao/TransactionDao.kt
@@ -10,7 +10,7 @@ import kotlinx.coroutines.flow.Flow
 
 @Dao
 interface TransactionDao {
-    @Query("SELECT * FROM `transaction`")
+    @Query("SELECT * FROM `transaction` ORDER BY created_at DESC")
     fun getAll(): Flow<List<Transaction>>
     @Query("SELECT SUM(amount) FROM `transaction` WHERE category = 0")
     suspend fun getIncome(): Int
diff --git a/app/src/main/java/com/example/bandung_bondowoso/view/graph/GraphFragment.kt b/app/src/main/java/com/example/bandung_bondowoso/view/graph/GraphFragment.kt
index 1a191543ecfa992ed4c69b597c53ff334f60fbc4..184ac44e8fac5d3602655d07cc134fd66d50dd06 100644
--- a/app/src/main/java/com/example/bandung_bondowoso/view/graph/GraphFragment.kt
+++ b/app/src/main/java/com/example/bandung_bondowoso/view/graph/GraphFragment.kt
@@ -8,20 +8,16 @@ import android.view.ViewGroup
 import androidx.core.content.ContextCompat
 import androidx.fragment.app.Fragment
 import androidx.fragment.app.viewModels
-import androidx.lifecycle.ViewModelProvider
 import androidx.lifecycle.lifecycleScope
-import com.anychart.AnyChart
-import com.anychart.AnyChartView
-import com.anychart.chart.common.dataentry.ValueDataEntry
-import com.anychart.charts.Pie
-import com.anychart.enums.Align
-import com.anychart.enums.LegendLayout
 import com.example.bandung_bondowoso.BandungBondowosoApp
 import com.example.bandung_bondowoso.R
 import com.example.bandung_bondowoso.databinding.FragmentGraphBinding
-import com.example.bandung_bondowoso.viewmodel.GraphViewModel
 import com.example.bandung_bondowoso.viewmodel.TransactionViewModel
 import com.example.bandung_bondowoso.viewmodel.TransactionViewModelFactory
+import com.github.mikephil.charting.animation.Easing
+import com.github.mikephil.charting.charts.PieChart
+import com.github.mikephil.charting.data.PieEntry
+import com.github.mikephil.charting.formatter.PercentFormatter
 import kotlinx.coroutines.launch
 
 class GraphFragment : Fragment() {
@@ -34,8 +30,11 @@ class GraphFragment : Fragment() {
     private val transactionViewModel: TransactionViewModel by viewModels {
         TransactionViewModelFactory((activity?.application as BandungBondowosoApp).transactionRepository)
     }
-    private lateinit var dataTransaction: List<ValueDataEntry>
-
+    private lateinit var chart:PieChart
+    override fun onCreate(savedInstanceState: Bundle?) {
+        Log.d(tag, "onCreate")
+        super.onCreate(savedInstanceState)
+    }
     override fun onCreateView(
         inflater: LayoutInflater,
         container: ViewGroup?,
@@ -43,32 +42,38 @@ class GraphFragment : Fragment() {
     ): View {
         _binding = FragmentGraphBinding.inflate(inflater, container, false)
         val root: View = binding.root
-        val pie:Pie = AnyChart.pie()
-        pie.labels(true)
 
-        lifecycleScope.launch {
-            val income = transactionViewModel.getIncome()
-            val expense = transactionViewModel.getExpense()
-            dataTransaction = listOf(
-                ValueDataEntry("Income", income),
-                ValueDataEntry("Expense", expense)
-            )
-            pie.data(dataTransaction)
-            val anyChartView:AnyChartView = binding.anyChartView
-            anyChartView.setChart(pie)
-            anyChartView.setBackgroundColor(ContextCompat.getColor(requireContext(),
-                R.color.md_theme_surfaceContainer))
-            pie.labels().position("outside")
-                .format("{%x}: {%value}")
-                .position("outside")
-                .fontColor("#000E8E")
-                .fontSize(12)
-                .fontFamily("Inter")
-                .format("{%x}: {%value}")
-            pie.legend()
-                .position("center-bottom")
-                .itemsLayout(LegendLayout.HORIZONTAL)
-                .align(Align.CENTER)
+        chart = binding.chart1!!
+        chart.setBackgroundColor(ContextCompat.getColor(requireContext(), R.color.md_theme_surface))
+        chart.animateY(1400, Easing.EaseInOutQuad)
+        chart.setUsePercentValues(true)
+
+
+
+        val l: com.github.mikephil.charting.components.Legend? = chart.legend
+        l?.verticalAlignment = com.github.mikephil.charting.components.Legend.LegendVerticalAlignment.TOP
+        l?.horizontalAlignment = com.github.mikephil.charting.components.Legend.LegendHorizontalAlignment.RIGHT
+        l?.orientation = com.github.mikephil.charting.components.Legend.LegendOrientation.VERTICAL
+        l?.setDrawInside(false)
+        l?.xEntrySpace = 7f
+        l?.yEntrySpace = 0f
+        l?.yOffset = 0f
+        chart.setEntryLabelColor(ContextCompat.getColor(requireContext(), R.color.md_theme_surface))
+        chart.setEntryLabelTextSize(16f)
+
+        val values = ArrayList<PieEntry>()
+        lifecycleScope.launch{
+            values.add(PieEntry(transactionViewModel.getIncome().toFloat(), "Pemasukan"))
+            values.add(PieEntry(transactionViewModel.getExpense().toFloat(), "Pengeluaran"))
+            val dataSet = com.github.mikephil.charting.data.PieDataSet(values, "")
+            dataSet.setColors(ContextCompat.getColor(requireContext(), R.color.md_theme_primary),
+                ContextCompat.getColor(requireContext(), R.color.md_theme_tertiary))
+            val data = com.github.mikephil.charting.data.PieData(dataSet)
+            chart.data = data
+            data.setValueFormatter(PercentFormatter(chart))
+            data.setValueTextSize(16f)
+            data.setValueTextColor(ContextCompat.getColor(requireContext(), R.color.md_theme_surface))
+            chart.invalidate()
         }
         return root
     }
@@ -77,4 +82,5 @@ class GraphFragment : Fragment() {
         super.onDestroyView()
         _binding = null
     }
+
 }
\ No newline at end of file
diff --git a/app/src/main/java/com/example/bandung_bondowoso/view/setting/SettingFragment.kt b/app/src/main/java/com/example/bandung_bondowoso/view/setting/SettingFragment.kt
index a98e6ce9a0a082d36869b313d088270b172be1c8..a4f458ea3761040d5f771fffb2160ed153642fe2 100644
--- a/app/src/main/java/com/example/bandung_bondowoso/view/setting/SettingFragment.kt
+++ b/app/src/main/java/com/example/bandung_bondowoso/view/setting/SettingFragment.kt
@@ -153,6 +153,9 @@ class SettingFragment : Fragment() {
 
             transactionList = it
         }
+    }
+    fun randomizeTransaction(){
+
     }
     override fun onDestroyView() {
         super.onDestroyView()
diff --git a/app/src/main/java/com/example/bandung_bondowoso/view/transaction/CreateTransactionFragment.kt b/app/src/main/java/com/example/bandung_bondowoso/view/transaction/CreateTransactionFragment.kt
index f60f40cc691734d0c25ccad4abc687cab68ecd68..1b4ce26d3f9d4c4ccc42831443c284a9e49ec0fa 100644
--- a/app/src/main/java/com/example/bandung_bondowoso/view/transaction/CreateTransactionFragment.kt
+++ b/app/src/main/java/com/example/bandung_bondowoso/view/transaction/CreateTransactionFragment.kt
@@ -2,11 +2,13 @@ package com.example.bandung_bondowoso.view.transaction
 
 import android.Manifest
 import android.app.Dialog
+import android.content.Context
+import android.content.Intent
 import android.content.pm.PackageManager
-import android.location.Geocoder
 import android.location.Location
-import android.os.Build
+import android.location.LocationManager
 import android.os.Bundle
+import android.provider.Settings
 import android.util.Log
 import androidx.fragment.app.Fragment
 import android.view.LayoutInflater
@@ -24,8 +26,10 @@ import androidx.lifecycle.LiveData
 import androidx.lifecycle.MutableLiveData
 import androidx.navigation.Navigation
 import com.example.bandung_bondowoso.BandungBondowosoApp
+import com.example.bandung_bondowoso.MainActivity
 import com.example.bandung_bondowoso.R
 import com.example.bandung_bondowoso.databinding.FragmentTransactionCreateBinding
+import com.example.bandung_bondowoso.helper.LocationHelper
 import com.example.bandung_bondowoso.helper.TransactionHelper
 import com.example.bandung_bondowoso.model.Transaction
 import com.example.bandung_bondowoso.model.TransactionCategory
@@ -47,12 +51,12 @@ class CreateTransactionFragment : Fragment() {
     private lateinit var expenseRadioButton: RadioButton
     private lateinit var submitButton: Button
     private lateinit var cancelButton: Button
-    private lateinit var fusedLocationClient: FusedLocationProviderClient
     private lateinit var dialog: Dialog
     private lateinit var btnDialogCancel: Button
     private lateinit var btnDialogSubmit: Button
     private lateinit var tvDialogTitle:TextView
     private lateinit var tvDialogMsg:TextView
+    private lateinit var fusedLocationClient: FusedLocationProviderClient
 
     private val _locationName = MutableLiveData<String?>()
     private val locationName: LiveData<String?> = _locationName
@@ -65,6 +69,7 @@ class CreateTransactionFragment : Fragment() {
     private val binding get()   = _binding!!
 
     private lateinit var transactionHelper: TransactionHelper
+    private lateinit var locationHelper: LocationHelper
 
     /** Initialize Transaction View Model */
     private val transactionViewModel: TransactionViewModel by viewModels {
@@ -82,7 +87,9 @@ class CreateTransactionFragment : Fragment() {
 
         _binding = FragmentTransactionCreateBinding.inflate(inflater, container, false)
         val root:View = binding.root
+        (activity as MainActivity).binding.navView.visibility = View.GONE
         transactionHelper = TransactionHelper(requireContext())
+        locationHelper = LocationHelper(requireContext())
         transactionName = binding.etTransactionName
         transactionAmount = binding.etTransactionPrice
         transactionLocation = binding.etTransactionLocation
@@ -123,9 +130,35 @@ class CreateTransactionFragment : Fragment() {
                 dialog.dismiss()
             }
         }
+        if(askLocation()){
+            getLastLocation()
+        } else
+        {
+            Toast.makeText(context, "Please enable location", Toast.LENGTH_SHORT).show()
+            val intent = Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS)
+            startActivity(intent)
+        }
         return root
     }
 
+    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+        super.onViewCreated(view, savedInstanceState)
+        locationName.observe(viewLifecycleOwner) { location ->
+            if(location != null){
+                transactionLocation.setText(location)
+            }
+        }
+
+        if (ActivityCompat.checkSelfPermission(
+                requireContext(),
+                Manifest.permission.ACCESS_COARSE_LOCATION
+            ) != PackageManager.PERMISSION_GRANTED
+        ) {
+//            setLatLongFromAddress(transactionLocation.text.toString())
+            locationHelper.setLatLongFromAddress(transactionLocation.text.toString())
+        }
+    }
+
     private fun createNewTransaction(): Boolean{
         Log.d(tag, "createNewTransaction")
         if (!transactionHelper.validateTransaction(
@@ -145,15 +178,19 @@ class CreateTransactionFragment : Fragment() {
             else -> throw IllegalStateException("No category selected")
         }
 
+        val coordinates =  locationHelper.setLatLongFromAddress(location)
+
         val newTransaction = Transaction(
             name = name,
             amount = amount,
             type = category,
-            locationLat = 0.0,
-            locationLong = 0.0,
-            locationName = "Bandung",
+            locationLat = coordinates!!.first,
+            locationLong = coordinates.second,
+            locationName = location,
             createdAt = Date()
         )
+        Log.d(tag, "Transaction: $name, $amount, $category, ${coordinates.first}, " +
+                "${coordinates.second}, $location")
         transactionViewModel.upsert(newTransaction)
         return true
     }
@@ -179,55 +216,24 @@ class CreateTransactionFragment : Fragment() {
         fusedLocationClient.lastLocation
             .addOnSuccessListener { location: Location? ->
                 if (location != null) {
-                    Log.d("HomeFragment", "Location: ${location.latitude}, ${location.longitude}")
-                    setLocationByLatLong(location.latitude, location.longitude)
+                    Log.d(tag, "Location: ${location.latitude}, ${location.longitude}")
+                    _locationLat.value = location.latitude
+                    _locationLong.value = location.longitude
+                    _locationName.value = locationHelper.setLocationByLatLong(location.latitude, location.longitude)
                 }
             }
     }
-    private fun setLocation(location: String?) {
-        _locationName.value = location
-    }
-    @Suppress("DEPRECATION")
-    fun setLocationByLatLong(
-        lat: Double,
-        long: Double,
-    ) {
-        _locationLat.value = lat
-        _locationLong.value = long
-
-        val geocoder = Geocoder(requireContext())
-        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
-            geocoder.getFromLocation(lat, long, 1) {
-                    address ->
-                setLocation(address.firstOrNull()?.getAddressLine(0))
-            }
-            return
-        }
 
-        try {
-            val address = geocoder.getFromLocation(lat, long, 1)
-            if (address != null) {
-                setLocation(address.firstOrNull()?.getAddressLine(0))
-            } else {
-                setLocation(null)
-            }
-        } catch(e: Exception) {
-            //will catch if there is an internet problem
-            Log.e("HomeViewModel", "Error getting location", e)
-            setLocation(null)
-        }
+    fun askLocation(): Boolean {
+        val service: LocationManager =
+            requireContext().getSystemService(Context.LOCATION_SERVICE) as LocationManager
+        return service.isProviderEnabled(LocationManager.GPS_PROVIDER)
     }
 
-    @Suppress("DEPRECATION")
-    fun getLatLongFromLocation(locationName:String): Pair<Double, Double>? {
-        Log.d(tag, "getLatLongFromLocation: $locationName")
-        val geocoder = Geocoder(requireContext())
-        val address = geocoder.getFromLocationName(locationName, 1)
-        return if (address != null) {
-            Pair(address[0].latitude, address[0].longitude)
-        } else {
-            null
-        }
-    }
 
+
+    override fun onDestroyView() {
+        super.onDestroyView()
+        (activity as MainActivity).binding.navView.visibility = View.VISIBLE
+    }
 }
\ No newline at end of file
diff --git a/app/src/main/java/com/example/bandung_bondowoso/view/transaction/EditTransactionFragment.kt b/app/src/main/java/com/example/bandung_bondowoso/view/transaction/EditTransactionFragment.kt
index 38c0c4eda4bf254e2f279e994711904e6c07f08c..6a6bf7e3fbf598b1176036b6a9c437a555bc206c 100644
--- a/app/src/main/java/com/example/bandung_bondowoso/view/transaction/EditTransactionFragment.kt
+++ b/app/src/main/java/com/example/bandung_bondowoso/view/transaction/EditTransactionFragment.kt
@@ -19,6 +19,7 @@ import androidx.navigation.Navigation
 import com.example.bandung_bondowoso.BandungBondowosoApp
 import com.example.bandung_bondowoso.R
 import com.example.bandung_bondowoso.databinding.FragmentTransactionCreateBinding
+import com.example.bandung_bondowoso.helper.LocationHelper
 import com.example.bandung_bondowoso.helper.TransactionHelper
 import com.example.bandung_bondowoso.model.Transaction
 import com.example.bandung_bondowoso.model.TransactionCategory
@@ -36,6 +37,7 @@ class EditTransactionFragment : Fragment() {
     }
     private val binding get()   = _binding!!
     private lateinit var transactionHelper: TransactionHelper
+    private lateinit var locationHelper: LocationHelper
     /** Initialize Transaction View Model */
     private val transactionViewModel: TransactionViewModel by viewModels {
         TransactionViewModelFactory((activity?.application as BandungBondowosoApp).transactionRepository)
@@ -59,7 +61,10 @@ class EditTransactionFragment : Fragment() {
     private var locationLat by Delegates.notNull<Double>()
     private var locationLong by Delegates.notNull<Double>()
 
-
+    override fun onCreate(savedInstanceState: Bundle?) {
+        Log.d(tag, "onCreate")
+        super.onCreate(savedInstanceState)
+    }
     override fun onCreateView(
         inflater: LayoutInflater, container: ViewGroup?,
         savedInstanceState: Bundle?
@@ -69,6 +74,7 @@ class EditTransactionFragment : Fragment() {
         val root:View = binding.root
         title = binding.tvTransactionNew
         transactionHelper = TransactionHelper(requireContext())
+        locationHelper = LocationHelper(requireContext())
         transactionName = binding.etTransactionName
         transactionAmount = binding.etTransactionPrice
         transactionLocation = binding.etTransactionLocation
@@ -127,10 +133,6 @@ class EditTransactionFragment : Fragment() {
         }
        return root
     }
-    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
-        Log.d(tag, "onViewCreated")
-        super.onViewCreated(view, savedInstanceState)
-    }
 
     private fun editTransaction(): Boolean{
         Log.d(tag, "editTransaction")
@@ -151,16 +153,19 @@ class EditTransactionFragment : Fragment() {
             else -> throw IllegalStateException("No category selected")
         }
 
+        val coordinates =  locationHelper.setLatLongFromAddress(location)
 
         val newTransaction = transaction.copy(
             name = name,
             amount = amount.toInt(),
             type = category,
-            locationLat = locationLat,
-            locationLong = locationLong,
+            locationLat = coordinates!!.first,
+            locationLong = coordinates.second,
             locationName = location
         )
 
+        Log.d(tag, "Transaction: $name, $amount, $category, ${coordinates.first}, " +
+                "${coordinates.second}, $location")
         transactionViewModel.upsert(newTransaction)
         return true
     }
diff --git a/app/src/main/java/com/example/bandung_bondowoso/view/transaction/TransactionAdapter.kt b/app/src/main/java/com/example/bandung_bondowoso/view/transaction/TransactionAdapter.kt
index 0d905753fc758a12c616310ee3ad553efa152f49..4d598de26425ff78942fc53dae30306e88c19fca 100644
--- a/app/src/main/java/com/example/bandung_bondowoso/view/transaction/TransactionAdapter.kt
+++ b/app/src/main/java/com/example/bandung_bondowoso/view/transaction/TransactionAdapter.kt
@@ -1,6 +1,5 @@
 package com.example.bandung_bondowoso.view.transaction
 
-import android.app.AlertDialog
 import android.app.Dialog
 import android.view.LayoutInflater
 import android.view.View
@@ -8,7 +7,6 @@ import android.view.ViewGroup
 import android.widget.Button
 import android.widget.ImageView
 import android.widget.PopupMenu
-import android.widget.RadioButton
 import android.widget.TextView
 import android.widget.Toast
 import androidx.core.content.ContextCompat
@@ -18,7 +16,6 @@ import com.example.bandung_bondowoso.R
 import com.example.bandung_bondowoso.`interface`.TransactionItemClickListener
 import com.example.bandung_bondowoso.model.Transaction
 import com.example.bandung_bondowoso.model.TransactionCategory
-import java.sql.Date
 import java.text.SimpleDateFormat
 import java.util.Locale
 
@@ -35,10 +32,10 @@ class TransactionAdapter (var transactionList: List<Transaction>,
         val tvValueIcon:ImageView = view.findViewById(R.id.img_icon_value)
         val tvImageIcon:View = view.findViewById(R.id.img_icon_category)
         val locationLayout:View = view.findViewById(R.id.locationLayout)
-        val mMenus:ImageView = view.findViewById(R.id.img_more_action)
+        private val mMenus:ImageView = view.findViewById(R.id.img_more_action)
         private val dialog: Dialog = Dialog(itemView.context)
-        private lateinit var btnDialogCancel: Button
-        private lateinit var btnDialogSubmit: Button
+        private var btnDialogCancel: Button
+        private var btnDialogSubmit: Button
 
         init {
             mMenus.setOnClickListener {
@@ -55,7 +52,7 @@ class TransactionAdapter (var transactionList: List<Transaction>,
         }
 
         private fun popupMenus(){
-            val popupMenu = android.widget.PopupMenu(itemView.context, mMenus)
+            val popupMenu = PopupMenu(itemView.context, mMenus)
             popupMenu.inflate(R.menu.transaction_menu)
             popupMenu.setOnMenuItemClickListener {
                 when (it.itemId) {
@@ -157,7 +154,7 @@ class TransactionAdapter (var transactionList: List<Transaction>,
         holder.tvTransactionLocation.text = transaction.locationName
         holder.tvTransactionDate.text = dateFormat.format((transaction.createdAt))
         holder.locationLayout.setOnClickListener {
-            Toast.makeText(holder.itemView.context, "Location clicked", Toast.LENGTH_SHORT).show()
+            itemClickListener.onOpenMap(transaction.name, transaction.locationName)
         }
     }
 }
\ No newline at end of file
diff --git a/app/src/main/java/com/example/bandung_bondowoso/view/transaction/TransactionFragment.kt b/app/src/main/java/com/example/bandung_bondowoso/view/transaction/TransactionFragment.kt
index c7437a02e41cb383e242bf60dc7551d31222005e..4ff8de22b8eeb4bff8e5fb2552fa9e772fce91a2 100644
--- a/app/src/main/java/com/example/bandung_bondowoso/view/transaction/TransactionFragment.kt
+++ b/app/src/main/java/com/example/bandung_bondowoso/view/transaction/TransactionFragment.kt
@@ -1,10 +1,13 @@
 package com.example.bandung_bondowoso.view.transaction
 
+import android.content.Intent
+import android.net.Uri
 import android.os.Bundle
 import android.util.Log
 import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
+import android.widget.Button
 import android.widget.TextView
 import androidx.core.os.bundleOf
 import androidx.fragment.app.Fragment
@@ -14,12 +17,14 @@ import androidx.recyclerview.widget.LinearLayoutManager
 import com.example.bandung_bondowoso.BandungBondowosoApp
 import com.example.bandung_bondowoso.R
 import com.example.bandung_bondowoso.databinding.FragmentTransactionBinding
+import com.example.bandung_bondowoso.helper.LocationHelper
 import com.example.bandung_bondowoso.`interface`.TransactionItemClickListener
 import com.example.bandung_bondowoso.model.Transaction
 import com.example.bandung_bondowoso.viewmodel.TransactionViewModel
 import com.example.bandung_bondowoso.viewmodel.TransactionViewModelFactory
 import com.example.bandung_bondowoso.viewmodel.login.LoginViewModel
 import com.example.bandung_bondowoso.viewmodel.login.LoginViewModelFactory
+import com.google.android.material.bottomsheet.BottomSheetDialog
 import com.google.android.material.floatingactionbutton.FloatingActionButton
 
 class TransactionFragment : Fragment(), TransactionItemClickListener {
@@ -29,7 +34,9 @@ class TransactionFragment : Fragment(), TransactionItemClickListener {
     private var transactionList = listOf<Transaction>()
     private lateinit var adapter: TransactionAdapter
     private lateinit var userEmail: TextView
-    private lateinit var balance:TextView
+    private lateinit var balance: TextView
+    private lateinit var locationHelper: LocationHelper
+    private lateinit var  bottomSheetDialog: BottomSheetDialog
 
     private val transactionViewModel: TransactionViewModel by viewModels {
         TransactionViewModelFactory((activity?.application as BandungBondowosoApp).transactionRepository)
@@ -39,9 +46,6 @@ class TransactionFragment : Fragment(), TransactionItemClickListener {
         LoginViewModelFactory((activity?.application as BandungBondowosoApp).userRepository)
     }
 
-    override fun onCreate(savedInstanceState: Bundle?) {
-        super.onCreate(savedInstanceState)
-    }
 
     override fun onCreateView(
         inflater: LayoutInflater, container: ViewGroup?,
@@ -50,7 +54,8 @@ class TransactionFragment : Fragment(), TransactionItemClickListener {
         Log.d(tag, "onCreateView")
         _binding = FragmentTransactionBinding.inflate(inflater, container, false)
         val root:View = binding.root
-
+        locationHelper = LocationHelper(requireContext())
+        bottomSheetDialog = BottomSheetDialog(requireContext())
 
         adapter = TransactionAdapter(transactionList, itemClickListener = this)
         binding.rvTransaction.adapter = adapter
@@ -73,16 +78,6 @@ class TransactionFragment : Fragment(), TransactionItemClickListener {
            }
         }
 
-        val createTransactionButton:FloatingActionButton = binding.fabCreateTransaction
-        createTransactionButton.setOnClickListener {
-            Navigation.findNavController(root).navigate(R.id.action_navigation_transaction_to_newTransactionFragment)
-        }
-        return root
-    }
-
-    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
-        super.onViewCreated(view, savedInstanceState)
-
         transactionViewModel.balance.observe(viewLifecycleOwner) { amount ->
             Log.d(tag, "Balance: $amount")
             balance.text = getString(R.string.balance_value, amount.toString())
@@ -92,7 +87,13 @@ class TransactionFragment : Fragment(), TransactionItemClickListener {
             Log.d(tag, "User Email: $email")
             userEmail.text = email.toString()
         }
+        val createTransactionButton:FloatingActionButton = binding.fabCreateTransaction
+        createTransactionButton.setOnClickListener {
+            Navigation.findNavController(root).navigate(R.id.action_navigation_transaction_to_newTransactionFragment)
+        }
+        return root
     }
+
     override fun onDeleteTransaction(transaction: Transaction) {
         transactionViewModel.delete(transaction)
     }
@@ -102,8 +103,37 @@ class TransactionFragment : Fragment(), TransactionItemClickListener {
         Navigation.findNavController(root).navigate(R.id.action_navigation_transaction_to_editTransactionFragment, bundle)
     }
 
-    override fun onOpenMap(location:String) {
-        TODO()
+    override fun onOpenMap(name:String, location:String) {
+        val bottomSheetView = layoutInflater.inflate(R.layout.bottom_dialog_map, null)
+        val nameTextView = bottomSheetView.findViewById<TextView>(R.id.tv_btm_dialog_name)
+        val addressTextView = bottomSheetView.findViewById<TextView>(R.id.tv_address)
+        val buttonOpenMap = bottomSheetView.findViewById<Button>(R.id.btn_open_map)
+
+
+        val coordinates = locationHelper.setLatLongFromAddress(location)
+        addressTextView.text = location
+        nameTextView.text = name
+
+        bottomSheetDialog.setContentView(bottomSheetView)
+        bottomSheetDialog.show()
+
+        buttonOpenMap.setOnClickListener {
+            bottomSheetDialog.dismiss()
+            val gmmIntentUri = "geo:0,0?q=$location"
+            val mapIntent = Intent(Intent.ACTION_VIEW, Uri.parse(gmmIntentUri))
+            mapIntent.setPackage("com.google.android.apps.maps")
+            startActivity(mapIntent)
+        }
+    }
+    private fun dismissBottomSheetDialog() {
+        if (bottomSheetDialog.isShowing) {
+            bottomSheetDialog.dismiss()
+        }
     }
 
+    override fun onDestroyView() {
+        dismissBottomSheetDialog()
+        super.onDestroyView()
+    }
 }
+
diff --git a/app/src/main/res/drawable/bg_settings_card_email.xml b/app/src/main/res/drawable/bg_settings_card_email.xml
new file mode 100644
index 0000000000000000000000000000000000000000..211758aeefd78f338544978746ff5f3704ae3fcc
--- /dev/null
+++ b/app/src/main/res/drawable/bg_settings_card_email.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+    <solid android:color="@color/md_theme_peach" />
+    <corners android:radius="10dp" />
+</shape>
\ No newline at end of file
diff --git a/app/src/main/res/drawable/bg_settings_card_excel.xml b/app/src/main/res/drawable/bg_settings_card_excel.xml
new file mode 100644
index 0000000000000000000000000000000000000000..99e0d60361eea5facc82cf339d4d19e14d91d3f0
--- /dev/null
+++ b/app/src/main/res/drawable/bg_settings_card_excel.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+    <solid android:color="@color/md_theme_light_green" />
+    <corners android:radius="10dp" />
+</shape>
\ No newline at end of file
diff --git a/app/src/main/res/drawable/bg_settings_card_user.xml b/app/src/main/res/drawable/bg_settings_card_user.xml
new file mode 100644
index 0000000000000000000000000000000000000000..e8370c0dbd0fce4751b42db5edb58401baeaa725
--- /dev/null
+++ b/app/src/main/res/drawable/bg_settings_card_user.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+    <solid android:color="@color/md_theme_primaryContainer" />
+    <corners android:radius="10dp" />
+</shape>
\ No newline at end of file
diff --git a/app/src/main/res/drawable/bg_transaction_card.xml b/app/src/main/res/drawable/bg_transaction_card.xml
index fb36bc26960f5d59e9a1efb69fb45447c79c5c48..1daed3c4dd4b38038046a4fc2b9674030eb8204a 100644
--- a/app/src/main/res/drawable/bg_transaction_card.xml
+++ b/app/src/main/res/drawable/bg_transaction_card.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <shape xmlns:android="http://schemas.android.com/apk/res/android">
-    <solid android:color="@color/md_theme_surface" />
+    <solid android:color="@color/md_theme_primaryContainer" />
     <stroke android:width="2dp" android:color="@color/md_theme_primary" />
     <corners android:radius="10dp" />
 </shape>
\ No newline at end of file
diff --git a/app/src/main/res/drawable/bg_transaction_card_view.xml b/app/src/main/res/drawable/bg_transaction_card_view.xml
new file mode 100644
index 0000000000000000000000000000000000000000..609817e9f209f1f5ceee73cf9bd5debf5bdbf494
--- /dev/null
+++ b/app/src/main/res/drawable/bg_transaction_card_view.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+    <stroke android:width="2dp" android:color="@color/md_theme_primary" />
+    <corners android:radius="10dp" />
+</shape>
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_map.xml b/app/src/main/res/drawable/ic_map.xml
new file mode 100644
index 0000000000000000000000000000000000000000..ffd9dd90c5b45dff6468ea4995e28bc6718b2c91
--- /dev/null
+++ b/app/src/main/res/drawable/ic_map.xml
@@ -0,0 +1,5 @@
+<vector android:height="24dp" android:tint="#FFFFFF"
+    android:viewportHeight="24" android:viewportWidth="24"
+    android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
+    <path android:fillColor="@android:color/white" android:pathData="M20.5,3l-0.16,0.03L15,5.1 9,3 3.36,4.9c-0.21,0.07 -0.36,0.25 -0.36,0.48V20.5c0,0.28 0.22,0.5 0.5,0.5l0.16,-0.03L9,18.9l6,2.1 5.64,-1.9c0.21,-0.07 0.36,-0.25 0.36,-0.48V3.5c0,-0.28 -0.22,-0.5 -0.5,-0.5zM15,19l-6,-2.11V5l6,2.11V19z"/>
+</vector>
diff --git a/app/src/main/res/drawable/rounded_dialog.xml b/app/src/main/res/drawable/rounded_dialog.xml
new file mode 100644
index 0000000000000000000000000000000000000000..78ba6c2d8d395d1a3fee721b15ec0fb9c227d467
--- /dev/null
+++ b/app/src/main/res/drawable/rounded_dialog.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle">
+    <solid android:color="@color/md_theme_surfaceContainer"/>
+    <corners android:topLeftRadius="50dp"
+        android:topRightRadius="50dp"/>
+
+</shape>
diff --git a/app/src/main/res/layout/bottom_dialog_map.xml b/app/src/main/res/layout/bottom_dialog_map.xml
new file mode 100644
index 0000000000000000000000000000000000000000..cfe1ccaf306118c3a8f6ab6849b63e238f9d1423
--- /dev/null
+++ b/app/src/main/res/layout/bottom_dialog_map.xml
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="utf-8"?>
+<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    >
+
+    <TextView
+        android:id="@+id/tv_btm_dialog_name"
+        android:layout_width="330dp"
+        style="@style/TextAppearance.HeadlineMedium"
+        android:textColor="@color/md_theme_primary"
+        android:layout_marginTop="20dp"
+        android:gravity="center"
+        android:layout_height="wrap_content"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toTopOf="parent" />
+
+    <TextView
+        android:id="@+id/tv_address"
+        android:layout_width="330dp"
+        style="@style/TextAppearance.BodyLarge"
+        android:textColor="@color/md_theme_primary"
+        android:layout_marginTop="20dp"
+        android:gravity="center"
+        android:layout_height="wrap_content"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toBottomOf="@+id/tv_btm_dialog_name" />
+
+    <Button
+        android:id="@+id/btn_open_map"
+        style="@style/buttonStylePrimary"
+        android:layout_width="330dp"
+        android:layout_height="wrap_content"
+        android:layout_gravity="center_horizontal"
+        android:layout_marginTop="30dp"
+        android:width="200dp"
+        android:drawableStart="@drawable/ic_map"
+        android:focusable="false"
+        android:layout_marginBottom="30dp"
+        android:focusableInTouchMode="false"
+        android:text="@string/btn_open_map"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintHorizontal_bias="0.493"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toBottomOf="@id/tv_address"
+        app:layout_constraintVertical_bias="0.028" />
+
+</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_graph.xml b/app/src/main/res/layout/fragment_graph.xml
index 19ff9cd7bace9df79d732762eb05f42e98c6eafa..ed95a4c4451ee6a0cf528c307cc4f9c8892614ee 100644
--- a/app/src/main/res/layout/fragment_graph.xml
+++ b/app/src/main/res/layout/fragment_graph.xml
@@ -5,8 +5,8 @@
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     tools:context=".view.graph.GraphFragment"
+    android:background="@color/md_theme_surface"
     >
-
     <TextView
         android:id="@+id/textView"
         style="@style/TextAppearance.HeadlineLarge"
@@ -20,21 +20,22 @@
         app:layout_constraintStart_toStartOf="parent"
         app:layout_constraintTop_toTopOf="parent" />
 
-    <LinearLayout
+    <RelativeLayout
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:layout_marginTop="1dp"
+        android:layout_marginTop="0dp"
         android:orientation="vertical"
         app:layout_constraintEnd_toEndOf="parent"
         app:layout_constraintStart_toStartOf="parent"
-        app:layout_constraintTop_toBottomOf="@+id/textView">
+        app:layout_goneMarginTop="@dimen/title_top_margin"
+        app:layout_constraintTop_toBottomOf="@id/textView">
 
-        <com.anychart.AnyChartView
-            android:id="@+id/anyChartView"
+        <com.github.mikephil.charting.charts.PieChart
+            android:id="@+id/chart1"
             android:layout_width="match_parent"
-            android:layout_height="700dp"
-            app:layout_constraintBottom_toBottomOf="parent" />
-    </LinearLayout>
+            android:layout_height="match_parent"
 
+            />
 
+    </RelativeLayout>
 </androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_settings.xml b/app/src/main/res/layout/fragment_settings.xml
index c3cf19e9573f6d2a5dcab0ab1ab0c0d98b5c5a6c..8867c082b6043b1ebf951ef6cd227502765fd23d 100644
--- a/app/src/main/res/layout/fragment_settings.xml
+++ b/app/src/main/res/layout/fragment_settings.xml
@@ -3,15 +3,17 @@
     xmlns:app="http://schemas.android.com/apk/res-auto"
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
-    android:layout_height="match_parent">
+    android:layout_height="match_parent"
+    android:background="@color/md_theme_surface">
 
     <TextView
         android:id="@+id/tv_transaction_new"
         style="@style/TextAppearance.HeadlineLarge"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
-        android:padding="10dp"
-        android:text="Pengaturan"
+        android:layout_marginStart="@dimen/title_start_margin"
+        android:layout_marginTop="@dimen/title_top_margin"
+        android:text="@string/title_settings"
         android:textColor="@color/md_theme_primary"
         app:layout_constraintStart_toStartOf="parent"
         app:layout_constraintTop_toTopOf="parent" />
@@ -19,28 +21,28 @@
     <androidx.constraintlayout.widget.ConstraintLayout
         android:id="@+id/constraintLayout4"
         android:layout_width="match_parent"
-        android:layout_height="90dp"
-        android:layout_marginTop="64dp"
-        android:background="@drawable/bg_transaction_card"
+        android:layout_height="wrap_content"
+        android:layout_marginHorizontal="20dp"
+        android:layout_marginTop="30dp"
+        android:background="@drawable/bg_settings_card_user"
         android:padding="10dp"
         app:layout_constraintEnd_toEndOf="parent"
         app:layout_constraintHorizontal_bias="0.0"
         app:layout_constraintStart_toStartOf="parent"
         app:layout_constraintTop_toBottomOf="@+id/tv_transaction_new">
+
         <ImageView
             android:id="@+id/avatar"
             android:layout_width="60dp"
             android:layout_height="60dp"
             android:layout_marginStart="4dp"
-            android:background="@drawable/bg_transaction_icon"
             android:contentDescription="@string/excel_pic"
             android:padding="5dp"
             android:src="@drawable/avatar"
             app:layout_constraintBottom_toBottomOf="parent"
             app:layout_constraintStart_toStartOf="parent"
             app:layout_constraintTop_toTopOf="parent"
-            app:layout_constraintVertical_bias="0.325"
-             />
+            app:layout_constraintVertical_bias="0.325" />
 
         <androidx.constraintlayout.widget.ConstraintLayout
             android:id="@+id/layout_email"
@@ -56,13 +58,11 @@
             <TextView
                 android:id="@+id/user_email"
                 style="@style/TextAppearance.TitleMedium"
-                android:layout_width="280dp"
-                android:layout_height="30dp"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
                 android:layout_marginStart="0dp"
                 android:layout_marginTop="4dp"
-                android:textSize="22dp"
                 android:textColor="@color/md_theme_primary"
-                android:text = "13521155@std.stei.itb.ac.id"
                 app:layout_constraintStart_toStartOf="parent"
                 app:layout_constraintTop_toTopOf="parent" />
         </androidx.constraintlayout.widget.ConstraintLayout>
@@ -70,15 +70,15 @@
 
     </androidx.constraintlayout.widget.ConstraintLayout>
 
-        <androidx.constraintlayout.widget.ConstraintLayout
+    <androidx.constraintlayout.widget.ConstraintLayout
         android:id="@+id/constraintLayout3"
-        android:layout_width="match_parent"
+        android:layout_width="wrap_content"
         android:layout_height="wrap_content"
+        android:layout_marginHorizontal="30dp"
         android:layout_marginTop="24dp"
-        android:background="@drawable/bg_transaction_card"
+        android:background="@drawable/bg_settings_card_excel"
         android:padding="10dp"
         app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintHorizontal_bias="0.0"
         app:layout_constraintStart_toStartOf="parent"
         app:layout_constraintTop_toBottomOf="@+id/constraintLayout4">
 
@@ -88,7 +88,6 @@
             android:layout_width="36dp"
             android:layout_height="36dp"
             android:layout_marginStart="4dp"
-            android:background="@drawable/bg_transaction_icon"
             android:contentDescription="@string/excel_pic"
             android:padding="5dp"
             android:src="@drawable/excel_icon"
@@ -100,7 +99,7 @@
 
         <androidx.constraintlayout.widget.ConstraintLayout
             android:id="@+id/verticalLayout1"
-            android:layout_width="wrap_content"
+            android:layout_width="290dp"
             android:layout_height="wrap_content"
             android:layout_marginStart="20dp"
             android:padding="10dp"
@@ -116,12 +115,13 @@
                 android:layout_height="wrap_content"
                 android:text="@string/save_transaction"
                 android:textColor="@color/md_theme_primary"
+                android:textStyle="bold"
                 app:layout_constraintStart_toStartOf="parent"
                 app:layout_constraintTop_toTopOf="parent" />
 
             <TextView
                 android:id="@+id/tv_transaction_category_1"
-                style="@style/TextAppearance.LabelSmall"
+                style="@style/TextAppearance.LabelMedium"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
                 android:text="@string/file_type"
@@ -143,8 +143,8 @@
 
         <Button
             android:id="@+id/buttonSimpan"
-            android:layout_width="101dp"
-            android:layout_height="40dp"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
             android:layout_marginTop="0dp"
             android:layout_marginEnd="16dp"
             android:text="@string/simpan"
@@ -153,10 +153,12 @@
     </androidx.constraintlayout.widget.ConstraintLayout>
 
     <androidx.constraintlayout.widget.ConstraintLayout
+        android:id="@+id/constraintLayout5"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:layout_marginTop="24dp"
-        android:background="@drawable/bg_transaction_card"
+        android:layout_marginHorizontal="25dp"
+        android:layout_marginTop="16dp"
+        android:background="@drawable/bg_settings_card_email"
         android:padding="10dp"
         app:layout_constraintTop_toBottomOf="@+id/constraintLayout3"
         tools:layout_editor_absoluteX="-16dp">
@@ -167,7 +169,6 @@
             android:layout_width="36dp"
             android:layout_height="36dp"
             android:layout_marginStart="4dp"
-            android:background="@drawable/bg_transaction_icon"
             android:contentDescription="@string/gmail_pic"
             android:padding="5dp"
             android:src="@drawable/email_icon"
@@ -179,7 +180,7 @@
 
         <androidx.constraintlayout.widget.ConstraintLayout
             android:id="@+id/verticalLayout1_second"
-            android:layout_width="wrap_content"
+            android:layout_width="290dp"
             android:layout_height="wrap_content"
             android:layout_marginStart="20dp"
             android:padding="10dp"
@@ -195,12 +196,13 @@
                 android:layout_height="wrap_content"
                 android:text="@string/kirim_daftar_transaksi"
                 android:textColor="@color/md_theme_primary"
+                android:textStyle="bold"
                 app:layout_constraintStart_toStartOf="parent"
                 app:layout_constraintTop_toTopOf="parent" />
 
             <TextView
                 android:id="@+id/tv_transaction_category_2"
-                style="@style/TextAppearance.LabelSmall"
+                style="@style/TextAppearance.LabelMedium"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
                 android:text="@string/gmail"
@@ -222,13 +224,77 @@
 
         <Button
             android:id="@+id/buttonKirim"
-            android:layout_width="101dp"
-            android:layout_height="40dp"
-            android:layout_marginTop="0dp"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
             android:layout_marginEnd="16dp"
             android:text="@string/kirim"
+            app:layout_constraintBottom_toBottomOf="parent"
             app:layout_constraintEnd_toEndOf="parent"
             app:layout_constraintTop_toBottomOf="@+id/verticalLayout1_second" />
     </androidx.constraintlayout.widget.ConstraintLayout>
 
+    <androidx.constraintlayout.widget.ConstraintLayout
+        android:id="@+id/constraintLayout6"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginHorizontal="25dp"
+        android:layout_marginTop="16dp"
+        android:background="@drawable/bg_settings_card_user"
+        android:padding="10dp"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toBottomOf="@id/constraintLayout5">
+
+        <TextView
+            android:id="@+id/textView2"
+            style="@style/TextAppearance.TitleMedium"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginStart="@dimen/title_start_margin"
+            android:text="@string/random_transaksi"
+            android:textColor="@color/md_theme_primary"
+            android:textStyle="bold"
+            app:layout_constraintStart_toEndOf="@+id/imageView3"
+            app:layout_constraintTop_toTopOf="parent" />
+
+        <ImageView
+            android:id="@+id/imageView3"
+            android:layout_width="36dp"
+            android:layout_height="36dp"
+            android:contentDescription="@string/gmail_pic"
+            android:padding="5dp"
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintTop_toTopOf="parent"
+            app:srcCompat="@drawable/ic_transaction"
+            app:tint="@color/md_theme_primary" />
+
+        <Button
+            android:id="@+id/button"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="@dimen/title_top_margin"
+            android:layout_marginEnd="5dp"
+            android:text="@string/button_random"
+            app:layout_constraintBottom_toBottomOf="parent"
+            app:layout_constraintEnd_toEndOf="parent"
+            app:layout_constraintTop_toBottomOf="@+id/textView2" />
+    </androidx.constraintlayout.widget.ConstraintLayout>
+
+    <androidx.constraintlayout.widget.Guideline
+        android:id="@+id/guideline"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:orientation="vertical"
+        app:layout_constraintGuide_end="405dp" />
+
+    <Button
+        android:id="@+id/button2"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="105dp"
+        android:text="@string/button_logout"
+        android:layout_marginEnd="@dimen/title_start_margin"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintTop_toBottomOf="@+id/constraintLayout6" />
+
 </androidx.constraintlayout.widget.ConstraintLayout>
diff --git a/app/src/main/res/layout/fragment_transaction.xml b/app/src/main/res/layout/fragment_transaction.xml
index 41d73ede865bd22cba4894b962f9b5dc60733e31..43b92462a1c7af0eec35f3efee424479e59056cd 100644
--- a/app/src/main/res/layout/fragment_transaction.xml
+++ b/app/src/main/res/layout/fragment_transaction.xml
@@ -129,8 +129,8 @@
         style="@style/TextAppearance.HeadlineLarge"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
-        android:layout_marginStart="30dp"
-        android:layout_marginTop="20dp"
+        android:layout_marginStart="@dimen/title_start_margin"
+        android:layout_marginTop="@dimen/title_top_margin"
         android:text="@string/title_transactions"
         android:textColor="@color/md_theme_primary"
         app:layout_constraintStart_toStartOf="parent"
diff --git a/app/src/main/res/layout/fragment_transaction_create.xml b/app/src/main/res/layout/fragment_transaction_create.xml
index bf0a5623012da69fb81266928b367893612ebb2a..d19f31160f70c4fcebef6ccabccab1cdba3458f5 100644
--- a/app/src/main/res/layout/fragment_transaction_create.xml
+++ b/app/src/main/res/layout/fragment_transaction_create.xml
@@ -11,8 +11,8 @@
         style="@style/TextAppearance.HeadlineLarge"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
-        android:layout_marginTop="30dp"
-        android:layout_marginStart="20dp"
+        android:layout_marginTop="@dimen/title_top_margin"
+        android:layout_marginStart="@dimen/title_start_margin"
         android:text="@string/title_transaction_new"
         android:textColor="@color/md_theme_primary"
         app:layout_constraintStart_toStartOf="parent"
diff --git a/app/src/main/res/layout/fragment_transaction_edit.xml b/app/src/main/res/layout/fragment_transaction_edit.xml
index 0b8d89b10dc2ebc66be4df1968789dfe1d2b273d..680be236312e989893e991ee67f70bd5fcdb9a96 100644
--- a/app/src/main/res/layout/fragment_transaction_edit.xml
+++ b/app/src/main/res/layout/fragment_transaction_edit.xml
@@ -11,8 +11,8 @@
         style="@style/TextAppearance.HeadlineLarge"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
-        android:layout_marginTop="30dp"
-        android:layout_marginStart="20dp"
+        android:layout_marginTop="@dimen/title_top_margin"
+        android:layout_marginStart="@dimen/title_start_margin"
         android:text="@string/title_transaction_new"
         android:textColor="@color/md_theme_primary"
         app:layout_constraintStart_toStartOf="parent"
diff --git a/app/src/main/res/layout/item_transaction.xml b/app/src/main/res/layout/item_transaction.xml
index f28cb61ce8f9a436bbbb7712eca82d85c1f1fa79..92e1bd0ca15901a03260c459c61ed29c62d837d9 100644
--- a/app/src/main/res/layout/item_transaction.xml
+++ b/app/src/main/res/layout/item_transaction.xml
@@ -3,21 +3,20 @@
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
-    android:padding="10dp"
+    android:padding="25dp"
     android:layout_marginHorizontal="5dp"
     android:layout_marginVertical="10dp"
-    android:background="@drawable/bg_transaction_card">
+    android:background="@drawable/bg_transaction_card_view">
 
     <ImageView
         android:id="@+id/img_icon_category"
-        android:layout_width="36dp"
-        android:layout_height="36dp"
+        android:layout_width="48dp"
+        android:layout_height="48dp"
+        android:layout_marginTop="16dp"
         android:background="@drawable/bg_transaction_icon"
         android:contentDescription="@string/transaction_category"
         android:padding="5dp"
-        android:layout_marginStart="10dp"
         android:src="@drawable/ic_money_bill_wave"
-        app:layout_constraintBottom_toBottomOf="parent"
         app:layout_constraintStart_toStartOf="parent"
         app:layout_constraintTop_toTopOf="parent"
         app:tint="@color/md_theme_primary" />
@@ -38,22 +37,23 @@
             style="@style/TextAppearance.TitleMedium"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
-            android:text="@string/transaction_name"
             android:ellipsize="end"
             android:maxLines="1"
+            android:text="@string/transaction_name"
             android:textColor="@color/md_theme_primary"
+            android:textStyle="bold"
             app:layout_constraintStart_toStartOf="parent"
             app:layout_constraintTop_toTopOf="parent" />
 
         <TextView
             android:id="@+id/tv_transaction_category"
-            style="@style/TextAppearance.LabelSmall"
+            style="@style/TextAppearance.LabelMedium"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
-            android:text="@string/transaction_category"
-            android:textColor="@color/md_theme_primary"
             android:ellipsize="end"
             android:maxLines="1"
+            android:text="@string/transaction_category"
+            android:textColor="@color/md_theme_primary"
             app:layout_constraintStart_toStartOf="parent"
             app:layout_constraintTop_toBottomOf="@id/tv_transaction_name" />
 
@@ -62,22 +62,58 @@
             style="@style/TextAppearance.LabelSmall"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
+            android:ellipsize="end"
+            android:maxLines="1"
             android:text="@string/transaction_date"
             android:textColor="@color/md_theme_onSurface"
             app:layout_constraintStart_toStartOf="parent"
-            android:ellipsize="end"
-            android:maxLines="1"
             app:layout_constraintTop_toBottomOf="@id/tv_transaction_category" />
+
+
     </androidx.constraintlayout.widget.ConstraintLayout>
 
+    <androidx.constraintlayout.widget.ConstraintLayout
+    android:id="@+id/locationLayout"
+        android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+        android:layout_marginTop="10dp"
+    app:layout_constraintStart_toStartOf="parent"
+    app:layout_constraintTop_toBottomOf="@+id/verticalLayout1">
+
+    <ImageView
+        android:id="@+id/iv_location"
+        android:layout_width="20dp"
+        android:layout_height="20dp"
+        android:contentDescription="@string/transaction_category"
+        android:src="@drawable/ic_location"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toTopOf="parent"
+        app:tint="@color/md_theme_primary" />
+
+    <TextView
+        android:id="@+id/tv_transaction_location"
+        style="@style/TextAppearance.LabelSmall"
+        android:layout_width="0dp"
+        android:layout_height="wrap_content"
+        android:gravity="start"
+        android:text="@string/transaction_location"
+        android:textColor="@color/md_theme_primary"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintStart_toEndOf="@+id/iv_location"
+        app:layout_constraintTop_toTopOf="parent" />
+</androidx.constraintlayout.widget.ConstraintLayout>
+
     <androidx.constraintlayout.widget.ConstraintLayout
         android:id="@+id/verticalLayout2"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
+        android:layout_marginTop="10dp"
         android:layout_marginEnd="30dp"
         app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintTop_toTopOf="parent">
+        app:layout_constraintEnd_toStartOf="@+id/img_more_action"
+        app:layout_constraintStart_toEndOf="@+id/verticalLayout1"
+        app:layout_constraintTop_toTopOf="parent"
+        app:layout_constraintVertical_bias="0">
 
         <ImageView
             android:id="@+id/img_icon_value"
@@ -93,79 +129,41 @@
 
         <TextView
             android:id="@+id/tv_currency"
-            style="@style/TextAppearance.LabelMedium"
+            style="@style/TextAppearance.LabelLarge"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
-            android:text="@string/label_mata_uang"
-            android:textColor="@color/md_theme_primary"
             android:ellipsize="end"
             android:maxLines="1"
+            android:text="@string/label_mata_uang"
+            android:textColor="@color/md_theme_primary"
             app:layout_constraintEnd_toStartOf="@+id/tv_transaction_amount"
             app:layout_constraintStart_toEndOf="@id/img_icon_value"
             app:layout_constraintTop_toTopOf="parent" />
 
         <TextView
             android:id="@+id/tv_transaction_amount"
-            style="@style/TextAppearance.LabelMedium"
+            style="@style/TextAppearance.LabelLarge"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
-            android:ellipsize="end"
-            android:maxLines="1"
+            android:gravity="start"
+            android:singleLine="true"
             android:text="@string/transaction_price"
             android:textColor="@color/md_theme_red"
             app:layout_constraintEnd_toEndOf="parent"
             app:layout_constraintStart_toEndOf="@id/tv_currency"
-            app:layout_constraintTop_toTopOf="parent"
-
-            />
-
-        <androidx.constraintlayout.widget.ConstraintLayout
-            android:id="@+id/locationLayout"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_marginTop="16dp"
-            app:layout_constraintStart_toStartOf="parent"
-            app:layout_constraintTop_toBottomOf="@+id/tv_transaction_amount">
-
-            <ImageView
-                android:id="@+id/iv_location"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:contentDescription="@string/transaction_category"
-
-                android:src="@drawable/ic_location"
-                app:layout_constraintStart_toStartOf="parent"
-                app:layout_constraintTop_toTopOf="parent"
-                app:tint="@color/md_theme_primary" />
-
-            <TextView
-                android:id="@+id/tv_transaction_location"
-                style="@style/TextAppearance.LabelSmall"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:text="@string/transaction_location"
-                android:textColor="@color/md_theme_primary"
-                app:layout_constraintBottom_toBottomOf="parent"
-                app:layout_constraintHorizontal_bias="0"
-                android:ellipsize="end"
-                android:maxLines="1"
-                app:layout_constraintStart_toEndOf="@+id/iv_location"
-                app:layout_constraintTop_toTopOf="parent" />
-        </androidx.constraintlayout.widget.ConstraintLayout>
+            app:layout_constraintTop_toTopOf="parent" />
     </androidx.constraintlayout.widget.ConstraintLayout>
 
     <ImageView
         android:id="@+id/img_more_action"
-        android:layout_width="20dp"
-        android:layout_height="20dp"
-        android:layout_marginStart="9dp"
-        android:layout_marginTop="4dp"
+        android:layout_width="30dp"
+        android:layout_height="30dp"
         android:contentDescription="@string/cd_transaction_modify"
         android:padding="2dp"
+
         android:src="@drawable/ic_more"
         app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintHorizontal_bias="0.0"
-        app:layout_constraintStart_toEndOf="@+id/verticalLayout2"
+
         app:layout_constraintTop_toTopOf="parent"
         app:tint="@color/md_theme_onSurface" />
 
diff --git a/app/src/main/res/values-night/colors.xml b/app/src/main/res/values-night/colors.xml
index 495ab16ee96b5a1666a820f850204813f31e3ec8..d3a7ec3aacbee91eb1046e83e578d33021ebe645 100644
--- a/app/src/main/res/values-night/colors.xml
+++ b/app/src/main/res/values-night/colors.xml
@@ -1,11 +1,14 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
-    <color name="md_theme_primary">#BCC3FF</color>
+    <color name="md_theme_primary">#DFE0FF</color>
     <color name="md_theme_onPrimary">#242B61</color>
     <color name="md_theme_primaryContainer">#3B4279</color>
     <color name="md_theme_onPrimaryContainer">#DFE0FF</color>
-    <color name="md_theme_red">#751414</color>
-    <color name="md_theme_green">#129A18</color>
+    <color name="md_theme_red">#BE0707</color>
+    <color name="md_theme_green">#44C34A</color>
+    <color name="md_theme_peach">#FFDAD6</color>
+    <color name="md_theme_light_green">#C7ECC1</color>
+    <color name="md_theme_blue">#ADC7FF</color>
     <color name="md_theme_secondary">#BCC3FF</color>
     <color name="md_theme_onSecondary">#242C61</color>
     <color name="md_theme_secondaryContainer">#3B4279</color>
@@ -46,7 +49,7 @@
     <color name="md_theme_surfaceBright">#39393F</color>
     <color name="md_theme_surfaceContainerLowest">#0D0E13</color>
     <color name="md_theme_surfaceContainerLow">#1B1B21</color>
-    <color name="md_theme_surfaceContainer">#1F1F25</color>
+    <color name="md_theme_surfaceContainer">#070C1F</color>
     <color name="md_theme_surfaceContainerHigh">#29292F</color>
     <color name="md_theme_surfaceContainerHighest">#34343A</color>
     <color name="md_theme_primary_mediumContrast">#C1C7FF</color>
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
index f7f5bf383b53e8138d4820cd153d6d4e6d262a42..3753890d8dc3b6770bfb3c94275ec9bb9b4a9f03 100644
--- a/app/src/main/res/values/colors.xml
+++ b/app/src/main/res/values/colors.xml
@@ -6,6 +6,9 @@
     <color name="md_theme_onPrimary">#FFFFFF</color>
     <color name="md_theme_red">#BE0707</color>
     <color name="md_theme_green">#44C34A</color>
+    <color name="md_theme_peach">#FFDAD6</color>
+    <color name="md_theme_light_green">#C7ECC1</color>
+    <color name="md_theme_blue">#ADC7FF</color>
     <color name="md_theme_primaryContainer">#DFE0FF</color>
     <color name="md_theme_onPrimaryContainer">#0D154B</color>
     <color name="md_theme_secondary">#535A92</color>
diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml
index e00c2dd143c595389b3cf8a32d9dc6aff48ec367..3560bc0ffa53e166d225c53c8f54e29d52b276c6 100644
--- a/app/src/main/res/values/dimens.xml
+++ b/app/src/main/res/values/dimens.xml
@@ -2,4 +2,6 @@
     <!-- Default screen margins, per the Android Design guidelines. -->
     <dimen name="activity_horizontal_margin">16dp</dimen>
     <dimen name="activity_vertical_margin">16dp</dimen>
+    <dimen name="title_top_margin">20dp</dimen>
+    <dimen name="title_start_margin">30dp</dimen>
 </resources>
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 2bd501d8f9eae16b7bcbbfb24060bf07bf1e6a2b..65687ebb33481e3eb3d910227c8e54de3c4eecbe 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -49,6 +49,7 @@
     <!--Button-->
     <string name="btn_submit">Simpan</string>
     <string name="btn_cancel">Batal</string>
+    <string name="btn_open_map">Open Google Map</string>
     <!-- TODO: Remove or change this placeholder text -->
     <string name="hello_blank_fragment">Hello blank fragment</string>
     <string name="dialog_title">Hapus Transaksi</string>
@@ -61,6 +62,8 @@
     <string name="button_ok">OK</string>
     <string name="button_cancel">BATAL</string>
     <string name="button_delete">HAPUS</string>
+    <string name="button_random">RANDOM</string>
+    <string name="button_logout">LOG OUT</string>
 
     <string name="dialog_title_new_transaction">Transaksi Baru</string>
     <string name="dialog_message_new_transaction">Apakah Anda yakin ingin membatalkan pembuatan transaksi baru?</string>
@@ -84,5 +87,7 @@
     <string name="kirim_daftar_transaksi">Kirim Daftar Transaksi</string>
     <string name="gmail">Gmail</string>
     <string name="kirim">Kirim</string>
+    <string name="random_transaksi">Randomisasi Transaksi</string>
+
 
 </resources>
\ No newline at end of file
diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml
index f2055258cc6ca99d35c6a0150ed6e9f171352221..0288683a471345bfc77d675b5d00ef7a8bda056e 100644
--- a/app/src/main/res/values/themes.xml
+++ b/app/src/main/res/values/themes.xml
@@ -60,6 +60,7 @@
         <item name="textAppearanceLabelLarge">@style/TextAppearance.LabelLarge</item>
         <item name="textAppearanceLabelMedium">@style/TextAppearance.LabelMedium</item>
         <item name="textAppearanceLabelSmall">@style/TextAppearance.LabelSmall</item>
+        <item name="bottomSheetDialogTheme">@style/AppBottomSheetDialogTheme</item>
     </style>
 
     <!-- Display -->
@@ -170,4 +171,14 @@
         <item name="boxStrokeColor">@color/md_theme_primary</item>
         <item name="boxStrokeWidth">2dp</item>
     </style>
+
+    <style name="AppBottomSheetDialogTheme"
+        parent="Theme.Design.Light.BottomSheetDialog">
+        <item name="bottomSheetStyle">@style/AppModalStyle</item>
+    </style>
+
+    <style name="AppModalStyle"
+        parent="Widget.Design.BottomSheet.Modal">
+        <item name="android:background">@drawable/rounded_dialog</item>
+    </style>
 </resources>
\ No newline at end of file