added new fields to quick_loans

This commit is contained in:
Kakabay 2024-04-05 13:46:03 +05:00
parent f27f9bb42c
commit dbab970806
4 changed files with 154 additions and 133 deletions

View File

@ -27,7 +27,15 @@ import { UserContext } from '../../backend/UserContext';
// // clientType: z.string(),
// });
const BorrowerInfo = ({ setStage, isGuranter, borrowerData }) => {
const BorrowerInfo = ({
setStage,
isGuranter,
borrowerData,
setRecipientWorkPlace,
setRecipientWorkPosition,
recipientWorkPlace,
recipientWorkPosition,
}) => {
const { locale } = useContext(LanguageContext);
const { user } = useContext(UserContext);
@ -50,6 +58,13 @@ const BorrowerInfo = ({ setStage, isGuranter, borrowerData }) => {
},
});
const handleWorkPlace = (e) => {
setRecipientWorkPlace(e.target.value);
};
const handleWorkPosition = (e) => {
setRecipientWorkPosition(e.target.value);
};
const onSubmit = (data) => {
// console.log(data);
};
@ -209,7 +224,12 @@ const BorrowerInfo = ({ setStage, isGuranter, borrowerData }) => {
? 'Sign up'
: 'Hasaba almak'}
</label>
<input type="text" id="workPlace" {...register('workPlace')} />
<input
type="text"
id="workPlace"
onChange={handleWorkPlace}
value={recipientWorkPlace}
/>
</div>
<div className="input-block">
<label htmlFor="workPosition">
@ -221,7 +241,12 @@ const BorrowerInfo = ({ setStage, isGuranter, borrowerData }) => {
? 'Sign up'
: 'Hasaba almak'}
</label>
<input type="text" id="workPosition" {...register('workPosition')} />
<input
type="text"
id="workPosition"
onChange={handleWorkPosition}
value={recipientWorkPosition}
/>
</div>
</div>

View File

@ -1,13 +1,13 @@
// IMPORT MODULES
import React, { useState, useContext } 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 } 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 { UserContext } from "../../backend/UserContext";
import next from '../../icons/next.svg';
import next_reverse from '../../icons/next-reverse.svg';
import { UserContext } from '../../backend/UserContext';
// import arrow from "../../icons/arrow.svg";
const schema = z.object({
@ -27,10 +27,12 @@ const PhoneAccept = ({
cardDetails,
creditDuration,
setAcceptedMessage,
recipientWorkPlace,
recipientWorkPosition,
}) => {
const { locale } = useContext(LanguageContext);
const { user } = useContext(UserContext);
const userToken = localStorage.getItem("userToken");
const userToken = localStorage.getItem('userToken');
const [isLoading, setIsLoading] = useState(false);
const [error, setError] = useState(false);
@ -38,7 +40,7 @@ const PhoneAccept = ({
const [invalidData, setInvalidData] = useState(false);
const [tryAgain, setTryAgain] = useState(false);
const [codeValue, setPhoneValue] = useState("");
const [codeValue, setPhoneValue] = useState('');
const [errMesage, setErrMessage] = useState();
@ -50,29 +52,28 @@ const PhoneAccept = ({
resolver: zodResolver(schema),
});
// ///////////////////Card registration
const confirmPayment = async () => {
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("acs-req-id", submitCardDetails["acs-request-id"]);
formData.append("acs-session-url", submitCardDetails["acs-session-url"]);
formData.append("otp", codeValue);
formData.append("term-url", submitCardDetails["terminate-url"]);
formData.append('app', 'sanlykarz');
formData.append('id', borrowerData.idNo);
formData.append('md-order', paymentDetails['md-order']);
formData.append('acs-req-id', submitCardDetails['acs-request-id']);
formData.append('acs-session-url', submitCardDetails['acs-session-url']);
formData.append('otp', codeValue);
formData.append('term-url', submitCardDetails['terminate-url']);
const response = await fetch(
"https://shahsyotag.halkbank.gov.tm/api/v1/confirm-payment",
{
method: "POST",
headers: headers,
body: formData.toString(),
}
);
const response = await fetch('https://shahsyotag.halkbank.gov.tm/api/v1/confirm-payment', {
method: 'POST',
headers: headers,
body: formData.toString(),
});
const jsonedResponse = await response.json();
@ -80,16 +81,13 @@ const PhoneAccept = ({
throw new Error(`HTTP error! Status: ${response.status}`);
}
if (
jsonedResponse.status === "ok" &&
jsonedResponse["final-url"].includes("status=1")
) {
console.log(jsonedResponse["final-url"]);
if (jsonedResponse.status === 'ok' && jsonedResponse['final-url'].includes('status=1')) {
console.log(jsonedResponse['final-url']);
setInvalidData(false);
checkPayment();
} else if (
jsonedResponse.status === "wrong-otp" ||
!jsonedResponse["final-url"].includes("status=1")
jsonedResponse.status === 'wrong-otp' ||
!jsonedResponse['final-url'].includes('status=1')
) {
setTryAgain(true);
} else {
@ -101,7 +99,7 @@ const PhoneAccept = ({
const checkPayment = async () => {
try {
const response = await fetch(
`https://shahsyotag.halkbank.gov.tm/app/api/check-payment-credit-card?paymentId=${paymentLink.id}&orderId=${paymentDetails["md-order"]}&status=1`
`https://shahsyotag.halkbank.gov.tm/app/api/check-payment-credit-card?paymentId=${paymentLink.id}&orderId=${paymentDetails['md-order']}&status=1`,
);
if (!response.ok) {
@ -110,8 +108,8 @@ const PhoneAccept = ({
const jsonedResponse = await response.json();
if (jsonedResponse.status.ErrorCode === "0") {
console.log("success");
if (jsonedResponse.status.ErrorCode === '0') {
console.log('success');
sendCode();
}
@ -121,19 +119,16 @@ const PhoneAccept = ({
};
const sendCode = async () => {
console.log("startred");
console.log('startred');
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) {
throw new Error(`HTTP error! Status: ${response.status}`);
@ -145,25 +140,24 @@ const PhoneAccept = ({
}
};
// ///////////////////Loan creating
const confirmCode = async () => {
try {
setIsLoading(true);
const response = await fetch(
"https://shahsyotag.halkbank.gov.tm/validateOTP",
{
headers: { "Content-Type": "aplication/json" },
method: "POST",
const response = await fetch('https://shahsyotag.halkbank.gov.tm/validateOTP', {
headers: { 'Content-Type': 'aplication/json' },
method: 'POST',
body: JSON.stringify({
phone_number: user.mobile_phone,
otp: codeValue,
}),
}
);
body: JSON.stringify({
phone_number: user.mobile_phone,
otp: codeValue,
}),
});
const jsonedResponse = await response.json();
if (jsonedResponse === "OTP validated successfully") {
if (jsonedResponse === 'OTP validated successfully') {
fetchData();
} else {
setErrMessage(true);
@ -176,9 +170,9 @@ const PhoneAccept = ({
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: {
@ -188,7 +182,7 @@ const PhoneAccept = ({
name: borrowerData.name,
surname: borrowerData.surname,
availableAmount: borrowerData.availableAmount,
clientType: "recipient",
clientType: 'recipient',
signRecipient: borrowerData.signRecipient,
},
clientGuarantor: isGuranter
@ -199,7 +193,7 @@ const PhoneAccept = ({
name: guaranterData.name,
surname: guaranterData.surname,
availableAmount: guaranterData.availableAmount,
clientType: "guarantor",
clientType: 'guarantor',
signGuarantor: guaranterData.signGuarantor,
}
: null,
@ -208,7 +202,7 @@ const PhoneAccept = ({
mrtIsInsuarance: isGuranter ? 0 : 1,
termInYears: creditDuration,
}),
}
},
);
if (!response.ok) {
@ -233,18 +227,22 @@ const PhoneAccept = ({
const sendData = async (requestBody) => {
try {
const headers = {
Accept: "application/json",
"Content-Type": "application/json",
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(requestBody.sign),
}
);
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,
}),
});
const jsonedResponse = await response.json();
if (!cardDetails) {
@ -280,23 +278,19 @@ const PhoneAccept = ({
return (
<section className="imm-cs-1">
<h1 className="cs-2-title">Error...</h1>
<button
type="button"
className="sign-btn reg-btn"
onClick={() => setStage(8)}
>
<button type="button" className="sign-btn reg-btn" onClick={() => setStage(8)}>
<div>
<div className="btn-img">
<img src={next_reverse} alt="logout" />
</div>
<h3>
{locale === "TKM"
? "Yza"
: locale === "РУС"
? "Назад"
: locale === "ENG"
? "Back"
: "Yza"}
{locale === 'TKM'
? 'Yza'
: locale === 'РУС'
? 'Назад'
: locale === 'ENG'
? 'Back'
: 'Yza'}
</h3>
</div>
</button>
@ -308,34 +302,27 @@ const PhoneAccept = ({
<section className="imm-cs-1">
<form onSubmit={handleSubmit(onSubmit)}>
<h2 className="cs-2-title">
{locale === "TKM"
? "Karzyň kalkulýatory"
: locale === "РУС"
? "Введите код с СМС оповещения, отправленный на номер "
: locale === "ENG"
? "Loan calculator"
: "Karzyň kalkulýatory"}
{cardDetails
? user.mobile_phone
: submitCardDetails["three-d-secure-number"]}
{locale === 'TKM'
? 'Karzyň kalkulýatory'
: locale === 'РУС'
? 'Введите код с СМС оповещения, отправленный на номер '
: locale === 'ENG'
? 'Loan calculator'
: 'Karzyň kalkulýatory'}
{cardDetails ? user.mobile_phone : submitCardDetails['three-d-secure-number']}
</h2>
<div className="imm-credit-form-wrapper">
<div className="input-block">
<label htmlFor="code">
{locale === "TKM"
? "At"
: locale === "РУС"
? "Код"
: locale === "ENG"
? "amount"
: "At"}
{locale === 'TKM'
? 'At'
: locale === 'РУС'
? 'Код'
: locale === 'ENG'
? 'amount'
: 'At'}
</label>
<input
value={codeValue}
onChange={handleCodeChange}
type="text"
id="code"
/>
<input value={codeValue} onChange={handleCodeChange} type="text" id="code" />
{/* <span className="another-option" onClick={codeResend}>
Отправить код снова
</span> */}
@ -356,20 +343,19 @@ const PhoneAccept = ({
<button
type="submit"
className="sign-btn reg-btn"
onClick={() => (cardDetails ? setStage(8) : setStage(13))}
>
onClick={() => (cardDetails ? setStage(8) : setStage(13))}>
<div>
<div className="btn-img">
<img src={next_reverse} alt="logout" />
</div>
<h3>
{locale === "TKM"
? "Yza"
: locale === "РУС"
? "Назад"
: locale === "ENG"
? "Back"
: "Yza"}
{locale === 'TKM'
? 'Yza'
: locale === 'РУС'
? 'Назад'
: locale === 'ENG'
? 'Back'
: 'Yza'}
</h3>
</div>
</button>
@ -385,17 +371,16 @@ const PhoneAccept = ({
}
type="submit"
onClick={onSubmit}
className="sign-btn cu-btn"
>
className="sign-btn cu-btn">
<div>
<h3>
{locale === "TKM"
? "Dowam et"
: locale === "РУС"
? "Подтвердить "
: locale === "ENG"
? "Proceed"
: "Dowam et"}
{locale === 'TKM'
? 'Dowam et'
: locale === 'РУС'
? 'Подтвердить '
: locale === 'ENG'
? 'Proceed'
: 'Dowam et'}
</h3>
<div className="btn-img">
<img src={next} alt="logout" />

View File

@ -29,6 +29,7 @@ import CardRegistration from '../ImmediateCreditsStages/CardRegistration';
import PaymentDetails from '../ImmediateCreditsStages/PaymentDetails';
import PaymentSuccess from '../ImmediateCreditsStages/PaymentSuccess';
import FinalStage from '../ImmediateCreditsStages/FinalStage';
import { UserContext } from '../../backend/UserContext';
const ImmediateCreditModal = ({
modalOpen,
@ -41,6 +42,8 @@ const ImmediateCreditModal = ({
setProgress,
}) => {
const { locale } = useContext(LanguageContext);
const { user } = useContext(UserContext);
const window = useRef();
const [isGuranter, setIsGuranter] = useState(false);
@ -67,7 +70,11 @@ const ImmediateCreditModal = ({
const [paymentDetails, setPaymentDetails] = useState();
const [submitCardDetails, setSumbitCardDetails] = useState();
console.log(stage);
const [recipientWorkPlace, setRecipientWorkPlace] = useState('');
const [recipientWorkPosition, setRecipientWorkPosition] = useState('');
console.log('WorkPlace', recipientWorkPlace);
console.log('WorkPosition', recipientWorkPosition);
return (
<section className={modalOpen ? 'modal credit-modal active' : 'modal credit-modal'}>
@ -295,6 +302,10 @@ const ImmediateCreditModal = ({
setStage={setStage}
isGuranter={isGuranter}
borrowerData={borrowerData}
setRecipientWorkPlace={setRecipientWorkPlace}
setRecipientWorkPosition={setRecipientWorkPosition}
recipientWorkPlace={recipientWorkPlace}
recipientWorkPosition={recipientWorkPosition}
/>
) : stage === 3 ? (
<NotAUser setStage={setStage} stage={stage} errMessage={errMessage} />
@ -353,6 +364,8 @@ const ImmediateCreditModal = ({
recepientAmount={recepientAmount}
creditDuration={creditDuration}
setAcceptedMessage={setAcceptedMessage}
recipientWorkPlace={recipientWorkPlace}
recipientWorkPosition={recipientWorkPosition}
/>
) : stage === 10 ? (
<NotAUser setStage={setStage} stage={stage} errMessage={errMessage} />

View File

@ -120,8 +120,6 @@ const ImmediateCredit = () => {
} catch (error) {}
};
console.log(user);
useEffect(() => {
fetchData();
fetchCardData();