Feature/update api

This commit is contained in:
2024-11-05 07:09:13 +00:00
committed by AmirHossein Mahmoodi
parent 56196f33c7
commit b64a1c93e9
83 changed files with 4066 additions and 3123 deletions

View File

@@ -1,46 +1,41 @@
import {
CenterLayout,
FullPageLayout,
NextLinkComposed,
useUser,
} from "@witel/webapp-builder";
import { CenterLayout, FullPageLayout, NextLinkComposed, useUser } from "@witel/webapp-builder";
import { Button, Typography } from "@mui/material";
import { useTranslations } from "next-intl";
const FirstComponent = () => {
const { user } = useUser();
const t = useTranslations();
return (
<FullPageLayout>
<CenterLayout spacing={2}>
{user.permissions.includes("can_request_navgan_loan") ? (
<>
<Typography>{t("Dashboard.go_to_add_request_loan")}</Typography>
<Button
component={NextLinkComposed}
to={{ pathname: "/dashboard/navgan/add-request-loan" }}
variant={"contained"}
size={"large"}
>
{t("LoanRequest.loan_request_page")}
</Button>
</>
) : (
<>
<Typography>{t("Dashboard.go_to_followUp-loan")}</Typography>
<Button
component={NextLinkComposed}
to={{ pathname: "/dashboard/navgan/followUp-loan" }}
variant={"contained"}
size={"large"}
>
{t("LoanFollowUp.loan_follow_up_page")}
</Button>
</>
)}
</CenterLayout>
</FullPageLayout>
);
const { user } = useUser();
const t = useTranslations();
return (
<FullPageLayout>
<CenterLayout spacing={2}>
{user.permissions.includes("can_request_navgan_loan") ? (
<>
<Typography>{t("Dashboard.go_to_add_request_loan")}</Typography>
<Button
component={NextLinkComposed}
to={{ pathname: "/dashboard/navgan/add-request-loan" }}
variant={"contained"}
size={"large"}
>
{t("LoanRequest.loan_request_page")}
</Button>
</>
) : (
<>
<Typography>{t("Dashboard.go_to_followUp-loan")}</Typography>
<Button
component={NextLinkComposed}
to={{ pathname: "/dashboard/navgan/followUp-loan" }}
variant={"contained"}
size={"large"}
>
{t("LoanFollowUp.loan_follow_up_page")}
</Button>
</>
)}
</CenterLayout>
</FullPageLayout>
);
};
export default FirstComponent;
export default FirstComponent;

View File

@@ -1,64 +1,58 @@
import {
Button,
Grid,
Stack,
ToggleButton,
ToggleButtonGroup,
Typography
} from "@mui/material";
import {useTranslations} from "next-intl";
import {CenterLayout} from "@witel/webapp-builder";
import {useState} from "react";
import DoneIcon from '@mui/icons-material/Done';
import {NextLinkComposed} from "@witel/webapp-builder/dist/utils/linkRouting";
import { Button, Grid, Stack, ToggleButton, ToggleButtonGroup, Typography } from "@mui/material";
import { useTranslations } from "next-intl";
import { CenterLayout } from "@witel/webapp-builder";
import { useState } from "react";
import DoneIcon from "@mui/icons-material/Done";
import { NextLinkComposed } from "@witel/webapp-builder/dist/utils/linkRouting";
import SvgDone from "@/core/components/svgs/SvgDone";
import RealPersonForm from "@/components/dashboard/navgan/add-request-loan/forms/RealPersonForm";
import LegalPersonForm from "@/components/dashboard/navgan/add-request-loan/forms/LegalPersonForm";
const AddFormComponent = () => {
const t = useTranslations();
const [finishLoanRequest, setFinishLoanRequest] = useState(false)
const [personType, setPersonType] = useState("real")
const [finishLoanRequest, setFinishLoanRequest] = useState(false);
const [personType, setPersonType] = useState("real");
return (<>
{finishLoanRequest ? (<CenterLayout>
<SvgDone width={200} height={200}/>
<Stack direction={'row'} spacing={0.7} sx={{mb: 4}}>
<Typography variant={'h5'}
align={'center'}>{t("LoanRequest.finish_loan_request")}</Typography>
<DoneIcon color={'success'}/>
</Stack>
<Button variant={'contained'} component={NextLinkComposed}
to={'/dashboard/navgan/followUp-loan'}>
{t("LoanRequest.back_to_dashboard")}
</Button>
</CenterLayout>) : (
<>
<Stack sx={{width: "100%", my : 3}} justifyContent={'center'} alignItems={'center'}>
<ToggleButtonGroup
color="primary"
value={personType}
exclusive
onChange={(e, value) => {
if (value === null) return
setPersonType(value)
}}
>
<ToggleButton value="real">
{t("LoanRequest.real_person")}
</ToggleButton>
<ToggleButton value="legal">
{t("LoanRequest.legal_person")}
</ToggleButton>
</ToggleButtonGroup>
</Stack>
{
personType === "real" ? <RealPersonForm setFinishLoanRequest={setFinishLoanRequest}/> :
<LegalPersonForm setFinishLoanRequest={setFinishLoanRequest}/>
}
</>
)}
</>);
return (
<>
{finishLoanRequest ? (
<CenterLayout>
<SvgDone width={200} height={200} />
<Stack direction={"row"} spacing={0.7} sx={{ mb: 4 }}>
<Typography variant={"h5"} align={"center"}>
{t("LoanRequest.finish_loan_request")}
</Typography>
<DoneIcon color={"success"} />
</Stack>
<Button variant={"contained"} component={NextLinkComposed} to={"/dashboard/navgan/followUp-loan"}>
{t("LoanRequest.back_to_dashboard")}
</Button>
</CenterLayout>
) : (
<>
<Stack sx={{ width: "100%", my: 3 }} justifyContent={"center"} alignItems={"center"}>
<ToggleButtonGroup
color="primary"
value={personType}
exclusive
onChange={(e, value) => {
if (value === null) return;
setPersonType(value);
}}
>
<ToggleButton value="real">{t("LoanRequest.real_person")}</ToggleButton>
<ToggleButton value="legal">{t("LoanRequest.legal_person")}</ToggleButton>
</ToggleButtonGroup>
</Stack>
{personType === "real" ? (
<RealPersonForm setFinishLoanRequest={setFinishLoanRequest} />
) : (
<LegalPersonForm setFinishLoanRequest={setFinishLoanRequest} />
)}
</>
)}
</>
);
};
export default AddFormComponent;

View File

@@ -8,7 +8,7 @@ import {
ToggleButton,
ToggleButtonGroup,
} from "@mui/material";
import {useTranslations} from "next-intl";
import { useTranslations } from "next-intl";
import useCities from "@/lib/app/hooks/useCities";
import UseEducations from "@/lib/app/hooks/useEducations";
import useOccupations from "@/lib/app/hooks/useOccupations";
@@ -16,28 +16,28 @@ import * as React from "react";
import SelectBox from "@/core/components/SelectBox";
import useLimitedProvince from "@/lib/app/hooks/useLimitedProvince";
import PlateNumber from "@/core/components/PlateNumber";
import {useRouter} from "next/router";
import {useRequest, useUser} from "@witel/webapp-builder";
import { useRouter } from "next/router";
import { useRequest, useUser } from "@witel/webapp-builder";
import * as Yup from "yup";
import {SEND_LOAN_REQUEST_NAVGAN} from "@/core/data/apiRoutes";
import { SEND_LOAN_REQUEST_NAVGAN } from "@/core/data/apiRoutes";
import DataSaverOnIcon from "@mui/icons-material/DataSaverOn";
import {useFormik} from "formik";
import { useFormik } from "formik";
import useProjectTitle from "@/lib/app/hooks/useProjectTitle";
import useActivityType from "@/lib/app/hooks/useActivityType";
import MuiDatePicker from "@/core/components/MuiDatePicker";
import LegalPersonDatePicker from "@/core/components/LegalPersonDatePicker";
const LegalPersonForm = ({setFinishLoanRequest}) => {
const LegalPersonForm = ({ setFinishLoanRequest }) => {
const t = useTranslations();
const router = useRouter();
const requestServer = useRequest();
const {getUser, changeUser} = useUser();
const {cityTextField, cityList, setProvinceID, isLoadingCityList} = useCities();
const {provinceList, isLoadingProvinceList, errorProvinceList} = useLimitedProvince();
const {educationsList, isLoadingEducationsList, errorEducationsList} = UseEducations();
const {occupationsList, isLoadingOccupationsList, errorOccupationsList} = useOccupations();
const {activityType, isLoadingActivityType, errorActivityType} = useActivityType();
const {projectTitle, isLoadingProjectTitle, errorProjectTitle} = useProjectTitle();
const { getUser, changeUser } = useUser();
const { cityTextField, cityList, setProvinceID, isLoadingCityList } = useCities();
const { provinceList, isLoadingProvinceList, errorProvinceList } = useLimitedProvince();
const { educationsList, isLoadingEducationsList, errorEducationsList } = UseEducations();
const { occupationsList, isLoadingOccupationsList, errorOccupationsList } = useOccupations();
const { activityType, isLoadingActivityType, errorActivityType } = useActivityType();
const { projectTitle, isLoadingProjectTitle, errorProjectTitle } = useProjectTitle();
const initialValues = {
person_type: "legal",
@@ -118,35 +118,41 @@ const LegalPersonForm = ({setFinishLoanRequest}) => {
national_number: Yup.mixed().when("person_type", ([person_type], schema) => {
return person_type === "legal"
? schema
.test("is-number", `${t("LoanRequest.national_number_number")}`, (value) => !isNaN(value))
.test("positive", `${t("LoanRequest.national_number_positive")}`, (value) => value >= 0)
.test(
"max",
`${t("LoanRequest.national_number_max")}`,
(value) => value && value.toString().length === 11
)
.required(t("LoanRequest.error_message_national_number"))
.test("is-number", `${t("LoanRequest.national_number_number")}`, (value) => !isNaN(value))
.test("positive", `${t("LoanRequest.national_number_positive")}`, (value) => value >= 0)
.test(
"max",
`${t("LoanRequest.national_number_max")}`,
(value) => value && value.toString().length === 11
)
.required(t("LoanRequest.error_message_national_number"))
: schema;
}),
boss_national_serial_number: Yup.string()
.when("national_serial_number_or_tracking_code", ([national_serial_number_or_tracking_code], schema) => {
boss_national_serial_number: Yup.string().when(
"national_serial_number_or_tracking_code",
([national_serial_number_or_tracking_code], schema) => {
return national_serial_number_or_tracking_code === "national_serial_number"
? schema.test(
"max",
`${t("LoanRequest.boss_national_serial_number_max")}`,
(value) => value && value.toString().length === 10
).required(t("LoanRequest.error_message_boss_shenasname_serial"))
? schema
.test(
"max",
`${t("LoanRequest.boss_national_serial_number_max")}`,
(value) => value && value.toString().length === 10
)
.required(t("LoanRequest.error_message_boss_shenasname_serial"))
: schema;
}),
}
),
boss_national_card_tracking_code: Yup.string().when(
"national_serial_number_or_tracking_code",
([national_serial_number_or_tracking_code], schema) => {
return national_serial_number_or_tracking_code === "national_card_tracking_code"
? schema.test(
"max",
`${t("LoanRequest.national_boss_tracking_code_max")}`,
(value) => value && value.toString().length === 10
).required(t("LoanRequest.error_message_boss_national_card_tracking_code"))
? schema
.test(
"max",
`${t("LoanRequest.national_boss_tracking_code_max")}`,
(value) => value && value.toString().length === 10
)
.required(t("LoanRequest.error_message_boss_national_card_tracking_code"))
: schema;
}
),
@@ -157,18 +163,18 @@ const LegalPersonForm = ({setFinishLoanRequest}) => {
let _national_number =
values.person_type === "legal"
? {
shenase_meli: values.national_number,
}
shenase_meli: values.national_number,
}
: {};
const _national_card =
values.national_serial_number_or_tracking_code === "national_serial_number"
? {
national_serial_number: values.boss_national_serial_number,
}
national_serial_number: values.boss_national_serial_number,
}
: {
national_tracking_code: values.boss_national_card_tracking_code,
};
national_tracking_code: values.boss_national_card_tracking_code,
};
let _data = {
is_legal_person: 1,
@@ -213,8 +219,7 @@ const LegalPersonForm = ({setFinishLoanRequest}) => {
changeUser(data);
});
})
.catch(() => {
})
.catch(() => {})
.finally(() => {
props.setSubmitting(false);
});
@@ -227,7 +232,7 @@ const LegalPersonForm = ({setFinishLoanRequest}) => {
});
return (
<>
<Grid container spacing={2} sx={{p: 2}}>
<Grid container spacing={2} sx={{ p: 2 }}>
<Grid item xs={12} sm={6}>
<SelectBox
name="navgan_plan_id"
@@ -237,7 +242,7 @@ const LegalPersonForm = ({setFinishLoanRequest}) => {
isLoading={isLoadingProjectTitle}
errorEcured={errorProjectTitle}
selectors={projectTitle}
schema={{value: "value", name: "name"}}
schema={{ value: "value", name: "name" }}
select={formik.values.navgan_plan_id}
value={formik.values.navgan_plan_id}
handleChange={(event) => {
@@ -258,7 +263,7 @@ const LegalPersonForm = ({setFinishLoanRequest}) => {
isLoading={isLoadingActivityType}
errorEcured={errorActivityType}
selectors={activityType}
schema={{value: "value", name: "name"}}
schema={{ value: "value", name: "name" }}
select={formik.values.activity_type}
value={formik.values.activity_type}
handleChange={(event) => {
@@ -271,15 +276,15 @@ const LegalPersonForm = ({setFinishLoanRequest}) => {
/>
</Grid>
</Grid>
<Grid container spacing={2} sx={{p: 2}}>
<Grid container spacing={2} sx={{ p: 2 }}>
<Grid item xs={12} sm={4}>
<TextField
sx={{width: "100%"}}
sx={{ width: "100%" }}
name="national_number"
variant="outlined"
size="small"
value={formik.values.national_number}
inputProps={{inputMode: "numeric", pattern: "[0-9]*"}}
inputProps={{ inputMode: "numeric", pattern: "[0-9]*" }}
type={"tel"}
onChange={(event) => {
const inputValue = event.target.value;
@@ -303,7 +308,7 @@ const LegalPersonForm = ({setFinishLoanRequest}) => {
</Grid>
<Grid item xs={12} sm={4}>
<TextField
sx={{width: "100%"}}
sx={{ width: "100%" }}
name="company_name"
variant="outlined"
size="small"
@@ -319,12 +324,12 @@ const LegalPersonForm = ({setFinishLoanRequest}) => {
</Grid>
<Grid item xs={12} sm={4}>
<TextField
sx={{width: "100%"}}
sx={{ width: "100%" }}
name="register_number"
variant="outlined"
size="small"
value={formik.values.register_number}
inputProps={{inputMode: "numeric", pattern: "[0-9]*"}}
inputProps={{ inputMode: "numeric", pattern: "[0-9]*" }}
type={"tel"}
onChange={(event) => {
const inputValue = event.target.value;
@@ -347,14 +352,14 @@ const LegalPersonForm = ({setFinishLoanRequest}) => {
/>
</Grid>
</Grid>
<Grid container spacing={2} sx={{padding: 2}}>
<Grid container spacing={2} sx={{ padding: 2 }}>
<Grid item xs={12} sm={4}>
<TextField
sx={{width: "100%"}}
sx={{ width: "100%" }}
name="company_postal_code"
variant="outlined"
value={formik.values.company_postal_code}
inputProps={{inputMode: "numeric", pattern: "[0-9]*"}}
inputProps={{ inputMode: "numeric", pattern: "[0-9]*" }}
type={"tel"}
onChange={(event) => {
const inputValue = event.target.value;
@@ -379,11 +384,11 @@ const LegalPersonForm = ({setFinishLoanRequest}) => {
</Grid>
<Grid item xs={12} sm={4}>
<TextField
sx={{width: "100%"}}
sx={{ width: "100%" }}
name="company_tel_number"
variant="outlined"
value={formik.values.company_tel_number}
inputProps={{inputMode: "numeric", pattern: "[0-9]*"}}
inputProps={{ inputMode: "numeric", pattern: "[0-9]*" }}
type={"tel"}
size="small"
onChange={(event) => {
@@ -415,7 +420,7 @@ const LegalPersonForm = ({setFinishLoanRequest}) => {
/>
</Grid>
</Grid>
<Grid container spacing={2} sx={{padding: 2}}>
<Grid container spacing={2} sx={{ padding: 2 }}>
<Grid item xs={12} sm={6}>
<SelectBox
name="province_id"
@@ -425,7 +430,7 @@ const LegalPersonForm = ({setFinishLoanRequest}) => {
isLoading={isLoadingProvinceList}
errorEcured={errorProvinceList}
selectors={provinceList}
schema={{value: "value", name: "name"}}
schema={{ value: "value", name: "name" }}
select={formik.values.province_id}
value={formik.values.province_id}
handleChange={(event) => {
@@ -447,12 +452,12 @@ const LegalPersonForm = ({setFinishLoanRequest}) => {
isLoadingCityList
? `${t("LoanRequest.cityList_loading")}`
: cityList.length === 0
? `${t("LoanRequest.cityList_empty")}`
: cityTextField
? `${t("LoanRequest.cityList_empty")}`
: cityTextField
}
size="small"
selectType="city_id"
schema={{value: "value", name: "name"}}
schema={{ value: "value", name: "name" }}
disabled={cityList.length === 0}
selectors={cityList}
select={formik.values.city_id}
@@ -465,15 +470,15 @@ const LegalPersonForm = ({setFinishLoanRequest}) => {
/>
</Grid>
</Grid>
<Grid container spacing={2} sx={{padding: 2}}>
<Grid container spacing={2} sx={{ padding: 2 }}>
<Grid item xs={12} sm={6}>
<TextField
sx={{width: "100%"}}
sx={{ width: "100%" }}
name="boss_national_code"
variant="outlined"
size="small"
value={formik.values.boss_national_code}
inputProps={{inputMode: "numeric", pattern: "[0-9]*"}}
inputProps={{ inputMode: "numeric", pattern: "[0-9]*" }}
type={"tel"}
onChange={(event) => {
const inputValue = event.target.value;
@@ -514,7 +519,7 @@ const LegalPersonForm = ({setFinishLoanRequest}) => {
name: "مرد",
},
]}
schema={{value: "value", name: "name"}}
schema={{ value: "value", name: "name" }}
select={formik.values.boss_gender}
handleChange={(event) => {
formik.setFieldValue("boss_gender", event.target.value);
@@ -526,10 +531,10 @@ const LegalPersonForm = ({setFinishLoanRequest}) => {
/>
</Grid>
</Grid>
<Grid container spacing={2} sx={{padding: 2}}>
<Grid container spacing={2} sx={{ padding: 2 }}>
<Grid item xs={12} sm={4}>
<TextField
sx={{width: "100%"}}
sx={{ width: "100%" }}
name="boss_first_name"
variant="outlined"
size="small"
@@ -545,7 +550,7 @@ const LegalPersonForm = ({setFinishLoanRequest}) => {
</Grid>
<Grid item xs={12} sm={4}>
<TextField
sx={{width: "100%"}}
sx={{ width: "100%" }}
name="boss_last_name"
variant="outlined"
size="small"
@@ -568,7 +573,7 @@ const LegalPersonForm = ({setFinishLoanRequest}) => {
/>
</Grid>
</Grid>
<Grid container spacing={2} sx={{padding: 2}}>
<Grid container spacing={2} sx={{ padding: 2 }}>
<Grid item xs={12} sm={4}>
<ToggleButtonGroup
color="primary"
@@ -597,7 +602,7 @@ const LegalPersonForm = ({setFinishLoanRequest}) => {
{formik.values.national_serial_number_or_tracking_code === "national_serial_number" ? (
<Grid item xs={12} sm={4}>
<TextField
sx={{width: "100%"}}
sx={{ width: "100%" }}
name="boss_national_serial_number"
variant="outlined"
size="small"
@@ -625,11 +630,11 @@ const LegalPersonForm = ({setFinishLoanRequest}) => {
) : (
<Grid item xs={12} sm={4}>
<TextField
sx={{width: "100%"}}
sx={{ width: "100%" }}
name="boss_national_card_tracking_code"
variant="outlined"
size="small"
inputProps={{inputMode: "numeric", pattern: "[0-9]*"}}
inputProps={{ inputMode: "numeric", pattern: "[0-9]*" }}
type={"tel"}
value={formik.values.boss_national_card_tracking_code}
label={t("LoanRequest.text_field_boss_national_card_tracking_code")}
@@ -661,7 +666,7 @@ const LegalPersonForm = ({setFinishLoanRequest}) => {
)}
<Grid item xs={12} sm={4}>
<TextField
sx={{width: "100%"}}
sx={{ width: "100%" }}
name="boss_father_name"
variant="outlined"
value={formik.values.boss_father_name}
@@ -676,14 +681,14 @@ const LegalPersonForm = ({setFinishLoanRequest}) => {
/>
</Grid>
</Grid>
<Grid container spacing={2} sx={{padding: 2}}>
<Grid container spacing={2} sx={{ padding: 2 }}>
<Grid item xs={12} sm={6}>
<SelectBox
name="vehicle_type"
label={t("LoanRequest.text_field_vehicle_type")}
size="small"
value={formik.values.vehicle_type}
schema={{value: "value", name: "name"}}
schema={{ value: "value", name: "name" }}
selectType="vehicle_type"
selectors={[
{
@@ -705,16 +710,16 @@ const LegalPersonForm = ({setFinishLoanRequest}) => {
/>
</Grid>
<Grid item xs={12} sm={6}>
<PlateNumber formik={formik}/>
<PlateNumber formik={formik} />
</Grid>
</Grid>
<Grid container spacing={2} sx={{padding: 2}}>
<Grid container spacing={2} sx={{ padding: 2 }}>
<Grid item xs={12} sm={4}>
<TextField
sx={{width: "100%"}}
sx={{ width: "100%" }}
name="navgan_id"
variant="outlined"
inputProps={{inputMode: "numeric", pattern: "[0-9]*"}}
inputProps={{ inputMode: "numeric", pattern: "[0-9]*" }}
type={"tel"}
value={formik.values.navgan_id}
onChange={formik.handleChange}
@@ -738,7 +743,7 @@ const LegalPersonForm = ({setFinishLoanRequest}) => {
selectors={educationsList}
select={formik.values.education_id}
value={formik.values.education_id}
schema={{value: "id", name: "title"}}
schema={{ value: "id", name: "title" }}
handleChange={(event) => {
formik.setFieldValue("education_id", event.target.value);
}}
@@ -756,7 +761,7 @@ const LegalPersonForm = ({setFinishLoanRequest}) => {
isLoading={isLoadingOccupationsList}
errorEcured={errorOccupationsList}
selectType="occupation_id"
schema={{value: "id", name: "title"}}
schema={{ value: "id", name: "title" }}
selectors={occupationsList}
select={formik.values.occupation_id}
value={formik.values.occupation_id}
@@ -770,12 +775,12 @@ const LegalPersonForm = ({setFinishLoanRequest}) => {
/>
</Grid>
</Grid>
<Grid container spacing={2} sx={{padding: 2}}>
<Grid container spacing={2} sx={{ padding: 2 }}>
<Grid item xs={12}>
<TextField
multiline
rows={4}
sx={{width: "100%"}}
sx={{ width: "100%" }}
name="address"
variant="outlined"
size="small"
@@ -790,7 +795,7 @@ const LegalPersonForm = ({setFinishLoanRequest}) => {
/>
</Grid>
</Grid>
<Grid container sx={{padding: 2}}>
<Grid container sx={{ padding: 2 }}>
<Grid item xs={12}>
<FormControlLabel
color={"error.main"}
@@ -806,7 +811,7 @@ const LegalPersonForm = ({setFinishLoanRequest}) => {
/>
</Grid>
</Grid>
<Grid container spacing={2} sx={{padding: 2}}>
<Grid container spacing={2} sx={{ padding: 2 }}>
<Grid item xs={12}>
<FormControlLabel
color={"error.main"}
@@ -825,10 +830,10 @@ const LegalPersonForm = ({setFinishLoanRequest}) => {
<Box
sx={{
display: "flex",
flexDirection: {xs: "column", sm: "row"},
flexDirection: { xs: "column", sm: "row" },
alignItems: "center",
mx: "auto",
width: {xs: "100%", sm: "30%", md: "25%"},
width: { xs: "100%", sm: "30%", md: "25%" },
}}
>
<Button
@@ -837,8 +842,8 @@ const LegalPersonForm = ({setFinishLoanRequest}) => {
type="submit"
variant="contained"
size="large"
sx={{my: 4}}
endIcon={<DataSaverOnIcon/>}
sx={{ my: 4 }}
endIcon={<DataSaverOnIcon />}
disabled={formik.values.checkedBox ? formik.isSubmitting || !formik.dirty || !formik.isValid : true}
>
{formik.isSubmitting ? t("LoanRequest.button_while_submit") : t("LoanRequest.button_submit")}

View File

@@ -10,15 +10,15 @@ import {
} from "@mui/material";
import SelectBox from "@/core/components/SelectBox";
import MuiDatePicker from "@/core/components/MuiDatePicker";
import {useTranslations} from "next-intl";
import { useTranslations } from "next-intl";
import useLimitedProvince from "@/lib/app/hooks/useLimitedProvince";
import useCities from "@/lib/app/hooks/useCities";
import {useFormik} from "formik";
import { useFormik } from "formik";
import * as Yup from "yup";
import DataSaverOnIcon from "@mui/icons-material/DataSaverOn";
import {SEND_LOAN_REQUEST_NAVGAN} from "@/core/data/apiRoutes";
import {useRequest, useUser} from "@witel/webapp-builder";
import {useRouter} from "next/router";
import { SEND_LOAN_REQUEST_NAVGAN } from "@/core/data/apiRoutes";
import { useRequest, useUser } from "@witel/webapp-builder";
import { useRouter } from "next/router";
import PlateNumber from "@/core/components/PlateNumber";
import * as React from "react";
import UseEducations from "@/lib/app/hooks/useEducations";
@@ -26,16 +26,16 @@ import useOccupations from "@/lib/app/hooks/useOccupations";
import useActivityType from "@/lib/app/hooks/useActivityType";
import useProjectTitle from "@/lib/app/hooks/useProjectTitle";
const RealPersonForm = ({setFinishLoanRequest}) => {
const RealPersonForm = ({ setFinishLoanRequest }) => {
const t = useTranslations();
const {provinceList, isLoadingProvinceList, errorProvinceList} = useLimitedProvince();
const {cityTextField, cityList, setProvinceID, isLoadingCityList} = useCities();
const {educationsList, isLoadingEducationsList, errorEducationsList} = UseEducations();
const {occupationsList, isLoadingOccupationsList, errorOccupationsList} = useOccupations();
const {activityType, isLoadingActivityType, errorActivityType} = useActivityType();
const {projectTitle, isLoadingProjectTitle, errorProjectTitle} = useProjectTitle();
const { provinceList, isLoadingProvinceList, errorProvinceList } = useLimitedProvince();
const { cityTextField, cityList, setProvinceID, isLoadingCityList } = useCities();
const { educationsList, isLoadingEducationsList, errorEducationsList } = UseEducations();
const { occupationsList, isLoadingOccupationsList, errorOccupationsList } = useOccupations();
const { activityType, isLoadingActivityType, errorActivityType } = useActivityType();
const { projectTitle, isLoadingProjectTitle, errorProjectTitle } = useProjectTitle();
const requestServer = useRequest();
const {getUser, changeUser} = useUser();
const { getUser, changeUser } = useUser();
const router = useRouter();
const initialValues = {
@@ -107,25 +107,31 @@ const RealPersonForm = ({setFinishLoanRequest}) => {
.test("positive", `${t("LoanRequest.national_code_positive")}`, (value) => value >= 0)
.test("max", `${t("LoanRequest.national_code_max")}`, (value) => value.toString().length === 10)
.required(t("LoanRequest.error_message_national_id")),
national_serial_number: Yup.string()
.when("national_serial_number_or_tracking_code", ([national_serial_number_or_tracking_code], schema) => {
national_serial_number: Yup.string().when(
"national_serial_number_or_tracking_code",
([national_serial_number_or_tracking_code], schema) => {
return national_serial_number_or_tracking_code === "national_serial_number"
? schema.test(
"max",
`${t("LoanRequest.national_serial_number_max")}`,
(value) => value && value.toString().length === 10
).required(t("LoanRequest.error_message_shenasname_serial"))
? schema
.test(
"max",
`${t("LoanRequest.national_serial_number_max")}`,
(value) => value && value.toString().length === 10
)
.required(t("LoanRequest.error_message_shenasname_serial"))
: schema;
}),
}
),
national_card_tracking_code: Yup.string().when(
"national_serial_number_or_tracking_code",
([national_serial_number_or_tracking_code], schema) => {
return national_serial_number_or_tracking_code === "national_card_tracking_code"
? schema.test(
"max",
`${t("LoanRequest.national_tracking_code_max")}`,
(value) => value && value.toString().length === 10
).required(t("LoanRequest.error_message_tracking_code"))
? schema
.test(
"max",
`${t("LoanRequest.national_tracking_code_max")}`,
(value) => value && value.toString().length === 10
)
.required(t("LoanRequest.error_message_tracking_code"))
: schema;
}
),
@@ -137,11 +143,11 @@ const RealPersonForm = ({setFinishLoanRequest}) => {
const _national_card =
values.national_serial_number_or_tracking_code === "national_serial_number"
? {
national_serial_number: values.national_serial_number,
}
national_serial_number: values.national_serial_number,
}
: {
national_tracking_code: values.national_card_tracking_code,
};
national_tracking_code: values.national_card_tracking_code,
};
let _data = {
is_legal_person: 0,
@@ -182,8 +188,7 @@ const RealPersonForm = ({setFinishLoanRequest}) => {
changeUser(data);
});
})
.catch(() => {
})
.catch(() => {})
.finally(() => {
props.setSubmitting(false);
});
@@ -197,7 +202,7 @@ const RealPersonForm = ({setFinishLoanRequest}) => {
return (
<>
<Grid container spacing={2} sx={{p: 2}}>
<Grid container spacing={2} sx={{ p: 2 }}>
<Grid item xs={12} sm={6}>
<SelectBox
name="navgan_plan_id"
@@ -207,7 +212,7 @@ const RealPersonForm = ({setFinishLoanRequest}) => {
isLoading={isLoadingProjectTitle}
errorEcured={errorProjectTitle}
selectors={projectTitle}
schema={{value: "value", name: "name"}}
schema={{ value: "value", name: "name" }}
select={formik.values.navgan_plan_id}
value={formik.values.navgan_plan_id}
handleChange={(event) => {
@@ -228,7 +233,7 @@ const RealPersonForm = ({setFinishLoanRequest}) => {
isLoading={isLoadingActivityType}
errorEcured={errorActivityType}
selectors={activityType}
schema={{value: "value", name: "name"}}
schema={{ value: "value", name: "name" }}
select={formik.values.activity_type}
value={formik.values.activity_type}
handleChange={(event) => {
@@ -241,7 +246,7 @@ const RealPersonForm = ({setFinishLoanRequest}) => {
/>
</Grid>
</Grid>
<Grid container spacing={2} sx={{padding: 2}}>
<Grid container spacing={2} sx={{ padding: 2 }}>
<Grid item xs={12} sm={4}>
<ToggleButtonGroup
color="primary"
@@ -270,7 +275,7 @@ const RealPersonForm = ({setFinishLoanRequest}) => {
{formik.values.national_serial_number_or_tracking_code === "national_serial_number" ? (
<Grid item xs={12} sm={4}>
<TextField
sx={{width: "100%"}}
sx={{ width: "100%" }}
name="national_serial_number"
variant="outlined"
size="small"
@@ -291,16 +296,15 @@ const RealPersonForm = ({setFinishLoanRequest}) => {
}
helperText={formik.touched.national_serial_number && formik.errors.national_serial_number}
/>
</Grid>
) : (
<Grid item xs={12} sm={4}>
<TextField
sx={{width: "100%"}}
sx={{ width: "100%" }}
name="national_card_tracking_code"
variant="outlined"
size="small"
inputProps={{inputMode: "numeric", pattern: "[0-9]*"}}
inputProps={{ inputMode: "numeric", pattern: "[0-9]*" }}
type={"tel"}
value={formik.values.national_card_tracking_code}
label={t("LoanRequest.text_field_national_trackin_code")}
@@ -331,12 +335,12 @@ const RealPersonForm = ({setFinishLoanRequest}) => {
)}
<Grid item xs={12} sm={4}>
<TextField
sx={{width: "100%"}}
sx={{ width: "100%" }}
name="national_code"
variant="outlined"
size="small"
value={formik.values.national_code}
inputProps={{inputMode: "numeric", pattern: "[0-9]*"}}
inputProps={{ inputMode: "numeric", pattern: "[0-9]*" }}
type={"tel"}
onChange={(event) => {
const inputValue = event.target.value;
@@ -359,10 +363,10 @@ const RealPersonForm = ({setFinishLoanRequest}) => {
/>
</Grid>
</Grid>
<Grid container spacing={2} sx={{padding: 2}}>
<Grid container spacing={2} sx={{ padding: 2 }}>
<Grid item xs={12} sm={6}>
<TextField
sx={{width: "100%"}}
sx={{ width: "100%" }}
name="first_name"
variant="outlined"
size="small"
@@ -378,7 +382,7 @@ const RealPersonForm = ({setFinishLoanRequest}) => {
</Grid>
<Grid item xs={12} sm={6}>
<TextField
sx={{width: "100%"}}
sx={{ width: "100%" }}
name="last_name"
variant="outlined"
size="small"
@@ -393,10 +397,10 @@ const RealPersonForm = ({setFinishLoanRequest}) => {
/>
</Grid>
</Grid>
<Grid container spacing={2} sx={{padding: 2}}>
<Grid container spacing={2} sx={{ padding: 2 }}>
<Grid item xs={12} sm={4}>
<TextField
sx={{width: "100%"}}
sx={{ width: "100%" }}
name="father_name"
variant="outlined"
value={formik.values.father_name}
@@ -429,7 +433,7 @@ const RealPersonForm = ({setFinishLoanRequest}) => {
name: "مرد",
},
]}
schema={{value: "value", name: "name"}}
schema={{ value: "value", name: "name" }}
select={formik.values.gender}
handleChange={(event) => {
formik.setFieldValue("gender", event.target.value);
@@ -449,13 +453,13 @@ const RealPersonForm = ({setFinishLoanRequest}) => {
/>
</Grid>
</Grid>
<Grid container spacing={2} sx={{padding: 2}}>
<Grid container spacing={2} sx={{ padding: 2 }}>
<Grid item xs={12} sm={4}>
<TextField
sx={{width: "100%"}}
sx={{ width: "100%" }}
name="navgan_id"
variant="outlined"
inputProps={{inputMode: "numeric", pattern: "[0-9]*"}}
inputProps={{ inputMode: "numeric", pattern: "[0-9]*" }}
type={"tel"}
value={formik.values.navgan_id}
onChange={formik.handleChange}
@@ -470,11 +474,11 @@ const RealPersonForm = ({setFinishLoanRequest}) => {
</Grid>
<Grid item xs={12} sm={4}>
<TextField
sx={{width: "100%"}}
sx={{ width: "100%" }}
name="postal_code"
variant="outlined"
value={formik.values.postal_code}
inputProps={{inputMode: "numeric", pattern: "[0-9]*"}}
inputProps={{ inputMode: "numeric", pattern: "[0-9]*" }}
type={"tel"}
onChange={(event) => {
const inputValue = event.target.value;
@@ -499,11 +503,11 @@ const RealPersonForm = ({setFinishLoanRequest}) => {
</Grid>
<Grid item xs={12} sm={4}>
<TextField
sx={{width: "100%"}}
sx={{ width: "100%" }}
name="telephone_number"
variant="outlined"
value={formik.values.telephone_number}
inputProps={{inputMode: "numeric", pattern: "[0-9]*"}}
inputProps={{ inputMode: "numeric", pattern: "[0-9]*" }}
type={"tel"}
size="small"
onChange={(event) => {
@@ -527,7 +531,7 @@ const RealPersonForm = ({setFinishLoanRequest}) => {
/>
</Grid>
</Grid>
<Grid container spacing={2} sx={{padding: 2}}>
<Grid container spacing={2} sx={{ padding: 2 }}>
<Grid item xs={12} sm={6}>
<SelectBox
name="province_id"
@@ -537,7 +541,7 @@ const RealPersonForm = ({setFinishLoanRequest}) => {
isLoading={isLoadingProvinceList}
errorEcured={errorProvinceList}
selectors={provinceList}
schema={{value: "value", name: "name"}}
schema={{ value: "value", name: "name" }}
select={formik.values.province_id}
value={formik.values.province_id}
handleChange={(event) => {
@@ -559,12 +563,12 @@ const RealPersonForm = ({setFinishLoanRequest}) => {
isLoadingCityList
? `${t("LoanRequest.cityList_loading")}`
: cityList.length === 0
? `${t("LoanRequest.cityList_empty")}`
: cityTextField
? `${t("LoanRequest.cityList_empty")}`
: cityTextField
}
size="small"
selectType="city_id"
schema={{value: "value", name: "name"}}
schema={{ value: "value", name: "name" }}
disabled={cityList.length === 0}
selectors={cityList}
select={formik.values.city_id}
@@ -577,14 +581,14 @@ const RealPersonForm = ({setFinishLoanRequest}) => {
/>
</Grid>
</Grid>
<Grid container spacing={2} sx={{padding: 2}}>
<Grid container spacing={2} sx={{ padding: 2 }}>
<Grid item xs={12} sm={6}>
<SelectBox
name="vehicle_type"
label={t("LoanRequest.text_field_vehicle_type")}
size="small"
value={formik.values.vehicle_type}
schema={{value: "value", name: "name"}}
schema={{ value: "value", name: "name" }}
selectType="vehicle_type"
selectors={[
{
@@ -606,10 +610,10 @@ const RealPersonForm = ({setFinishLoanRequest}) => {
/>
</Grid>
<Grid item xs={12} sm={6}>
<PlateNumber formik={formik}/>
<PlateNumber formik={formik} />
</Grid>
</Grid>
<Grid container spacing={2} sx={{padding: 2}}>
<Grid container spacing={2} sx={{ padding: 2 }}>
<Grid item xs={12} sm={6}>
<SelectBox
name="education_id"
@@ -621,7 +625,7 @@ const RealPersonForm = ({setFinishLoanRequest}) => {
selectors={educationsList}
select={formik.values.education_id}
value={formik.values.education_id}
schema={{value: "id", name: "title"}}
schema={{ value: "id", name: "title" }}
handleChange={(event) => {
formik.setFieldValue("education_id", event.target.value);
}}
@@ -639,7 +643,7 @@ const RealPersonForm = ({setFinishLoanRequest}) => {
isLoading={isLoadingOccupationsList}
errorEcured={errorOccupationsList}
selectType="occupation_id"
schema={{value: "id", name: "title"}}
schema={{ value: "id", name: "title" }}
selectors={occupationsList}
select={formik.values.occupation_id}
value={formik.values.occupation_id}
@@ -653,12 +657,12 @@ const RealPersonForm = ({setFinishLoanRequest}) => {
/>
</Grid>
</Grid>
<Grid container spacing={2} sx={{padding: 2}}>
<Grid container spacing={2} sx={{ padding: 2 }}>
<Grid item xs={12}>
<TextField
multiline
rows={4}
sx={{width: "100%"}}
sx={{ width: "100%" }}
name="address"
variant="outlined"
size="small"
@@ -673,7 +677,7 @@ const RealPersonForm = ({setFinishLoanRequest}) => {
/>
</Grid>
</Grid>
<Grid container sx={{padding: 2}}>
<Grid container sx={{ padding: 2 }}>
<Grid item xs={12}>
<FormControlLabel
color={"error.main"}
@@ -689,7 +693,7 @@ const RealPersonForm = ({setFinishLoanRequest}) => {
/>
</Grid>
</Grid>
<Grid container sx={{px: 2}}>
<Grid container sx={{ px: 2 }}>
<Grid item xs={12}>
<FormControlLabel
color={"error.main"}
@@ -708,10 +712,10 @@ const RealPersonForm = ({setFinishLoanRequest}) => {
<Box
sx={{
display: "flex",
flexDirection: {xs: "column", sm: "row"},
flexDirection: { xs: "column", sm: "row" },
alignItems: "center",
mx: "auto",
width: {xs: "100%", sm: "30%", md: "25%"},
width: { xs: "100%", sm: "30%", md: "25%" },
}}
>
<Button
@@ -720,8 +724,8 @@ const RealPersonForm = ({setFinishLoanRequest}) => {
type="submit"
variant="contained"
size="large"
sx={{my: 4}}
endIcon={<DataSaverOnIcon/>}
sx={{ my: 4 }}
endIcon={<DataSaverOnIcon />}
disabled={formik.values.checkedBox ? formik.isSubmitting || !formik.dirty || !formik.isValid : true}
>
{formik.isSubmitting ? t("LoanRequest.button_while_submit") : t("LoanRequest.button_submit")}

View File

@@ -1,4 +1,4 @@
import {useTranslations} from "next-intl";
import { useTranslations } from "next-intl";
import AddFormComponent from "@/components/dashboard/navgan/add-request-loan/forms/AddForm";
const LoanRequestComponent = () => {
@@ -6,7 +6,7 @@ const LoanRequestComponent = () => {
return (
<>
<AddFormComponent/>
<AddFormComponent />
</>
);
};

View File

@@ -1,117 +1,127 @@
import {Box, Button, Card, CardContent, Grid, Stack, Typography} from "@mui/material";
import {useTranslations} from "next-intl";
import { Box, Button, Card, CardContent, Grid, Stack, Typography } from "@mui/material";
import { useTranslations } from "next-intl";
import moment from "jalali-moment";
import {LinkRouting} from "@witel/webapp-builder";
import AccessTimeFilledIcon from '@mui/icons-material/AccessTimeFilled';
import CancelIcon from '@mui/icons-material/Cancel';
import EditIcon from '@mui/icons-material/Edit';
import PendingIcon from '@mui/icons-material/Pending';
import { LinkRouting } from "@witel/webapp-builder";
import AccessTimeFilledIcon from "@mui/icons-material/AccessTimeFilled";
import CancelIcon from "@mui/icons-material/Cancel";
import EditIcon from "@mui/icons-material/Edit";
import PendingIcon from "@mui/icons-material/Pending";
const RequestCard = ({item}) => {
const RequestCard = ({ item }) => {
const t = useTranslations();
return (
<Grid item xs={12} lg={6} xl={4}>
<Card sx={{
width: "100%",
height: "100%",
boxShadow: "rgba(0, 0, 0, 0.15) 0px 5px 15px 0px"
}}>
<CardContent sx={{
display: 'flex',
flexDirection: 'column',
height: '100%',
justifyContent: "space-between"
}}>
<Card
sx={{
width: "100%",
height: "100%",
boxShadow: "rgba(0, 0, 0, 0.15) 0px 5px 15px 0px",
}}
>
<CardContent
sx={{
display: "flex",
flexDirection: "column",
height: "100%",
justifyContent: "space-between",
}}
>
<Stack>
<Box
sx={{
borderLeft: '6px solid',
borderColor: 'primary.main',
borderRadius: '6px 0px 0px 6px',
paddingLeft: '10px',
borderLeft: "6px solid",
borderColor: "primary.main",
borderRadius: "6px 0px 0px 6px",
paddingLeft: "10px",
}}
>
<Typography variant="h6" sx={{lineHeight: 2, fontWeight: 'bold'}}>
<Typography variant="h6" sx={{ lineHeight: 2, fontWeight: "bold" }}>
{`${t("LoanFollowUp.loan_unique_code")}: ${item.id}`}
</Typography>
</Box>
<Typography variant="body1" sx={{lineHeight: 2, paddingLeft: '20px'}}>
<Typography variant="body1" sx={{ lineHeight: 2, paddingLeft: "20px" }}>
{`${t("LoanFollowUp.loan_date")}: ${moment(item.created_at).locale("fa").format("HH:mm | YYYY/MM/DD")}`}
</Typography>
<Typography variant="body1" sx={{lineHeight: 2, paddingLeft: '20px'}}>
{`${t("LoanFollowUp.loan_bank_branch")}: ${item.branch_info === null ? '-' : item.branch_info}`}
<Typography variant="body1" sx={{ lineHeight: 2, paddingLeft: "20px" }}>
{`${t("LoanFollowUp.loan_bank_branch")}: ${item.branch_info === null ? "-" : item.branch_info}`}
</Typography>
<Typography variant="body1" sx={{lineHeight: 2, paddingLeft: '20px'}}>
<Typography variant="body1" sx={{ lineHeight: 2, paddingLeft: "20px" }}>
{`${t("LoanFollowUp.loan_status")}: `}
{item.state_id === 9 &&
{item.state_id === 9 && (
<>
{t("LoanFollowUp.loan_reserve")}
<PendingIcon sx={{verticalAlign: 'middle', marginLeft: '4px', color: '#48a4df'}}/>
<PendingIcon
sx={{ verticalAlign: "middle", marginLeft: "4px", color: "#48a4df" }}
/>
</>
}
{item.state_id === 17 &&
)}
{item.state_id === 17 && (
<>
{t("LoanFollowUp.loan_edit_info")}
<EditIcon sx={{verticalAlign: 'middle', marginLeft: '4px', color: '#ed6c02'}}/>
<EditIcon sx={{ verticalAlign: "middle", marginLeft: "4px", color: "#ed6c02" }} />
</>
}
{item.state_id === 7 &&
)}
{item.state_id === 7 && (
<>
{t("LoanFollowUp.loan_cancel")}
<CancelIcon sx={{verticalAlign: 'middle', marginLeft: '4px', color: 'red'}}/>
<CancelIcon sx={{ verticalAlign: "middle", marginLeft: "4px", color: "red" }} />
</>
}
{item.state_id !== 7 && item.state_id !== 17 && item.state_id !== 9 &&
)}
{item.state_id !== 7 && item.state_id !== 17 && item.state_id !== 9 && (
<>
{t("LoanFollowUp.loan_review")}
<AccessTimeFilledIcon sx={{verticalAlign: 'middle', marginLeft: '4px', color: '#084070'}}/>
<AccessTimeFilledIcon
sx={{ verticalAlign: "middle", marginLeft: "4px", color: "#084070" }}
/>
</>
}
)}
</Typography>
{item.state_id === 17 && (
<Typography variant="body1" sx={{
lineHeight: 2,
paddingLeft: '20px',
wordWrap: 'break-word',
overflowWrap: 'break-word',
wordBreak: 'break-word'
}}>
<Typography
variant="body1"
sx={{
lineHeight: 2,
paddingLeft: "20px",
wordWrap: "break-word",
overflowWrap: "break-word",
wordBreak: "break-word",
}}
>
{`${t("LoanFollowUp.loan_description")}: ${item.latestHistory.expert_description}`}
</Typography>
)}
{item.state_id === 7 && (
<Typography variant="body1" sx={{
lineHeight: 2,
paddingLeft: '20px',
wordWrap: 'break-word',
overflowWrap: 'break-word',
wordBreak: 'break-word'
}}>
<Typography
variant="body1"
sx={{
lineHeight: 2,
paddingLeft: "20px",
wordWrap: "break-word",
overflowWrap: "break-word",
wordBreak: "break-word",
}}
>
{`${t("LoanFollowUp.loan_description")}: درخواست وام توسط بانک تایید نشد (نیاز به اصلاح اطلاعات) `}
</Typography>
)}
</Stack>
{
item.state_id === 17 ? (
<Button variant="contained" color="warning" sx={{alignSelf: 'flex-end', mt: 2}}>
<LinkRouting underline="none" color="inherit"
href={`/dashboard/navgan/${item.id}/show`}>
{t("LoanFollowUp.loan_edit")}
</LinkRouting>
</Button>
) : (
<Button variant="contained" color="primary" sx={{alignSelf: 'flex-end', mt: 2}}>
<LinkRouting underline="none" color="inherit"
href={`/dashboard/navgan/${item.id}/show`}>
{t("LoanFollowUp.loan_details")}
</LinkRouting>
</Button>
)
}
{item.state_id === 17 ? (
<Button variant="contained" color="warning" sx={{ alignSelf: "flex-end", mt: 2 }}>
<LinkRouting underline="none" color="inherit" href={`/dashboard/navgan/${item.id}/show`}>
{t("LoanFollowUp.loan_edit")}
</LinkRouting>
</Button>
) : (
<Button variant="contained" color="primary" sx={{ alignSelf: "flex-end", mt: 2 }}>
<LinkRouting underline="none" color="inherit" href={`/dashboard/navgan/${item.id}/show`}>
{t("LoanFollowUp.loan_details")}
</LinkRouting>
</Button>
)}
</CardContent>
</Card>
</Grid>
);
};
export default RequestCard;
export default RequestCard;

View File

@@ -1,55 +1,53 @@
import {Grid} from "@mui/material";
import {useEffect, useState} from "react";
import {SHOW_LOAN_REQUEST_NAVGAN} from "@/core/data/apiRoutes";
import { Grid } from "@mui/material";
import { useEffect, useState } from "react";
import { SHOW_LOAN_REQUEST_NAVGAN } from "@/core/data/apiRoutes";
import RequestCard from "@/components/dashboard/navgan/followUp-loan/RequestCard";
import {FullPageLayout, LoadingHardPage, useRequest} from "@witel/webapp-builder";
import { FullPageLayout, LoadingHardPage, useRequest } from "@witel/webapp-builder";
import sidebarMenu from "@/core/data/sidebarMenu";
import BookmarkAddedIcon from "@mui/icons-material/BookmarkAdded";
const LoanFollowUpComponent = () => {
const requestServer = useRequest();
const [isLoading, setIsLoading] = useState(false)
const [isLoading, setIsLoading] = useState(false);
const [requestsList, setRequestsList] = useState([]);
useEffect(() => {
setIsLoading(true)
setIsLoading(true);
requestServer(SHOW_LOAN_REQUEST_NAVGAN, "get", {
auth: true,
pending: false,
success: {notification: {show: false}}
success: { notification: { show: false } },
})
.then(function ({data}) {
.then(function ({ data }) {
const items = data.data;
setRequestsList(items);
setIsLoading(false)
})
.catch(function (error) {
setIsLoading(false);
})
.catch(function (error) {});
}, []);
return (
<FullPageLayout>
<Grid
container
columnSpacing={2}
rowSpacing={2}
sx={{alignItems: "start", justifyContent: "center", padding: "24px"}}
sx={{ alignItems: "start", justifyContent: "center", padding: "24px" }}
>
<LoadingHardPage
loading={isLoading} width={100} height={100}
sx={{position: "absolute", bgcolor: "#fffc"}}
icon={<BookmarkAddedIcon sx={{width: 'inherit', height: 'inherit'}}/>}
loading={isLoading}
width={100}
height={100}
sx={{ position: "absolute", bgcolor: "#fffc" }}
icon={<BookmarkAddedIcon sx={{ width: "inherit", height: "inherit" }} />}
>
<Grid container sx={{justifyContent : "center"}} spacing={2}>
<Grid container sx={{ justifyContent: "center" }} spacing={2}>
{requestsList.map((item) => (
<RequestCard item={item} key={item.id}/>
<RequestCard item={item} key={item.id} />
))}
</Grid>
</LoadingHardPage>
</Grid>
</FullPageLayout>
);
};

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,37 +1,38 @@
import {useEffect, useState} from "react";
import {GET_LOAN_DETAILS} from "@/core/data/apiRoutes";
import {useRouter} from "next/router";
import {SvgLoading, useRequest} from "@witel/webapp-builder";
import {Stack, Typography} from "@mui/material";
import {useTranslations} from "next-intl";
import { useEffect, useState } from "react";
import { GET_LOAN_DETAILS } from "@/core/data/apiRoutes";
import { useRouter } from "next/router";
import { SvgLoading, useRequest } from "@witel/webapp-builder";
import { Stack, Typography } from "@mui/material";
import { useTranslations } from "next-intl";
import UpdateFormReal from "@/components/dashboard/navgan/show/form/UpdateFormReal";
import UpdateFormLegal from "@/components/dashboard/navgan/show/form/UpdateFormLegal";
const ShowLoanForm = () => {
const t = useTranslations();
const {query} = useRouter();
const requestServer = useRequest({auth: true, notification: false});
const { query } = useRouter();
const requestServer = useRequest({ auth: true, notification: false });
const [LoanDetails, setLoanDetails] = useState({});
useEffect(() => {
requestServer(GET_LOAN_DETAILS + query.id, 'get', {auth: true, notification: false}).then(({data}) => {
setLoanDetails(data.data);
}).catch(() => {
})
requestServer(GET_LOAN_DETAILS + query.id, "get", { auth: true, notification: false })
.then(({ data }) => {
setLoanDetails(data.data);
})
.catch(() => {});
}, []);
if (Object.keys(LoanDetails).length === 0) {
return (
<Stack sx={{alignItems: "center", justifyContent: "center"}} spacing={3}>
<SvgLoading height={150} width={150}/>
<Stack sx={{ alignItems: "center", justifyContent: "center" }} spacing={3}>
<SvgLoading height={150} width={150} />
<Typography>{t("ShowLoan.loading_show_component")}</Typography>
</Stack>
);
}
return LoanDetails.is_legal_person === 1 ? (
<UpdateFormLegal LoanDetails={LoanDetails} LoanId={query.id}/>
<UpdateFormLegal LoanDetails={LoanDetails} LoanId={query.id} />
) : (
<UpdateFormReal LoanDetails={LoanDetails} LoanId={query.id}/>
)
<UpdateFormReal LoanDetails={LoanDetails} LoanId={query.id} />
);
};
export default ShowLoanForm;
export default ShowLoanForm;

View File

@@ -1,14 +1,14 @@
import {useTranslations} from "next-intl";
import {CenterLayout, useUser} from "@witel/webapp-builder";
import { useTranslations } from "next-intl";
import { CenterLayout, useUser } from "@witel/webapp-builder";
import ShowLoanForm from "@/components/dashboard/navgan/show/form";
const ShowLoan = () => {
const t = useTranslations();
const {user} = useUser();
const { user } = useUser();
return (
<CenterLayout>
<ShowLoanForm/>
<ShowLoanForm />
</CenterLayout>
);
};