From efb0c76f6915135b8d1bf5c0a25d4640d0c0bfdc Mon Sep 17 00:00:00 2001
From: MooN <56061215+MgKyawLay@users.noreply.github.com>
Date: Mon, 10 Nov 2025 16:27:06 +0630
Subject: [PATCH] qr only history
---
.idea/copilot.data.migration.ask2agent.xml | 6 +
.../utsmm/kbz/ui/qr_pay/QRHistoryAdapter.java | 63 +++++++
.../kbz/ui/qr_pay/QRHistoryFragment.java | 80 +++++++++
.../kbz/ui/qr_pay/QRHistoryViewModel.java | 29 +++
.../utsmm/kbz/ui/qr_pay/QRPayFragment.java | 6 +-
.../main/res/layout/fragment_qr_history.xml | 19 ++
app/src/main/res/layout/item_qr_history.xml | 165 ++++++++++++++++++
.../main/res/navigation/mobile_navigation.xml | 10 ++
app/src/main/res/values/strings.xml | 4 +-
.../baselib/db/dao/PayDetailDao.java | 3 +
.../utsmyanmar/baselib/repo/Repository.java | 2 +
11 files changed, 385 insertions(+), 2 deletions(-)
create mode 100644 .idea/copilot.data.migration.ask2agent.xml
create mode 100644 app/src/main/java/com/utsmm/kbz/ui/qr_pay/QRHistoryAdapter.java
create mode 100644 app/src/main/java/com/utsmm/kbz/ui/qr_pay/QRHistoryFragment.java
create mode 100644 app/src/main/java/com/utsmm/kbz/ui/qr_pay/QRHistoryViewModel.java
create mode 100644 app/src/main/res/layout/fragment_qr_history.xml
create mode 100644 app/src/main/res/layout/item_qr_history.xml
diff --git a/.idea/copilot.data.migration.ask2agent.xml b/.idea/copilot.data.migration.ask2agent.xml
new file mode 100644
index 0000000..1f2ea11
--- /dev/null
+++ b/.idea/copilot.data.migration.ask2agent.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/com/utsmm/kbz/ui/qr_pay/QRHistoryAdapter.java b/app/src/main/java/com/utsmm/kbz/ui/qr_pay/QRHistoryAdapter.java
new file mode 100644
index 0000000..5e3f660
--- /dev/null
+++ b/app/src/main/java/com/utsmm/kbz/ui/qr_pay/QRHistoryAdapter.java
@@ -0,0 +1,63 @@
+package com.utsmm.kbz.ui.qr_pay;
+
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+import androidx.databinding.DataBindingUtil;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.utsmm.kbz.R;
+import com.utsmm.kbz.databinding.ItemQrHistoryBinding;
+import com.utsmyanmar.paylibs.model.PayDetail;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class QRHistoryAdapter extends RecyclerView.Adapter {
+
+ private List items = new ArrayList<>();
+
+ public void setItems(List list){
+ items = list;
+ notifyDataSetChanged();
+ }
+
+ @NonNull
+ @Override
+ public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
+ ItemQrHistoryBinding binding = DataBindingUtil.inflate(
+ LayoutInflater.from(parent.getContext()),
+ R.layout.item_qr_history,
+ parent,
+ false
+ );
+ return new ViewHolder(binding);
+ }
+
+ @Override
+ public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
+ holder.bind(items.get(position));
+ }
+
+ @Override
+ public int getItemCount() {
+ return items.size();
+ }
+
+ static class ViewHolder extends RecyclerView.ViewHolder {
+ private final ItemQrHistoryBinding binding;
+
+ public ViewHolder(@NonNull ItemQrHistoryBinding binding){
+ super(binding.getRoot());
+ this.binding = binding;
+ }
+
+ public void bind(PayDetail item){
+ binding.setPayDetail(item);
+ binding.executePendingBindings();
+ }
+ }
+}
diff --git a/app/src/main/java/com/utsmm/kbz/ui/qr_pay/QRHistoryFragment.java b/app/src/main/java/com/utsmm/kbz/ui/qr_pay/QRHistoryFragment.java
new file mode 100644
index 0000000..e94d7dc
--- /dev/null
+++ b/app/src/main/java/com/utsmm/kbz/ui/qr_pay/QRHistoryFragment.java
@@ -0,0 +1,80 @@
+package com.utsmm.kbz.ui.qr_pay;
+
+import android.os.Bundle;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.lifecycle.ViewModelProvider;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.utsmm.kbz.BR;
+import com.utsmm.kbz.R;
+import com.utsmyanmar.baselib.fragment.DataBindingFragment;
+import com.utsmyanmar.baselib.util.DataBindingConfig;
+
+import dagger.hilt.android.AndroidEntryPoint;
+
+@AndroidEntryPoint
+public class QRHistoryFragment extends DataBindingFragment {
+
+ private QRHistoryAdapter adapter;
+ private QRHistoryViewModel viewModel;
+
+
+ @Override
+ protected void initViewModel() {
+ viewModel = new ViewModelProvider(this).get(QRHistoryViewModel.class);
+ }
+
+ @Override
+ protected DataBindingConfig getDataBindingConfig() {
+ DataBindingConfig bindingConfig = new DataBindingConfig(R.layout.fragment_qr_history, BR.viewModel, viewModel);
+ bindingConfig.addBindingParam(BR.adapter, adapter);
+ return bindingConfig;
+ }
+
+ @Override
+ protected int currentId() {
+ return 0;
+ }
+
+ @Override
+ protected int hostId() {
+ return 0;
+ }
+
+ @Override
+ protected int routeId() {
+ return 0;
+ }
+
+ @Override
+ public void onResume(){
+ super.onResume();
+ setToolBarTitleWithBackIcon("History");
+ observeData();
+ }
+
+
+ @Override
+ public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstance){
+ super.onViewCreated(view, savedInstance);
+
+ RecyclerView rvHistory = view.findViewById(R.id.qrRvHistory);
+ rvHistory.setLayoutManager(new LinearLayoutManager(getContext()));
+ adapter = new QRHistoryAdapter();
+ rvHistory.setAdapter(adapter);
+ observeData();
+ }
+
+ private void observeData(){
+ viewModel.getAllQrHistory().observe(getViewLifecycleOwner(), list -> {
+ adapter.setItems(list);
+ });
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/utsmm/kbz/ui/qr_pay/QRHistoryViewModel.java b/app/src/main/java/com/utsmm/kbz/ui/qr_pay/QRHistoryViewModel.java
new file mode 100644
index 0000000..cfaf7d5
--- /dev/null
+++ b/app/src/main/java/com/utsmm/kbz/ui/qr_pay/QRHistoryViewModel.java
@@ -0,0 +1,29 @@
+package com.utsmm.kbz.ui.qr_pay;
+
+import androidx.lifecycle.LiveData;
+import androidx.lifecycle.ViewModel;
+
+import com.utsmyanmar.baselib.repo.Repository;
+import com.utsmyanmar.paylibs.model.PayDetail;
+
+import java.util.List;
+
+import javax.inject.Inject;
+
+import dagger.hilt.android.lifecycle.HiltViewModel;
+
+@HiltViewModel
+public class QRHistoryViewModel extends ViewModel {
+ private final Repository repository;
+ private final LiveData> history;
+
+ @Inject
+ public QRHistoryViewModel(Repository repository){
+ this.repository = repository;
+ this.history = repository.getAllQRHistory();
+ }
+
+ public LiveData> getAllQrHistory(){
+ return history;
+ }
+}
diff --git a/app/src/main/java/com/utsmm/kbz/ui/qr_pay/QRPayFragment.java b/app/src/main/java/com/utsmm/kbz/ui/qr_pay/QRPayFragment.java
index 64908eb..c2ba79d 100644
--- a/app/src/main/java/com/utsmm/kbz/ui/qr_pay/QRPayFragment.java
+++ b/app/src/main/java/com/utsmm/kbz/ui/qr_pay/QRPayFragment.java
@@ -71,7 +71,7 @@ public class QRPayFragment extends DataBindingFragment {
break;
case "History":
-
+ onClickHistory();
break;
}
});
@@ -384,4 +384,8 @@ public class QRPayFragment extends DataBindingFragment {
NavHostFragment.findNavController(this)
.navigate(R.id.action_qrFragment_to_inputAmountFragment);
}
+
+ private void onClickHistory(){
+ NavHostFragment.findNavController(this).navigate(R.id.action_qrFragment_to_qrHistory);
+ }
}
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_qr_history.xml b/app/src/main/res/layout/fragment_qr_history.xml
new file mode 100644
index 0000000..348b852
--- /dev/null
+++ b/app/src/main/res/layout/fragment_qr_history.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_qr_history.xml b/app/src/main/res/layout/item_qr_history.xml
new file mode 100644
index 0000000..8b013b4
--- /dev/null
+++ b/app/src/main/res/layout/item_qr_history.xml
@@ -0,0 +1,165 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/navigation/mobile_navigation.xml b/app/src/main/res/navigation/mobile_navigation.xml
index d9e88da..806b849 100644
--- a/app/src/main/res/navigation/mobile_navigation.xml
+++ b/app/src/main/res/navigation/mobile_navigation.xml
@@ -1082,5 +1082,15 @@
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 723e7cf..9d4e84e 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -442,7 +442,7 @@
Disconnect
Trying reversal last time!
Transaction Voided
-
+
Void Failed 914-ORIGINAL TRANSACTION NOT FOUND
QR Generation Failed!
Auth Failed!
@@ -593,5 +593,7 @@
- PhaYaSa
- YaTaNa
+
+ Hello blank fragment
\ No newline at end of file
diff --git a/baselib/src/main/java/com/utsmyanmar/baselib/db/dao/PayDetailDao.java b/baselib/src/main/java/com/utsmyanmar/baselib/db/dao/PayDetailDao.java
index e0b741b..c84e770 100644
--- a/baselib/src/main/java/com/utsmyanmar/baselib/db/dao/PayDetailDao.java
+++ b/baselib/src/main/java/com/utsmyanmar/baselib/db/dao/PayDetailDao.java
@@ -149,4 +149,7 @@ public interface PayDetailDao {
@Query("SELECT * FROM paydetail ORDER BY PID DESC")
LiveData> getAllTrans();
+
+ @Query("SELECT * FROM paydetail WHERE transactionType = 20 ORDER BY PID DESC")
+ LiveData> getAllQRHistory();
}
diff --git a/baselib/src/main/java/com/utsmyanmar/baselib/repo/Repository.java b/baselib/src/main/java/com/utsmyanmar/baselib/repo/Repository.java
index 16a1d7e..a0af143 100644
--- a/baselib/src/main/java/com/utsmyanmar/baselib/repo/Repository.java
+++ b/baselib/src/main/java/com/utsmyanmar/baselib/repo/Repository.java
@@ -226,4 +226,6 @@ public class Repository {
}
public LiveData> getAllTrans() { return payDetailDao.getAllTrans(); }
+
+ public LiveData> getAllQRHistory(){ return payDetailDao.getAllQRHistory();}
}