From f9f330d7eedc369fe95eb551027f5e48082cf6dd Mon Sep 17 00:00:00 2001 From: Kakabay <2kakabayashyrberdyew@gmail.com> Date: Tue, 30 Apr 2024 19:50:06 +0500 Subject: [PATCH] checking added --- .../ImmediateCreditsStages/AcceptStage.js | 266 +++++++++++------- .../ImmediateCreditsStages/PaymentDetails.js | 232 ++++++++------- .../ImmediateCreditsStages/PhoneAccept.js | 34 ++- .../immediateCredits/ImmediateCreditModal.js | 3 + 4 files changed, 311 insertions(+), 224 deletions(-) diff --git a/src/components/ImmediateCreditsStages/AcceptStage.js b/src/components/ImmediateCreditsStages/AcceptStage.js index ecd1225..0101475 100644 --- a/src/components/ImmediateCreditsStages/AcceptStage.js +++ b/src/components/ImmediateCreditsStages/AcceptStage.js @@ -1,13 +1,13 @@ // IMPORT MODULES -import React, { useState, useContext } from 'react'; -import { LanguageContext } from '../../backend/LanguageContext'; -import { UserContext } from '../../backend/UserContext'; -import { useForm } from 'react-hook-form'; -import { z } from 'zod'; -import { zodResolver } from '@hookform/resolvers/zod'; +import React, { useState, useContext } from "react"; +import { LanguageContext } from "../../backend/LanguageContext"; +import { UserContext } from "../../backend/UserContext"; +import { useForm } from "react-hook-form"; +import { z } from "zod"; +import { zodResolver } from "@hookform/resolvers/zod"; // IMPORT IMAGES -import next from '../../icons/next.svg'; -import next_reverse from '../../icons/next-reverse.svg'; +import next from "../../icons/next.svg"; +import next_reverse from "../../icons/next-reverse.svg"; // import arrow from "../../icons/arrow.svg"; const schema = z.object({ @@ -34,7 +34,7 @@ const AcceptStage = ({ recipientWorkPosition, }) => { const { locale } = useContext(LanguageContext); - const userToken = localStorage.getItem('userToken'); + const userToken = localStorage.getItem("userToken"); const { user } = useContext(UserContext); const handleCardDetails = (e) => { setCardDetails(e.target.value); @@ -42,7 +42,7 @@ const AcceptStage = ({ const [isLoading, setIsLoading] = useState(false); const [error, setError] = useState(false); - const [errorMessage, setErrorMesage] = useState(''); + const [errorMessage, setErrorMesage] = useState(""); const { register, @@ -51,8 +51,8 @@ const AcceptStage = ({ } = useForm({ resolver: zodResolver(schema), defaultValues: { - amount: recepientAmount ? recepientAmount : 'Loading', - duration: creditDuration ? creditDuration : 'loading', + amount: recepientAmount ? recepientAmount : "Loading", + duration: creditDuration ? creditDuration : "loading", }, }); @@ -60,12 +60,12 @@ const AcceptStage = ({ setIsLoading(true); try { const response = await fetch( - 'https://shahsyotag.halkbank.gov.tm/onlineloancre-services/api/loancre/check', + "https://shahsyotag.halkbank.gov.tm/onlineloancre-services/api/loancre/check", { - method: 'POST', + method: "POST", headers: { - Accept: 'application/json, text/plain', - 'Content-Type': 'application/json;charset=UTF-8', + Accept: "application/json, text/plain", + "Content-Type": "application/json;charset=UTF-8", }, body: JSON.stringify({ clientRecipient: { @@ -76,7 +76,7 @@ const AcceptStage = ({ surname: borrowerData.surname, lastname: borrowerData.lastname, availableAmount: borrowerData.availableAmount, - clientType: 'recipient', + clientType: "recipient", signRecipient: borrowerData.signRecipient, expDate: borrowerData.expDate, }, @@ -89,7 +89,7 @@ const AcceptStage = ({ surname: guaranterData.surname, lastname: guaranterData.lastname, availableAmount: guaranterData.availableAmount, - clientType: 'guarantor', + clientType: "guarantor", signGuarantor: guaranterData.signGuarantor, expDate: guaranterData.expDate, } @@ -99,7 +99,7 @@ const AcceptStage = ({ mrtIsInsuarance: isGuranter ? 0 : 1, termInYears: creditDuration, }), - }, + } ); if (!response.ok) { @@ -126,9 +126,9 @@ const AcceptStage = ({ const response = await fetch( `https://shahsyotag.halkbank.gov.tm/onlineloancre-services/api/loancre`, { - method: 'POST', + method: "POST", headers: { - 'Content-Type': 'application/json', + "Content-Type": "application/json", }, body: JSON.stringify({ clientRecipient: { @@ -139,7 +139,7 @@ const AcceptStage = ({ surname: borrowerData.surname, lastname: borrowerData.lastname, availableAmount: borrowerData.availableAmount, - clientType: 'recipient', + clientType: "recipient", signRecipient: borrowerData.signRecipient, expDate: borrowerData.expDate, }, @@ -152,7 +152,7 @@ const AcceptStage = ({ surname: guaranterData.surname, lastname: guaranterData.lastname, availableAmount: guaranterData.availableAmount, - clientType: 'guarantor', + clientType: "guarantor", signGuarantor: guaranterData.signGuarantor, expDate: guaranterData.expDate, } @@ -162,7 +162,7 @@ const AcceptStage = ({ mrtIsInsuarance: isGuranter ? 0 : 1, termInYears: creditDuration, }), - }, + } ); if (!response.ok) { @@ -172,8 +172,7 @@ const AcceptStage = ({ const responseJson = await response.json(); if (responseJson.errCode === 0) { - //sendData(responseJson); - setStage(11); + sendData(responseJson); } else { setErrMessage(responseJson.messageRu); setStage(10); @@ -184,15 +183,52 @@ const AcceptStage = ({ setError(true); } }; + + const sendData = async (requestBody) => { + try { + const headers = { + Accept: "application/json", + "Content-Type": "application/json", + Authorization: `Bearer ${userToken}`, + }; + const response = await fetch( + "https://shahsyotag.halkbank.gov.tm/app/api/quick_loans", + { + method: "POST", + headers: headers, + body: JSON.stringify({ + sign: requestBody.sign, + where_works: recipientWorkPlace, + position: recipientWorkPosition, + mobile_phone: user.mobile_phone, + name: borrowerData.name, + surname: borrowerData.surname, + lastname: borrowerData.lastname, + }), + } + ); + + const jsonedResponse = await response.json(); + + setIsLoading(false); + cardDetails ? setStage(11) : setStage(16); + } catch (error) { + console.error(error.toString()); + setError(true); + } + }; const sendCode = async () => { try { - const response = await fetch('https://shahsyotag.halkbank.gov.tm/sendOTP', { - method: 'POST', - headers: { 'Content-Type': 'aplication/json' }, - body: JSON.stringify({ - phone_number: user.mobile_phone, - }), - }); + const response = await fetch( + "https://shahsyotag.halkbank.gov.tm/sendOTP", + { + method: "POST", + headers: { "Content-Type": "aplication/json" }, + body: JSON.stringify({ + phone_number: user.mobile_phone, + }), + } + ); if (!response.ok) { setError(true); @@ -219,28 +255,32 @@ const AcceptStage = ({

{errorMessage} - {locale === 'TKM' - ? ' Bir zat ýalňyş ...' - : locale === 'РУС' - ? ' Ошибка...' - : locale === 'ENG' - ? 'Error...' - : ' Bir zat ýalňyş ...'} + {locale === "TKM" + ? " Bir zat ýalňyş ..." + : locale === "РУС" + ? " Ошибка..." + : locale === "ENG" + ? "Error..." + : " Bir zat ýalňyş ..."}


- @@ -252,13 +292,13 @@ const AcceptStage = ({ return (

- {locale === 'TKM' - ? 'Garaşmagyňyzy haýyş edýäris ...' - : locale === 'РУС' - ? 'Пожалуйста, подождите...' - : locale === 'ENG' - ? 'Please wait...' - : 'Garaşmagyňyzy haýyş edýäris ...'} + {locale === "TKM" + ? "Garaşmagyňyzy haýyş edýäris ..." + : locale === "РУС" + ? "Пожалуйста, подождите..." + : locale === "ENG" + ? "Please wait..." + : "Garaşmagyňyzy haýyş edýäris ..."}

); @@ -268,50 +308,55 @@ const AcceptStage = ({

- {locale === 'TKM' - ? 'Karzyň maglumatlaryny tassyklaň' - : locale === 'РУС' - ? 'Подтвердите данные кредита' - : locale === 'ENG' - ? 'Confirm the loan details' - : 'Karzyň maglumatlaryny tassyklaň'} + {locale === "TKM" + ? "Karzyň maglumatlaryny tassyklaň" + : locale === "РУС" + ? "Подтвердите данные кредита" + : locale === "ENG" + ? "Confirm the loan details" + : "Karzyň maglumatlaryny tassyklaň"}

- + {errors.amount && {errors.amount.message}}
- + {errors.duration && {errors.duration.message}}
setStage(12)}> - {locale === 'TKM' - ? 'Kartyňyz ýok bolsa, täze karty üçin ýüz tutuň' - : locale === 'РУС' - ? 'Оформите новую карту, если она у вас отсувствует' - : locale === 'ENG' - ? 'Apply for a new card if you do not have one' - : 'Kartyňyz ýok bolsa, täze karty üçin ýüz tutuň'} + {locale === "TKM" + ? "Kartyňyz ýok bolsa, täze karty üçin ýüz tutuň" + : locale === "РУС" + ? "Оформите новую карту, если она у вас отсувствует" + : locale === "ENG" + ? "Apply for a new card if you do not have one" + : "Kartyňyz ýok bolsa, täze karty üçin ýüz tutuň"} {/* {errors.code && {errors.code.message}} */}
- @@ -355,16 +404,17 @@ const AcceptStage = ({ disabled={cardDetails.length !== 23 && !isLoading ? true : false} onClick={() => { onSubmit(); - }}> + }} + >

- {locale === 'TKM' - ? 'Dowam et' - : locale === 'РУС' - ? 'Подтвердить ' - : locale === 'ENG' - ? 'Proceed' - : 'Dowam et'} + {locale === "TKM" + ? "Dowam et" + : locale === "РУС" + ? "Подтвердить " + : locale === "ENG" + ? "Proceed" + : "Dowam et"}

logout diff --git a/src/components/ImmediateCreditsStages/PaymentDetails.js b/src/components/ImmediateCreditsStages/PaymentDetails.js index d5bcf37..181779f 100644 --- a/src/components/ImmediateCreditsStages/PaymentDetails.js +++ b/src/components/ImmediateCreditsStages/PaymentDetails.js @@ -1,12 +1,12 @@ // IMPORT MODULES -import React, { useState, useContext, useEffect } from 'react'; -import { LanguageContext } from '../../backend/LanguageContext'; -import { useForm } from 'react-hook-form'; -import { z } from 'zod'; -import { zodResolver } from '@hookform/resolvers/zod'; +import React, { useState, useContext, useEffect } from "react"; +import { LanguageContext } from "../../backend/LanguageContext"; +import { useForm } from "react-hook-form"; +import { z } from "zod"; +import { zodResolver } from "@hookform/resolvers/zod"; // IMPORT IMAGES -import next from '../../icons/next.svg'; -import next_reverse from '../../icons/next-reverse.svg'; +import next from "../../icons/next.svg"; +import next_reverse from "../../icons/next-reverse.svg"; // import arrow from "../../icons/arrow.svg"; const schema = z.object({ @@ -24,13 +24,15 @@ const PaymentDetails = ({ }) => { const { locale } = useContext(LanguageContext); - const [timeLeft, setTimeLeft] = useState(paymentDetails['remaining-time']); + const [timeLeft, setTimeLeft] = useState(paymentDetails["remaining-time"]); - const [paymentName, setPaymentName] = useState(''); - const [paymentCard, setPaymentCard] = useState(''); - const [paymentCv, setPaymentCv] = useState(''); - const [paymentCardDurationYear, setPaymentCardDurationYear] = useState(''); - const [paymentCardDurationMonth, setPaymentCardDurationMonth] = useState(''); + const [isLoading, setIsLoading] = useState(false); + + const [paymentName, setPaymentName] = useState(""); + const [paymentCard, setPaymentCard] = useState(""); + const [paymentCv, setPaymentCv] = useState(""); + const [paymentCardDurationYear, setPaymentCardDurationYear] = useState(""); + const [paymentCardDurationMonth, setPaymentCardDurationMonth] = useState(""); const handlePaymentCard = (e) => { setPaymentCard(e.target.value); @@ -59,28 +61,34 @@ const PaymentDetails = ({ }, [timeLeft]); const sendPaymentRequest = async () => { + setIsLoading(true); try { const headers = { - 'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8', + "Content-Type": "application/x-www-form-urlencoded;charset=UTF-8", }; const formData = new URLSearchParams(); - formData.append('app', 'sanlykarz'); - formData.append('id', borrowerData.idNo); - formData.append('md-order', paymentDetails['md-order']); - formData.append('card-number', paymentCard.toString()); + formData.append("app", "sanlykarz"); + formData.append("id", borrowerData.idNo); + formData.append("md-order", paymentDetails["md-order"]); + formData.append("card-number", paymentCard.toString()); formData.append( - 'card-expiry', - '20' + paymentCardDurationYear.toString() + paymentCardDurationMonth.toString(), + "card-expiry", + "20" + + paymentCardDurationYear.toString() + + paymentCardDurationMonth.toString() ); - formData.append('name-on-card', paymentName); - formData.append('card-cvc', paymentCv.toString()); + formData.append("name-on-card", paymentName); + formData.append("card-cvc", paymentCv.toString()); - const response = await fetch('https://shahsyotag.halkbank.gov.tm/api/v1/submit-card', { - method: 'POST', - headers: headers, - body: formData.toString(), - }); + const response = await fetch( + "https://shahsyotag.halkbank.gov.tm/api/v1/submit-card", + { + method: "POST", + headers: headers, + body: formData.toString(), + } + ); if (!response.ok) { throw new Error(`HTTP error! Status: ${response.status}`); @@ -88,9 +96,10 @@ const PaymentDetails = ({ const jsonedResponse = await response.json(); - if (jsonedResponse.status === 'ok') { + if (jsonedResponse.status === "ok") { setSumbitCardDetails(jsonedResponse); setInvalidData(false); + setIsLoading(false); setStage(14); } else { setStage(12); @@ -121,50 +130,66 @@ const PaymentDetails = ({ setStage(12); } + if (isLoading) { + return ( +
+

+ {locale === "TKM" + ? "Garaşmagyňyzy haýyş edýäris ..." + : locale === "РУС" + ? "Пожалуйста, подождите..." + : locale === "ENG" + ? "Please wait..." + : "Garaşmagyňyzy haýyş edýäris ..."} +

+
+ ); + } + return (

- {locale === 'TKM' - ? 'Töleg üçin kartyň maglumatlaryny giriziň' - : locale === 'РУС' - ? 'Введите данные карты для оплаты' - : locale === 'ENG' - ? 'Enter card details for payment' - : 'Töleg üçin kartyň maglumatlaryny giriziň'} + {locale === "TKM" + ? "Töleg üçin kartyň maglumatlaryny giriziň" + : locale === "РУС" + ? "Введите данные карты для оплаты" + : locale === "ENG" + ? "Enter card details for payment" + : "Töleg üçin kartyň maglumatlaryny giriziň"}

- {locale === 'TKM' - ? 'Tölemeli mukdar:' - : locale === 'РУС' - ? 'Сумма к оплате:' - : locale === 'ENG' - ? 'Amount to pay:' - : 'Tölemeli mukdar:'} - {paymentDetails['amount-info']} + {locale === "TKM" + ? "Tölemeli mukdar:" + : locale === "РУС" + ? "Сумма к оплате:" + : locale === "ENG" + ? "Amount to pay:" + : "Tölemeli mukdar:"} + {paymentDetails["amount-info"]}

- {locale === 'TKM' - ? 'Wagt galdy:' - : locale === 'РУС' - ? 'Оставшееся время:' - : locale === 'ENG' - ? 'Time left:' - : 'Wagt galdy:'} + {locale === "TKM" + ? "Wagt galdy:" + : locale === "РУС" + ? "Оставшееся время:" + : locale === "ENG" + ? "Time left:" + : "Wagt galdy:"} {Math.floor((timeLeft % 3600) / 60)}:{timeLeft % 60}

{/* {errors.code && {errors.code.message}} */}
- {paymentDetails['is-cvc-required'] && ( + {paymentDetails["is-cvc-required"] && (
- @@ -290,16 +319,17 @@ const PaymentDetails = ({ } type="submit" className="sign-btn cu-btn" - onClick={() => onSubmit()}> + onClick={() => onSubmit()} + >

- {locale === 'TKM' - ? 'Dowam et' - : locale === 'РУС' - ? 'Подтвердить ' - : locale === 'ENG' - ? 'Proceed' - : 'Dowam et'} + {locale === "TKM" + ? "Dowam et" + : locale === "РУС" + ? "Подтвердить " + : locale === "ENG" + ? "Proceed" + : "Dowam et"}

logout diff --git a/src/components/ImmediateCreditsStages/PhoneAccept.js b/src/components/ImmediateCreditsStages/PhoneAccept.js index 18f0a4f..e1b32e9 100644 --- a/src/components/ImmediateCreditsStages/PhoneAccept.js +++ b/src/components/ImmediateCreditsStages/PhoneAccept.js @@ -26,10 +26,12 @@ const PhoneAccept = ({ recepientAmount, cardDetails, creditDuration, - setAcceptedMessage, recipientWorkPlace, recipientWorkPosition, availableAmount, + setAcceptedMessage, + setAcceptedMessageEn, + setAcceptedMessageTkm, }) => { const { locale } = useContext(LanguageContext); const { user } = useContext(UserContext); @@ -59,6 +61,7 @@ const PhoneAccept = ({ // ///////////////////Card registration const confirmPayment = async () => { + setIsLoading(true); try { const headers = { "Content-Type": "application/x-www-form-urlencoded;charset=UTF-8", @@ -180,7 +183,7 @@ const PhoneAccept = ({ if (jsonedResponse.errCode === 0) { // sendCode(); - setStage(15); + loanCreate(); } else { setStage(10); } @@ -292,6 +295,9 @@ const PhoneAccept = ({ if (responseJson.errCode === 0) { sendData(responseJson); + setAcceptedMessage(responseJson.messageRu); + setAcceptedMessageEn(responseJson.messageEn); + setAcceptedMessageTkm(responseJson.message); } else { setErrMessage(responseJson.messageRu); setStage(10); @@ -328,13 +334,9 @@ const PhoneAccept = ({ ); const jsonedResponse = await response.json(); - if (!cardDetails) { - } - setAcceptedMessage(jsonedResponse.message); setIsLoading(false); - - setStage(11); + cardDetails ? setStage(11) : setStage(16); } catch (error) { console.error(error.toString()); setError(true); @@ -493,14 +495,16 @@ const PhoneAccept = ({ type="text" id="code" /> - + {cardDetails && ( + + )} {messageSend &&

Time left: {timeLeft} seconds

} {/* {errors.code && {errors.code.message}} */}
diff --git a/src/components/immediateCredits/ImmediateCreditModal.js b/src/components/immediateCredits/ImmediateCreditModal.js index 6b59d3a..f99a0cd 100644 --- a/src/components/immediateCredits/ImmediateCreditModal.js +++ b/src/components/immediateCredits/ImmediateCreditModal.js @@ -574,6 +574,9 @@ const ImmediateCreditModal = ({ submitCardDetails={submitCardDetails} paymentLink={paymentLink} creditDuration={creditDuration} + setAcceptedMessage={setAcceptedMessage} + setAcceptedMessageEn={setAcceptedMessageEn} + setAcceptedMessageTkm={setAcceptedMessageTkm} recepientAmount={recepientAmount} /> ) : stage === 15 ? (