diff --git a/app/src/main/java/com/example/bondoyap/MainActivity.kt b/app/src/main/java/com/example/bondoyap/MainActivity.kt
index 45bd03acce96fb18184ec41c63a83e7262d0af71..f99a955ca06223a0f5dc78aba72f6cc75a909984 100644
--- a/app/src/main/java/com/example/bondoyap/MainActivity.kt
+++ b/app/src/main/java/com/example/bondoyap/MainActivity.kt
@@ -2,23 +2,38 @@ package com.example.bondoyap
 
 import android.content.Context
 import android.content.Intent
+import android.content.IntentFilter
 import android.content.SharedPreferences
 import android.os.Bundle
+import androidx.activity.viewModels
 import com.google.android.material.bottomnavigation.BottomNavigationView
 import androidx.appcompat.app.AppCompatActivity
+import androidx.core.content.ContentProviderCompat.requireContext
+import androidx.fragment.app.viewModels
+import androidx.localbroadcastmanager.content.LocalBroadcastManager
 import androidx.navigation.findNavController
 import androidx.navigation.ui.AppBarConfiguration
 import androidx.navigation.ui.setupActionBarWithNavController
 import androidx.navigation.ui.setupWithNavController
 import com.example.bondoyap.service.api.Constants.SHARED_PREFS_NAME
 import com.example.bondoyap.databinding.ActivityMainBinding
+import com.example.bondoyap.service.api.Constants
 import com.example.bondoyap.service.jwt.JwtService
 import com.example.bondoyap.ui.login.LoginActivity
+import com.example.bondoyap.ui.transactions.TransactionsApplication
+import com.example.bondoyap.ui.transactions.TransactionsBroadcastReceiver
+import com.example.bondoyap.ui.transactions.TransactionsViewModel
+import com.example.bondoyap.ui.transactions.TransactionsViewModelFactory
 
 class MainActivity : AppCompatActivity() {
 
     private lateinit var binding: ActivityMainBinding
     private lateinit var sharedPreferences: SharedPreferences
+    private lateinit var transactionsBroadcastReceiver: TransactionsBroadcastReceiver
+
+    private val transactionsViewModel: TransactionsViewModel by viewModels {
+        TransactionsViewModelFactory((applicationContext as TransactionsApplication).repository)
+    }
 
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
@@ -48,6 +63,10 @@ class MainActivity : AppCompatActivity() {
         setupActionBarWithNavController(navController, appBarConfiguration)
 
         navView.setupWithNavController(navController)
+
+        transactionsBroadcastReceiver = TransactionsBroadcastReceiver(transactionsViewModel)
+        val filter = IntentFilter(Constants.ACTION_RANDOMIZE_TRANSACTIONS)
+        LocalBroadcastManager.getInstance(this).registerReceiver(transactionsBroadcastReceiver, filter)
     }
 
     override fun onSupportNavigateUp(): Boolean {
@@ -57,4 +76,9 @@ class MainActivity : AppCompatActivity() {
     private fun isLoggedIn(): Boolean {
         return sharedPreferences.getBoolean("isLoggedIn", false)
     }
+
+    override fun onDestroy() {
+        super.onDestroy()
+        LocalBroadcastManager.getInstance(this).unregisterReceiver(transactionsBroadcastReceiver)
+    }
 }
\ No newline at end of file
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 88d64ef36a124fb2e7a944540da9f4ca8a2a2dd2..6463fa0928a6487d79dfda7d59da716d1f735aed 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
@@ -1,17 +1,23 @@
 package com.example.bondoyap.ui.transactions
 
 import android.R
+import android.content.Context
+import android.content.IntentFilter
 import android.content.pm.PackageManager
+import android.os.Build
 import android.os.Bundle
 import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
 import android.widget.ArrayAdapter
 import android.widget.Toast
+import androidx.annotation.RequiresApi
 import androidx.core.app.ActivityCompat
 import androidx.fragment.app.Fragment
 import androidx.fragment.app.viewModels
+import androidx.localbroadcastmanager.content.LocalBroadcastManager
 import com.example.bondoyap.databinding.FragmentAddTransactionsBinding
+import com.example.bondoyap.service.api.Constants.ACTION_RANDOMIZE_TRANSACTIONS
 import com.example.bondoyap.ui.transactions.data.Transactions
 import com.google.android.gms.location.FusedLocationProviderClient
 import com.google.android.gms.location.LocationServices
@@ -85,7 +91,7 @@ class AddTransactionsFragment : Fragment() {
                 0.0
             }
 
-            val location = fusedLocationProviderClient.lastLocation
+                val location = fusedLocationProviderClient.lastLocation
             location.addOnSuccessListener {
                 if(it != null) {
                     latitude = it.latitude.toString()
diff --git a/app/src/main/java/com/example/bondoyap/ui/transactions/TransactionsBroadcastReceiver.kt b/app/src/main/java/com/example/bondoyap/ui/transactions/TransactionsBroadcastReceiver.kt
index f2d37566bed4a1ac0d4d4e2ef9f0e6099a775010..01ec56df32f5ede55d12ea840944d5e1704bbe31 100644
--- a/app/src/main/java/com/example/bondoyap/ui/transactions/TransactionsBroadcastReceiver.kt
+++ b/app/src/main/java/com/example/bondoyap/ui/transactions/TransactionsBroadcastReceiver.kt
@@ -3,17 +3,72 @@ package com.example.bondoyap.ui.transactions
 import android.content.BroadcastReceiver
 import android.content.Context
 import android.content.Intent
+import android.content.pm.PackageManager
 import android.util.Log
 import android.widget.Toast
+import androidx.core.app.ActivityCompat
+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
+import kotlin.random.Random
 
-class TransactionsBroadcastReceiver : BroadcastReceiver() {
+class TransactionsBroadcastReceiver(private val transactionsViewModel: TransactionsViewModel) : BroadcastReceiver() {
+    private lateinit var fusedLocationProviderClient: FusedLocationProviderClient
+    private lateinit var latitude: String
+    private lateinit var longitude: String
     override fun onReceive(context: Context?, intent: Intent?) {
-        Log.d("BroadcastDebug", "onReceive")
+        Log.d("BroadcastDebug", "Broadcast received in AddTransactionsFragment")
 
-        val message = intent?.getStringExtra("message")
-        if (message != null) {
-            Log.d("BroadcastDebug", message)
+        context ?: return
+
+        val randomJudul = "Random Judul ${Random.nextInt(1000)}"
+        val randomNominal = Random.nextDouble(1000000000000000.0)
+        val randomIsPemasukan = Random.nextBoolean()
+        val dateFormat = SimpleDateFormat("dd/MM/yyyy", Locale.getDefault())
+        val currentDate = dateFormat.format(Date())
+
+        fusedLocationProviderClient = LocationServices.getFusedLocationProviderClient(context)
+        val location = fusedLocationProviderClient.lastLocation
+        location.addOnSuccessListener {
+            if(it != null) {
+                latitude = it.latitude.toString()
+                longitude = it.longitude.toString()
+
+                val transaction: Transactions = Transactions(
+                    judul = randomJudul,
+                    nominal = randomNominal,
+                    isPemasukan = randomIsPemasukan,
+                    tanggal = currentDate,
+                    longitude = longitude,
+                    latitude = latitude
+                )
+                transactionsViewModel.upsert(transaction)
+            }
         }
-        Toast.makeText(context?.applicationContext, "Received message: $message", Toast.LENGTH_SHORT).show()
+
+        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
+        ) {
+            val transaction: Transactions = Transactions(
+                judul = randomJudul,
+                nominal = randomNominal,
+                isPemasukan = randomIsPemasukan,
+                tanggal = currentDate,
+                longitude = "",
+                latitude = ""
+            )
+            transactionsViewModel.upsert(transaction)
+            Toast.makeText(context.applicationContext,
+                "Izinkan location permission untuk membuat transaksi random dengan lokasi",
+                Toast.LENGTH_SHORT).show()
+        }
+
+        Toast.makeText(context.applicationContext, "Transaksi random telah dibuat", Toast.LENGTH_SHORT).show()
     }
 }
\ No newline at end of file