update flow final
This commit is contained in:
@@ -9,19 +9,32 @@ export const usePaymentStore = defineStore('payment', {
|
||||
amount: '',
|
||||
expiry: '',
|
||||
},
|
||||
// Berikan default object instead of null
|
||||
qrData: {
|
||||
qrvalue: null,
|
||||
display_nobill: null,
|
||||
display_name: null,
|
||||
display_amount: null
|
||||
display_amount: null,
|
||||
status: null, // Tambahkan status untuk tracking
|
||||
ip: null, // Tambahkan IP untuk reference
|
||||
},
|
||||
}),
|
||||
|
||||
getters: {
|
||||
// Tambahkan getter untuk safe access
|
||||
hasQrData: (state) => state.qrData && state.qrData.qrvalue,
|
||||
safeQrValue: (state) => state.qrData?.qrvalue || 'https://www.google.com'
|
||||
safeQrValue: (state) => state.qrData?.qrvalue || 'https://www.google.com',
|
||||
|
||||
// Getter untuk cek apakah data siap untuk polling status
|
||||
isReadyForStatusCheck: (state) => {
|
||||
return state.qrData.display_nobill && state.qrData.display_name;
|
||||
},
|
||||
|
||||
// Getter untuk informasi debug
|
||||
debugInfo: (state) => ({
|
||||
step: state.currentStep,
|
||||
hasIdentifiers: !!(state.qrData.display_nobill && state.qrData.display_name),
|
||||
qrData: state.qrData,
|
||||
patientInfo: state.patientInfo,
|
||||
})
|
||||
},
|
||||
|
||||
actions: {
|
||||
@@ -31,22 +44,32 @@ export const usePaymentStore = defineStore('payment', {
|
||||
prevStep() {
|
||||
this.currentStep--;
|
||||
},
|
||||
|
||||
setStep(step) {
|
||||
console.log(`Setting step from ${this.currentStep} to ${step}`);
|
||||
this.currentStep = step;
|
||||
},
|
||||
|
||||
reset() {
|
||||
console.log('Resetting payment store');
|
||||
this.currentStep = 1;
|
||||
this.patientInfo = {
|
||||
name: '',
|
||||
amount: '',
|
||||
expiry: '',
|
||||
};
|
||||
// Reset ke default object, bukan null
|
||||
this.qrData = {
|
||||
qrvalue: null,
|
||||
display_nobill: null,
|
||||
display_name: null,
|
||||
display_amount: null
|
||||
display_amount: null,
|
||||
status: null,
|
||||
ip: null,
|
||||
};
|
||||
},
|
||||
|
||||
updatePayment(apiResponse) {
|
||||
console.log("=== UPDATE PAYMENT ===");
|
||||
console.log("API Response:", apiResponse);
|
||||
|
||||
// Validasi response
|
||||
@@ -58,27 +81,72 @@ export const usePaymentStore = defineStore('payment', {
|
||||
const apiData = apiResponse.data[0];
|
||||
console.log("API Data:", apiData);
|
||||
|
||||
// Update qrData dengan validasi
|
||||
// Simpan data lama untuk comparison
|
||||
const oldQrData = { ...this.qrData };
|
||||
|
||||
// Update qrData dengan semua properti dari API
|
||||
this.qrData = {
|
||||
qrvalue: apiData.qrvalue || null,
|
||||
display_nobill: apiData.display_nobill || null,
|
||||
display_name: apiData.display_name || null,
|
||||
display_amount: apiData.display_amount || null,
|
||||
...apiData // spread untuk properti lain yang mungkin ada
|
||||
qrvalue: apiData.qrvalue || apiData.qr_code || this.qrData.qrvalue,
|
||||
display_nobill: apiData.display_nobill || this.qrData.display_nobill,
|
||||
display_name: apiData.display_name || this.qrData.display_name,
|
||||
display_amount: apiData.display_amount || apiData.nominal || this.qrData.display_amount,
|
||||
status: apiData.status || this.qrData.status,
|
||||
ip: apiData.ip || this.qrData.ip,
|
||||
// Spread untuk properti lain yang mungkin ada
|
||||
...apiData
|
||||
};
|
||||
|
||||
// Update patientInfo
|
||||
this.patientInfo = {
|
||||
name: apiData.display_name || 'Unknown',
|
||||
amount: apiData.display_amount || '0',
|
||||
expiry: this.patientInfo.expiry, // keep existing value
|
||||
name: apiData.display_name || this.patientInfo.name || 'Unknown',
|
||||
amount: apiData.display_amount || apiData.nominal || this.patientInfo.amount || '0',
|
||||
expiry: this.patientInfo.expiry,
|
||||
};
|
||||
|
||||
// Log changes
|
||||
if (oldQrData.status !== this.qrData.status) {
|
||||
console.log(`Status changed: ${oldQrData.status} -> ${this.qrData.status}`);
|
||||
}
|
||||
|
||||
console.log("Updated qrData:", this.qrData);
|
||||
console.log("Updated patientInfo:", this.patientInfo);
|
||||
|
||||
// Ganti step
|
||||
this.currentStep = 2;
|
||||
console.log("===================");
|
||||
},
|
||||
|
||||
// Method untuk debug
|
||||
debugCurrentState() {
|
||||
console.log("=== PAYMENT STORE DEBUG ===");
|
||||
console.log("Current Step:", this.currentStep);
|
||||
console.log("Patient Info:", this.patientInfo);
|
||||
console.log("QR Data:", this.qrData);
|
||||
console.log("Has QR Data:", this.hasQrData);
|
||||
console.log("Ready for Status Check:", this.isReadyForStatusCheck);
|
||||
console.log("Safe QR Value:", this.safeQrValue);
|
||||
console.log("==========================");
|
||||
},
|
||||
|
||||
// Method untuk validasi data
|
||||
validateData() {
|
||||
const issues = [];
|
||||
|
||||
if (!this.qrData.display_nobill) {
|
||||
issues.push('display_nobill missing');
|
||||
}
|
||||
|
||||
if (!this.qrData.display_name) {
|
||||
issues.push('display_name missing');
|
||||
}
|
||||
|
||||
if (!this.qrData.qrvalue && !this.qrData.qr_code) {
|
||||
issues.push('QR code missing');
|
||||
}
|
||||
|
||||
if (issues.length > 0) {
|
||||
console.warn('Data validation issues:', issues);
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
},
|
||||
});
|
||||
@@ -1,37 +0,0 @@
|
||||
// src/stores/payment.js
|
||||
import { defineStore } from 'pinia';
|
||||
|
||||
export const usePaymentStore = defineStore('payment', {
|
||||
state: () => ({
|
||||
currentStep: 1,
|
||||
patientInfo: {
|
||||
name: '',
|
||||
amount: '',
|
||||
expiry: '',
|
||||
},
|
||||
paymentData: null, // Tambahkan state ini untuk menyimpan data dari backend
|
||||
}),
|
||||
actions: {
|
||||
nextStep() {
|
||||
this.currentStep++;
|
||||
},
|
||||
prevStep() {
|
||||
this.currentStep--;
|
||||
},
|
||||
reset() {
|
||||
this.currentStep = 1;
|
||||
this.patientInfo = {};
|
||||
this.paymentData = null; // Reset data pembayaran
|
||||
},
|
||||
// Tambahkan action baru untuk menerima data dari WebSocket
|
||||
updatePayment(data: { patientName: any; amount: any; expiryDate: any; } | null) {
|
||||
this.paymentData = data;
|
||||
this.patientInfo = {
|
||||
name: data.patientName,
|
||||
amount: data.amount,
|
||||
expiry: data.expiryDate,
|
||||
};
|
||||
this.currentStep = 2; // Pindah ke step 2 secara otomatis
|
||||
},
|
||||
},
|
||||
});
|
||||
Reference in New Issue
Block a user