trying to add api

This commit is contained in:
Kakabay 2024-03-23 20:50:22 +05:00
parent a3e1ee4d58
commit 82870804ff
1 changed files with 142 additions and 76 deletions

View File

@ -1,14 +1,14 @@
// IMPORT MODULES
import React, { useState, useRef, 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, useRef, 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 arrow from '../../icons/arrow-gray.svg';
import next from "../../icons/next.svg";
import arrow from "../../icons/arrow-gray.svg";
import Select from '../global/Select';
import Select from "../global/Select";
// import arrow from "../../icons/arrow.svg";
const schema = z.object({
@ -18,19 +18,23 @@ const schema = z.object({
// clientType: z.string(),
});
const IDSerias = ['I-AS', 'I-AH', 'I-BN', 'I-LB', 'I-MR', 'I-DZ'];
const IDSerias = ["I-AS", "I-AH", "I-BN", "I-LB", "I-MR", "I-DZ"];
const BorrowerStage = ({ setStage, isGuranter, setIsGuranter, stage }) => {
const { locale } = useContext(LanguageContext);
const [idSerial, setIdSerial] = useState('I-AS');
const [isLoading, setIsLoading] = useState(false);
const [err, setErr] = useState(false);
const [isUser, setIsUser] = useState(false);
const [idSerial, setIdSerial] = useState("I-AS");
const isGuranterHandler = (value) => {
setIsGuranter(value);
};
const checkboxHandleChange = (e) => {
e.target.value === 'guaranter' ? setIsGuranter(true) : setIsGuranter(false);
e.target.value === "guaranter" ? setIsGuranter(true) : setIsGuranter(false);
};
const {
@ -41,72 +45,127 @@ const BorrowerStage = ({ setStage, isGuranter, setIsGuranter, stage }) => {
resolver: zodResolver(schema),
});
const onSubmit = (data) => {
setStage(2);
const fetchData = async (idSeria, idNo, accountNo, clientType) => {
try {
setIsLoading(true);
const response = await fetch(
`https://shahsyotag.halkbank.gov.tm/onlineloan-services/api/clientinfo`,
// `http://217.174.226.219:443/onlineloan-services/api/clientinfo`,
{
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({
idSeria: idSeria,
idNo: idNo,
accountNo: accountNo,
clientType: clientType ? "guaranter" : "recipient",
}),
}
);
if (!response.ok) {
throw new Error(`HTTP error! Status: ${response.status}`);
}
if (response.errCode !== 0) {
setIsUser(false);
}
setIsLoading(false);
} catch (error) {
console.error(error.toString());
// Handle errors as needed
setErr(true);
}
};
const onSubmit = (data) => {
fetchData(idSerial, data.passportNumber, data.bankAccount, isGuranter);
isUser ? setStage(2) : setStage(1);
};
if (isLoading) {
return (
<section className="imm-cs-1">
<h1>Loading</h1>
</section>
);
}
if (!isUser) {
return (
<section className="imm-cs-1">
<h1>Not a user</h1>
</section>
);
}
return (
<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'}
{locale === "TKM"
? "Karzyň kalkulýatory"
: locale === "РУС"
? "Заполните данные"
: locale === "ENG"
? "Loan calculator"
: "Karzyň kalkulýatory"}
</h2>
<div className="imm-credit-form-wrapper">
<Select
items={IDSerias}
customId={'card'}
blockName={'card-1-select'}
elName={'card-1-select-el'}
name={'passportSerial'}
customId={"card"}
blockName={"card-1-select"}
elName={"card-1-select-el"}
name={"passportSerial"}
eTarget={true}
register={register}
label={
locale === 'TKM'
? 'Kartyň görnüşi'
: locale === 'РУС'
? 'Серия паспорта'
: locale === 'ENG'
? 'Card type'
: 'Kartyň görnüşi'
locale === "TKM"
? "Kartyň görnüşi"
: locale === "РУС"
? "Серия паспорта"
: locale === "ENG"
? "Card type"
: "Kartyň görnüşi"
}
stateSetter={setIdSerial}
/>
<div className="input-block">
<label htmlFor="passport-number">
{locale === 'TKM'
? 'Hasaba almak'
: locale === 'РУС'
? 'Номер паспорта'
: locale === 'ENG'
? 'Sign up'
: 'Hasaba almak'}
{locale === "TKM"
? "Hasaba almak"
: locale === "РУС"
? "Номер паспорта"
: locale === "ENG"
? "Sign up"
: "Hasaba almak"}
</label>
<input
{...register('passportNumber', { valueAsNumber: true })}
{...register("passportNumber", { valueAsNumber: true })}
type="number"
id="passport-number"
/>
{errors.passportNumber && <span>{errors.passportNumber.message}</span>}
{errors.passportNumber && (
<span>{errors.passportNumber.message}</span>
)}
</div>
<div className="input-block">
<label htmlFor="bank-acc">
{locale === 'TKM'
? 'Hasaba almak'
: locale === 'РУС'
? 'Номер банковского аккаунта'
: locale === 'ENG'
? 'Sign up'
: 'Hasaba almak'}
{locale === "TKM"
? "Hasaba almak"
: locale === "РУС"
? "Номер банковского аккаунта"
: locale === "ENG"
? "Sign up"
: "Hasaba almak"}
</label>
<input
{...register('bankAccount', { valueAsNumber: true })}
{...register("bankAccount", { valueAsNumber: true })}
type="number"
id="bank-acc"
/>
@ -115,47 +174,53 @@ const BorrowerStage = ({ setStage, isGuranter, setIsGuranter, stage }) => {
</div>
<div className="imm-credit-checkbox-group">
<div className="imm-credit-checkbox-block" onClick={() => isGuranterHandler(false)}>
<div
className="imm-credit-checkbox-block"
onClick={() => isGuranterHandler(false)}
>
<input
type="radio"
id="borrower"
value={'Borrower'}
value={"Borrower"}
name="client-type"
checked={isGuranter ? false : true}
onChange={checkboxHandleChange}
{...register('clientType')}
{...register("clientType")}
className="radio-button"
/>
<label htmlFor="borrower">
{locale === 'TKM'
? 'Hasaba almak'
: locale === 'РУС'
? 'Гос. страх'
: locale === 'ENG'
? 'Borrower'
: 'Hasaba almak'}
{locale === "TKM"
? "Hasaba almak"
: locale === "РУС"
? "Гос. страх"
: locale === "ENG"
? "Borrower"
: "Hasaba almak"}
</label>
</div>
<div className="imm-credit-checkbox-block" onClick={() => isGuranterHandler(true)}>
<div
className="imm-credit-checkbox-block"
onClick={() => isGuranterHandler(true)}
>
<input
type="radio"
id="isGuranter"
value={'guaranter'}
value={"guaranter"}
name="client-type"
checked={isGuranter ? true : false}
onChange={checkboxHandleChange}
{...register('clientType')}
{...register("clientType")}
className="radio-button"
/>
<label htmlFor="isGuranter">
{locale === 'TKM'
? 'Hasaba almak'
: locale === 'РУС'
? 'Поручитель'
: locale === 'ENG'
? 'guaranter'
: 'Hasaba almak'}
{locale === "TKM"
? "Hasaba almak"
: locale === "РУС"
? "Поручитель"
: locale === "ENG"
? "guaranter"
: "Hasaba almak"}
</label>
</div>
</div>
@ -166,16 +231,17 @@ const BorrowerStage = ({ setStage, isGuranter, setIsGuranter, stage }) => {
className="sign-btn cd-btn"
onClick={() => {
// setData({ ...data, type: inputValid, type_localized: input });
}}>
}}
>
<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" />