diff --git a/app/src/main/java/com/example/bondoyap/service/LocationManager.kt b/app/src/main/java/com/example/bondoyap/service/LocationManager.kt
index a6f4215e2ca9a7f8a6adc0cc56d83e37b9156d9f..3196f9aa9dbadf66b1e00ea7082b75c1a8e45cbf 100644
--- a/app/src/main/java/com/example/bondoyap/service/LocationManager.kt
+++ b/app/src/main/java/com/example/bondoyap/service/LocationManager.kt
@@ -1,57 +1,60 @@
 package com.example.bondoyap.service
 
+import android.annotation.SuppressLint
 import android.content.Context
 import android.content.pm.PackageManager
 import android.location.Location
+import android.util.Log
 import androidx.core.app.ActivityCompat
 import androidx.fragment.app.FragmentActivity
 import com.google.android.gms.location.LocationServices
 
 class LocationManager {
     companion object {
+        fun haveLocationPermission(context: Context): Boolean {
+            return (ActivityCompat.checkSelfPermission(
+                context, android.Manifest.permission.ACCESS_FINE_LOCATION
+            ) == PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(
+                context, android.Manifest.permission.ACCESS_COARSE_LOCATION
+            ) == PackageManager.PERMISSION_GRANTED)
+        }
+
         fun askLocationPermission(context: Context, activity: FragmentActivity) {
-            if (
-                ActivityCompat.checkSelfPermission(
-                    context,
-                    android.Manifest.permission.ACCESS_FINE_LOCATION
-                )
-                != PackageManager.PERMISSION_GRANTED
-                && ActivityCompat.checkSelfPermission(
-                    context,
-                    android.Manifest.permission.ACCESS_COARSE_LOCATION
-                )
-                != PackageManager.PERMISSION_GRANTED
-            ) {
+            if (!haveLocationPermission(context)) {
                 ActivityCompat.requestPermissions(
-                    activity,
-                    arrayOf(android.Manifest.permission.ACCESS_FINE_LOCATION), 100
+                    activity, arrayOf(android.Manifest.permission.ACCESS_FINE_LOCATION), 100
                 )
             }
         }
 
+        @SuppressLint("MissingPermission")
         fun getLocation(context: Context): Location? {
             var location: Location? = null
-            if (
-                ActivityCompat.checkSelfPermission(
-                    context,
-                    android.Manifest.permission.ACCESS_FINE_LOCATION
-                )
-                != PackageManager.PERMISSION_GRANTED
-                && ActivityCompat.checkSelfPermission(
-                    context,
-                    android.Manifest.permission.ACCESS_COARSE_LOCATION
-                )
-                != PackageManager.PERMISSION_GRANTED
-            ) {
+            if (haveLocationPermission(context)) {
                 val fusedLocationProviderClient =
                     LocationServices.getFusedLocationProviderClient(context)
+                Log.d("LocationManager", "Getting last location")
+                @SuppressLint("MissingPermission")
                 val locationProvider = fusedLocationProviderClient.lastLocation
                 locationProvider.addOnSuccessListener {
                     if (it != null) {
+                        Log.d(
+                            "LocationManager",
+                            "Updating location to latitude: ${it.latitude} and longitude: ${it.longitude}"
+                        )
                         location = it
                     }
                 }
             }
+
+            if (location == null) {
+                Log.d("LocationManager", "Location is null")
+            } else {
+                Log.d(
+                    "LocationManager",
+                    "Get location at latitude: ${location?.latitude} and longitude: ${location?.longitude}"
+                )
+            }
             return location
         }
     }
diff --git a/app/src/main/java/com/example/bondoyap/ui/transactions/AddTransactionsFragment.kt b/app/src/main/java/com/example/bondoyap/ui/transactions/AddTransactionsFragment.kt
index bc90911cc9f011ee522fcbd397ed1475e4bb62f8..7b0656c38ac6fca410b7c1334d531569e852bff3 100644
--- a/app/src/main/java/com/example/bondoyap/ui/transactions/AddTransactionsFragment.kt
+++ b/app/src/main/java/com/example/bondoyap/ui/transactions/AddTransactionsFragment.kt
@@ -12,8 +12,6 @@ import androidx.fragment.app.viewModels
 import com.example.bondoyap.databinding.FragmentAddTransactionsBinding
 import com.example.bondoyap.service.LocationManager
 import com.example.bondoyap.ui.transactions.data.Transactions
-import com.google.android.gms.location.FusedLocationProviderClient
-import com.google.android.gms.location.LocationServices
 import java.text.SimpleDateFormat
 import java.util.Date
 import java.util.Locale
@@ -30,10 +28,6 @@ class AddTransactionsFragment : Fragment() {
         TransactionsViewModelFactory((requireContext().applicationContext as TransactionsApplication).repository)
     }
 
-    private lateinit var fusedLocationProviderClient: FusedLocationProviderClient
-    private lateinit var latitude: String
-    private lateinit var longitude: String
-
     override fun onCreateView(
         inflater: LayoutInflater,
         container: ViewGroup?,
@@ -50,9 +44,6 @@ class AddTransactionsFragment : Fragment() {
         adapter.setDropDownViewResource(R.layout.simple_spinner_dropdown_item)
         binding.spinnerKategori.adapter = adapter
 
-        fusedLocationProviderClient =
-            LocationServices.getFusedLocationProviderClient(requireContext())
-
         LocationManager.askLocationPermission(requireContext(), requireActivity())
 
         binding.buttonSimpan.setOnClickListener {
@@ -78,14 +69,14 @@ class AddTransactionsFragment : Fragment() {
 
             LocationManager.askLocationPermission(requireContext(), requireActivity())
             val location = LocationManager.getLocation(requireContext())
-            var longitude: String = ""
-            var latitude: String = ""
+            var longitude = ""
+            var latitude = ""
             location?.let { it1 ->
                 longitude = it1.longitude.toString()
                 latitude = it1.latitude.toString()
             }
 
-            val transaction: Transactions = Transactions(
+            val transaction = Transactions(
                 judul = judul,
                 nominal = nominal,
                 isPemasukan = isPemasukan,
diff --git a/app/src/main/java/com/example/bondoyap/ui/transactions/EditTransactionsFragment.kt b/app/src/main/java/com/example/bondoyap/ui/transactions/EditTransactionsFragment.kt
index f72aaec034e554588d337ae3b8a2d80d30291e71..ee35e51260c859f8795e6c94c1dd13f4127c68e7 100644
--- a/app/src/main/java/com/example/bondoyap/ui/transactions/EditTransactionsFragment.kt
+++ b/app/src/main/java/com/example/bondoyap/ui/transactions/EditTransactionsFragment.kt
@@ -2,7 +2,6 @@ package com.example.bondoyap.ui.transactions
 
 import android.R
 import android.app.AlertDialog
-import android.content.pm.PackageManager
 import android.location.Address
 import android.location.Geocoder
 import android.os.Bundle
@@ -14,14 +13,12 @@ import android.view.View
 import android.view.ViewGroup
 import android.widget.ArrayAdapter
 import android.widget.Toast
-import androidx.core.app.ActivityCompat
 import androidx.fragment.app.Fragment
 import androidx.fragment.app.viewModels
 import androidx.navigation.fragment.findNavController
 import com.example.bondoyap.databinding.FragmentEditTransactionsBinding
+import com.example.bondoyap.service.LocationManager
 import com.example.bondoyap.ui.transactions.data.Transactions
-import com.google.android.gms.location.FusedLocationProviderClient
-import com.google.android.gms.location.LocationServices
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.Dispatchers.Main
 import kotlinx.coroutines.launch
@@ -39,8 +36,6 @@ class EditTransactionsFragment : Fragment() {
         TransactionsViewModelFactory((requireContext().applicationContext as TransactionsApplication).repository)
     }
 
-    private lateinit var fusedLocationProviderClient: FusedLocationProviderClient
-
     override fun onCreateView(
         inflater: LayoutInflater,
         container: ViewGroup?,
@@ -48,7 +43,7 @@ class EditTransactionsFragment : Fragment() {
     ): View {
         _binding = FragmentEditTransactionsBinding.inflate(inflater, container, false)
 
-        var tanggal: String = ""
+        var tanggal = ""
         var latitude = ""
         var longitude = ""
 
@@ -71,7 +66,8 @@ class EditTransactionsFragment : Fragment() {
             val originalTransaction: Transactions = transactionsViewModel.get(transactionId)
 
             binding.editTextJudul.text = SpannableStringBuilder(originalTransaction.judul)
-            binding.editTextNominal.text = SpannableStringBuilder(originalTransaction.nominal.toBigDecimal().toString())
+            binding.editTextNominal.text =
+                SpannableStringBuilder(originalTransaction.nominal.toBigDecimal().toString())
 
             if (originalTransaction.isPemasukan) {
                 binding.spinnerKategori.setSelection(categories.indexOf(pemasukan))
@@ -101,31 +97,13 @@ class EditTransactionsFragment : Fragment() {
             }
         }
 
-        fusedLocationProviderClient = LocationServices.getFusedLocationProviderClient(requireContext())
-
-        if (
-            ActivityCompat.checkSelfPermission(requireContext(), android.Manifest.permission.ACCESS_FINE_LOCATION)
-            != PackageManager.PERMISSION_GRANTED
-            && ActivityCompat.checkSelfPermission(requireContext(), android.Manifest.permission.ACCESS_COARSE_LOCATION)
-            != PackageManager.PERMISSION_GRANTED
-        ) {
-            ActivityCompat.requestPermissions(requireActivity(),
-                arrayOf(android.Manifest.permission.ACCESS_FINE_LOCATION), 100
-            )
-        }
+        LocationManager.askLocationPermission(requireContext(), requireActivity())
 
         binding.checkboxUpdateLokasi.setOnCheckedChangeListener { _, isChecked ->
             if (isChecked) {
-                if (
-                    ActivityCompat.checkSelfPermission(requireContext(), android.Manifest.permission.ACCESS_FINE_LOCATION)
-                    != PackageManager.PERMISSION_GRANTED
-                    && ActivityCompat.checkSelfPermission(requireContext(), android.Manifest.permission.ACCESS_COARSE_LOCATION)
-                    != PackageManager.PERMISSION_GRANTED
-                ) {
-                    ActivityCompat.requestPermissions(requireActivity(),
-                        arrayOf(android.Manifest.permission.ACCESS_FINE_LOCATION), 100
-                    )
+                if (!LocationManager.haveLocationPermission(requireContext())) {
                     binding.checkboxUpdateLokasi.isChecked = false
+                    LocationManager.askLocationPermission(requireContext(), requireActivity())
                 }
             }
         }
@@ -148,7 +126,7 @@ class EditTransactionsFragment : Fragment() {
                 0.0
             }
 
-            val transaction: Transactions = Transactions(
+            val transaction = Transactions(
                 judul = judul,
                 nominal = nominal,
                 isPemasukan = isPemasukan,
@@ -159,15 +137,14 @@ class EditTransactionsFragment : Fragment() {
             )
 
             if (binding.checkboxUpdateLokasi.isChecked) {
-                val location = fusedLocationProviderClient.lastLocation
-                location.addOnSuccessListener {
-                    if (it != null) {
-                        latitude = it.latitude.toString()
-                        longitude = it.longitude.toString()
-
-                        transaction.latitude = latitude
-                        transaction.longitude = longitude
-                    }
+                LocationManager.askLocationPermission(requireContext(), requireActivity())
+                val location = LocationManager.getLocation(requireContext())
+                location?.let { it1 ->
+                    longitude = it1.longitude.toString()
+                    latitude = it1.latitude.toString()
+
+                    transaction.latitude = latitude
+                    transaction.longitude = longitude
                 }
             }
 
@@ -200,14 +177,18 @@ class EditTransactionsFragment : Fragment() {
                 } else {
                     binding.spinnerKategori.setSelection(categories.indexOf(pengeluaran))
                 }
-                Toast.makeText(requireContext(), "Transaksi berhasil diperbarui", Toast.LENGTH_SHORT).show()
+                Toast.makeText(
+                    requireContext(),
+                    "Transaksi berhasil diperbarui",
+                    Toast.LENGTH_SHORT
+                ).show()
             }
 
 
         }
 
         binding.buttonHapus.setOnClickListener {
-            val transaction: Transactions = Transactions(
+            val transaction = Transactions(
                 judul = "",
                 nominal = 0.0,
                 isPemasukan = false,
@@ -218,7 +199,8 @@ class EditTransactionsFragment : Fragment() {
             showConfirmationDialog("Hapus", "Apakah Anda yakin ingin menghapus transaksi ini?") {
                 transactionsViewModel.delete(transaction)
                 findNavController().navigate(com.example.bondoyap.R.id.navigation_transactions)
-                Toast.makeText(requireContext(), "Transaksi berhasil dihapus", Toast.LENGTH_SHORT).show()
+                Toast.makeText(requireContext(), "Transaksi berhasil dihapus", Toast.LENGTH_SHORT)
+                    .show()
             }
         }