diff --git a/app/src/main/java/com/example/bondoman/activities/MainActivity.kt b/app/src/main/java/com/example/bondoman/activities/MainActivity.kt
index 09a918172d2b0607cbf3fd406ef945381bf82d8d..34d629add008a67991a896920ccd662c97f22ee0 100644
--- a/app/src/main/java/com/example/bondoman/activities/MainActivity.kt
+++ b/app/src/main/java/com/example/bondoman/activities/MainActivity.kt
@@ -1,5 +1,6 @@
 package com.example.bondoman.activities
 
+import android.app.Activity
 import android.content.BroadcastReceiver
 import android.content.Context
 import android.content.Intent
@@ -10,24 +11,58 @@ import android.util.Log
 import android.view.MenuItem
 import android.view.View
 import android.widget.LinearLayout
+import androidx.activity.viewModels
 import androidx.constraintlayout.widget.ConstraintLayout
 import androidx.fragment.app.Fragment
+import androidx.fragment.app.viewModels
 import androidx.navigation.findNavController
 import androidx.navigation.fragment.NavHostFragment
 import androidx.navigation.ui.onNavDestinationSelected
 import androidx.viewpager2.adapter.FragmentViewHolder
 import com.example.bondoman.R
+import com.example.bondoman.database.TransactionDatabase
+import com.example.bondoman.entities.Transaction
+import com.example.bondoman.lib.SecurePreferences
+import com.example.bondoman.repositories.TransactionRepository
+import com.example.bondoman.services.TokenCheckService
+import com.example.bondoman.viewModels.TransactionViewModelFactory
+import com.example.bondoman.viewModels.TransactionsViewModel
 import com.google.android.material.bottomnavigation.BottomNavigationView
 import com.google.android.material.navigation.NavigationView
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.SupervisorJob
+import java.util.Date
 
 class MainActivity : BaseActivity() {
     private lateinit var randomizeReceiver: BroadcastReceiver
-    private lateinit var navigationView : NavigationView
-    private lateinit var fragment : NavHostFragment
-    private lateinit var bottomNavigationView: BottomNavigationView
+    private var isReceiverRegistered = false
+    private lateinit var bottomNavigationView: BottomNavigationView;
+    private lateinit var navigationView: NavigationView;
+    private lateinit var fragment: NavHostFragment;
+    private lateinit var securePreferences: SecurePreferences
+    private val newTransactionRequestCode = 1
+    private val editTransactionRequestCode = 2
+    private var isAddTransactionActivityRunning = false
+    private val wordViewModel: TransactionsViewModel by viewModels {
+        TransactionViewModelFactory(
+            TransactionRepository(
+                TransactionDatabase.getInstance(this, CoroutineScope(
+                    SupervisorJob()
+                )
+                ).transactionDao(), securePreferences)
+        )
+    }
+
+
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
         setContentView(R.layout.activity_main)
+
+        securePreferences = SecurePreferences(this)
+
+        tokenServiceIntent= Intent(this, TokenCheckService::class.java)
+        startService(tokenServiceIntent)
+
         tokenExpiredReceiver = object : BroadcastReceiver(){
             override fun onReceive(context: Context?, intent: Intent?) {
                 if(intent != null && intent.action != null){
@@ -46,11 +81,11 @@ class MainActivity : BaseActivity() {
         }
         randomizeReceiver = object : BroadcastReceiver() {
             override fun onReceive(context: Context?, intent: Intent?) {
-                Log.e("Randomize", "Broadcast received")
-                if (intent?.action == "com.example.bondoman.RANDOMIZE_TRANSACTION") {
+                if (intent?.action == "com.example.bondoman.RANDOMIZE_TRANSACTION" && !isAddTransactionActivityRunning) {
+                    isAddTransactionActivityRunning = true
                     val randomizeIntent = Intent(this@MainActivity, AddTransaction::class.java)
                     randomizeIntent.putExtras(intent)
-                    startActivityForResult(randomizeIntent,1)
+                    startActivityForResult(randomizeIntent, newTransactionRequestCode)
                 }
             }
         }
@@ -116,4 +151,26 @@ class MainActivity : BaseActivity() {
         super.onDestroy()
     }
 
+    override fun onActivityResult(requestCode: Int, resultCode: Int, intentData: Intent?) {
+        super.onActivityResult(requestCode, resultCode, intentData)
+
+        if (requestCode == newTransactionRequestCode && resultCode == Activity.RESULT_OK) {
+            val title = intentData?.getStringExtra(AddTransaction.TITLE) ?: ""
+            val amount = intentData?.getFloatExtra(AddTransaction.AMOUNT, 0.0f) ?: 0.0f
+            val type = intentData?.getStringExtra(AddTransaction.TYPE) ?: ""
+            val location = intentData?.getStringExtra(AddTransaction.LOCATION) ?: ""
+
+            val transaction = Transaction(
+                id = 0,
+                title = title,
+                category = type,
+                amount = amount,
+                location = location,
+                date = Date(),
+                userEmail = securePreferences.getEmail() ?: ""
+            )
+            wordViewModel.insert(transaction)
+            isAddTransactionActivityRunning = false
+        }
+    }
 }
\ No newline at end of file