diff --git a/app/src/main/java/com/example/bondoyap/ui/scanner/ScanResultFragment.kt b/app/src/main/java/com/example/bondoyap/ui/scanner/ScanResultFragment.kt index 96f2ba070db2124c6497759326fab0e7b1419f4d..1f72aec1b5beac20955e231811770fb1b4be3302 100644 --- a/app/src/main/java/com/example/bondoyap/ui/scanner/ScanResultFragment.kt +++ b/app/src/main/java/com/example/bondoyap/ui/scanner/ScanResultFragment.kt @@ -5,11 +5,24 @@ import android.util.Log import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import android.widget.Toast import androidx.fragment.app.Fragment import androidx.fragment.app.activityViewModels +import androidx.fragment.app.viewModels +import androidx.navigation.NavController +import androidx.navigation.fragment.findNavController import androidx.recyclerview.widget.LinearLayoutManager import com.example.bondoyap.databinding.FragmentScanResultBinding +import com.example.bondoyap.service.LocationManager +import com.example.bondoyap.service.api.data.Item import com.example.bondoyap.ui.scanner.listAdapter.ScanResultListAdapter +import com.example.bondoyap.ui.transactions.TransactionsApplication +import com.example.bondoyap.ui.transactions.TransactionsViewModel +import com.example.bondoyap.ui.transactions.TransactionsViewModelFactory +import com.example.bondoyap.ui.transactions.data.Transactions +import java.text.SimpleDateFormat +import java.util.Date +import java.util.Locale class ScanResultFragment : Fragment() { @@ -17,6 +30,7 @@ class ScanResultFragment : Fragment() { // onDestroyView. private var _binding: FragmentScanResultBinding? = null private val binding get() = _binding!! + private lateinit var navController: NavController override fun onCreateView( @@ -27,15 +41,23 @@ class ScanResultFragment : Fragment() { _binding = FragmentScanResultBinding.inflate(inflater, container, false) val root: View = binding.root + navController = findNavController() val scannerViewModel: ScannerViewModel by activityViewModels() + val items = scannerViewModel.items ?: throw Exception("Scan Result is null") + Log.d("Scan Result", "Result Received: $items") val recyclerView = binding.recyclerView val adapter = ScanResultListAdapter() recyclerView.adapter = adapter recyclerView.layoutManager = LinearLayoutManager(requireContext()) - scannerViewModel.items?.let { items -> - adapter.submitList(items) - Log.d("Scan Result", "Result Received: $items") + adapter.submitList(items) + + binding.cancelButton.setOnClickListener { + navController.popBackStack() + } + + binding.saveButton.setOnClickListener { + saveNota(items) } return root @@ -45,4 +67,39 @@ class ScanResultFragment : Fragment() { super.onDestroyView() _binding = null } + + private fun saveNota(items: List<Item>) { + val dateDateFormat = SimpleDateFormat("dd/MM/yyyy", Locale.getDefault()) + val titleDateFormat = SimpleDateFormat("dd_MM_yyyy_HH_mm_ss", Locale.getDefault()) + val currentTime = Date() + val currentDate = dateDateFormat.format(currentTime) + val title = titleDateFormat.format(currentTime) + + val value = items.sumOf { it.quantity * it.price } + + val transactionsViewModel: TransactionsViewModel by viewModels { + TransactionsViewModelFactory((requireContext().applicationContext as TransactionsApplication).repository) + } + + LocationManager.askLocationPermission(requireContext(), requireActivity()) + val location = LocationManager.getLocation(requireContext()) + var longitude = "" + var latitude = "" + location?.let { it1 -> + longitude = it1.longitude.toString() + latitude = it1.latitude.toString() + } + + val transaction: Transactions = Transactions( + judul = "Scanner_${title}", + nominal = value, + isPemasukan = false, + tanggal = currentDate, + longitude = longitude, + latitude = latitude + ) + transactionsViewModel.upsert(transaction) + + Toast.makeText(requireContext(), "Nota berhasil disimpan", Toast.LENGTH_SHORT).show() + } } \ No newline at end of file