From 01bba197149aa8579461baae92b52df5a38633af Mon Sep 17 00:00:00 2001 From: Nurmuhammet Allanov Date: Sat, 5 Jul 2025 11:15:11 +0500 Subject: [PATCH] add cards to loan order --- src/screens/Loan/CreateLoanOrderScreen.js | 47 ++++++++++++++++++++++- 1 file changed, 46 insertions(+), 1 deletion(-) diff --git a/src/screens/Loan/CreateLoanOrderScreen.js b/src/screens/Loan/CreateLoanOrderScreen.js index 143e7cb..c195a25 100644 --- a/src/screens/Loan/CreateLoanOrderScreen.js +++ b/src/screens/Loan/CreateLoanOrderScreen.js @@ -54,6 +54,35 @@ const CreateLoanOrderScreen = () => { const [workStartedAt, setWorkStartedAt] = useState(''); const [branchesByRegion, setBranchesByRegion] = useState({}); + // Card info + const [cardNumber, setCardNumber] = useState(''); + const [cardName, setCardName] = useState(''); + const [cardMonth, setCardMonth] = useState(''); + const [cardYear, setCardYear] = useState(''); + + const monthOptions = Array.from({ length: 12 }, (_, i) => { + const val = (i + 1).toString().padStart(2, '0'); + return { value: val, label: val }; + }); + + const yearOptions = Array.from({ length: 57 }, (_, i) => { + const year = 2024 + i; + return { value: year.toString(), label: year.toString() }; + }); + + const formatCardNumber = (text) => { + const digits = text.replace(/[^0-9]/g, '').slice(0, 16); + const parts = []; + for (let i = 0; i < digits.length; i += 4) { + parts.push(digits.substr(i, 4)); + } + return parts.join('-'); + }; + + const handleCardNumberChange = (text) => { + setCardNumber(formatCardNumber(text)); + }; + useEffect(() => { if (user) { if (user.passport_serie) setPassportSerie(user.passport_serie); @@ -93,11 +122,17 @@ const CreateLoanOrderScreen = () => { const branchOptions = region && branchesByRegion[region] ? branchesByRegion[region].map((b) => ({ label: b.name, value: b.id })) : []; const handleSubmit = async () => { - if (!loanType || !loanAmount || !region || !branchId || !customerName || !customerSurname || !passportSerie || !passportId || !bornAt || !phone || !education || !marriageStatus || !passportAddress || !realAddress) { + if (!loanType || !loanAmount || !region || !branchId || !customerName || !customerSurname || !passportSerie || !passportId || !bornAt || !phone || !education || !marriageStatus || !passportAddress || !realAddress || !cardNumber || !cardName || !cardMonth || !cardYear) { Alert.alert('Error', 'Fill all required fields'); return; } + const rawCardNumber = cardNumber.replace(/[^0-9]/g, ''); + if (rawCardNumber.length !== 16) { + Alert.alert('Error', 'Kart belgisi dogry dolduryň (16 sany rakam)'); + return; + } + const payload = { loan_type: parseInt(loanType), loan_amount: parseInt(loanAmount), @@ -127,6 +162,10 @@ const CreateLoanOrderScreen = () => { work_position: workPosition || null, work_salary: workSalary ? parseInt(workSalary) : null, work_started_at: workStartedAt || null, + card_number: rawCardNumber, + card_name: cardName, + card_month: cardMonth, + card_year: cardYear, }; setLoading(true); @@ -185,6 +224,12 @@ const CreateLoanOrderScreen = () => { + {/* Card info */} + + + + + {loading ? : Ýatda sakla}