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