From 706fcefbdf556907cdafcf7b9b1e37c21115ac54 Mon Sep 17 00:00:00 2001 From: Mohammad Jalali Date: Tue, 23 Jan 2024 14:41:15 +0330 Subject: [PATCH] complete new request and hook for limited province and disable update province --- .../navgan/add-request-loan/forms/AddForm.jsx | 4 +-- .../dashboard/navgan/show/form/UpdateForm.jsx | 14 +++++--- src/core/data/apiRoutes.js | 1 + src/lib/app/hooks/useLimitedProvince.jsx | 34 +++++++++++++++++++ src/lib/app/hooks/useProvince.jsx | 8 ++--- 5 files changed, 50 insertions(+), 11 deletions(-) create mode 100644 src/lib/app/hooks/useLimitedProvince.jsx diff --git a/src/components/dashboard/navgan/add-request-loan/forms/AddForm.jsx b/src/components/dashboard/navgan/add-request-loan/forms/AddForm.jsx index aacb6ac..c8cdcbb 100644 --- a/src/components/dashboard/navgan/add-request-loan/forms/AddForm.jsx +++ b/src/components/dashboard/navgan/add-request-loan/forms/AddForm.jsx @@ -17,7 +17,6 @@ import {useFormik} from "formik"; import {useTranslations} from "next-intl"; import * as Yup from "yup"; import {CenterLayout, useRequest, useUser} from "@witel/webapp-builder"; -import useProvince from "@/lib/app/hooks/useProvince"; import useCities from "@/lib/app/hooks/useCities"; import PlateNumber from "@/core/components/PlateNumber"; import MuiDatePicker from "@/core/components/MuiDatePicker"; @@ -29,6 +28,7 @@ import {NextLinkComposed} from "@witel/webapp-builder/dist/utils/linkRouting"; import SvgDone from "@/core/components/svgs/SvgDone"; import {SEND_LOAN_REQUEST_NAVGAN} from "@/core/data/apiRoutes"; import {useRouter} from "next/router"; +import useLimitedProvince from "@/lib/app/hooks/useLimitedProvince"; const AddFormComponent = () => { const router = useRouter() @@ -37,7 +37,7 @@ const AddFormComponent = () => { const [finishLoanRequest, setFinishLoanRequest] = useState(false) const [checked, setChecked] = useState(false); const requestServer = useRequest() - const {provinceList, isLoadingProvinceList, errorProvinceList} = useProvince() + const {provinceList, isLoadingProvinceList, errorProvinceList} = useLimitedProvince() const {cityTextField, cityList, setProvinceID, isLoadingCityList} = useCities() const {educationsList, isLoadingEducationsList, errorEducationsList} = UseEducations() const {occupationsList, isLoadingOccupationsList, errorOccupationsList} = useOccupations() diff --git a/src/components/dashboard/navgan/show/form/UpdateForm.jsx b/src/components/dashboard/navgan/show/form/UpdateForm.jsx index 0484e1b..4c3474e 100644 --- a/src/components/dashboard/navgan/show/form/UpdateForm.jsx +++ b/src/components/dashboard/navgan/show/form/UpdateForm.jsx @@ -116,8 +116,8 @@ const UpdateForm = ({LoanDetails, LoanId}) => { } formData.append("birthday", values.birthday.locale('en').format("YYYY-MM-DD")); formData.append("postal_code", values.postal_code); - formData.append("province_id", values.province_id); - formData.append("city_id", values.city_id); + formData.append("province_id", LoanDetails.province_id); + formData.append("city_id", LoanDetails.city_id); formData.append("telephone_number", values.telephone_number); formData.append("education_id", values.education_id); formData.append("occupation_id", values.occupation_id); @@ -547,7 +547,8 @@ const UpdateForm = ({LoanDetails, LoanId}) => { name="province_id" label={t("ShowLoan.text_field_province_id")} size="small" - variant="outlined" + variant="standard" + disabled selectType="province_id" schema={{value: "value", name: "name"}} isLoading={provinceStates.isLoadingProvinceList} @@ -568,6 +569,7 @@ const UpdateForm = ({LoanDetails, LoanId}) => { as={TextField} sx={{width: "100%"}} disabled + variant="standard" size="small" label={t("ShowLoan.text_field_province_id")} value={t("text_field_loading")} @@ -588,8 +590,9 @@ const UpdateForm = ({LoanDetails, LoanId}) => { label={citiesStates.cityList.length === 0 ? `${t("ShowLoan.cityList_empty")}` : citiesStates.cityTextField} size="small" selectType="city_id" - disabled={citiesStates.cityList.length === 0} - variant="outlined" + // disabled={citiesStates.cityList.length === 0} + variant="standard" + disabled selectors={citiesStates.cityList} select={props.values.city_id} schema={{value: "value", name: "name"}} @@ -602,6 +605,7 @@ const UpdateForm = ({LoanDetails, LoanId}) => { as={TextField} sx={{width: "100%"}} disabled + variant="standard" size="small" label={t("ShowLoan.cityList_empty")} value={t("text_field_loading")} diff --git a/src/core/data/apiRoutes.js b/src/core/data/apiRoutes.js index 1e69d2d..c747adb 100644 --- a/src/core/data/apiRoutes.js +++ b/src/core/data/apiRoutes.js @@ -16,6 +16,7 @@ export const SEND_LOAN_REQUEST_WELFARE = BASE_URL + "/refahi/loan/store"; export const UPDATE_LOAN_REQUEST_WELFARE = BASE_URL + "/refahi/loan/update/"; export const DETAILS_LOAN_REQUEST_WELFARE = BASE_URL + "/refahi/loan/details/"; export const GET_PROVINCE_LIST = BASE_URL + "/provinces"; +export const GET_LIMITED_PROVINCE_LIST = BASE_URL + "/provinces/navgan_eligible"; export const GET_CITIES_LIST = BASE_URL + "/cities"; export const GET_EDUCATIONS_LIST = BASE_URL + "/education"; export const GET_OCCUPATIONS_LIST = BASE_URL + "/occupations"; diff --git a/src/lib/app/hooks/useLimitedProvince.jsx b/src/lib/app/hooks/useLimitedProvince.jsx new file mode 100644 index 0000000..0d44bcb --- /dev/null +++ b/src/lib/app/hooks/useLimitedProvince.jsx @@ -0,0 +1,34 @@ +import {GET_LIMITED_PROVINCE_LIST} from "@/core/data/apiRoutes"; +import {useRequest} from "@witel/webapp-builder"; +import {useEffect, useState} from "react"; + +const useLimitedProvince = () => { + const [isLoadingProvinceList, setIsLoadingProvinceList] = useState(false) + const [errorProvinceList, setErrorProvinceList] = useState(false) + const [provinceList, setProvinceList] = useState([]) + const requestServer = useRequest({auth: true, notification: false}) + + useEffect(() => { + setIsLoadingProvinceList(true) + requestServer(GET_LIMITED_PROVINCE_LIST, 'get', {auth: true, notification: false}).then(({data}) => { + const formattedData = data.data.map((province, index) => ({ + id: index, + name: province.name, + value: province.id, + })); + setIsLoadingProvinceList(false) + setProvinceList(formattedData); + }).catch(() => { + setIsLoadingProvinceList(false) + setErrorProvinceList(true) + }) + }, []) + + return { + provinceList, + isLoadingProvinceList, + errorProvinceList + } +}; + +export default useLimitedProvince; \ No newline at end of file diff --git a/src/lib/app/hooks/useProvince.jsx b/src/lib/app/hooks/useProvince.jsx index add55f3..d790102 100644 --- a/src/lib/app/hooks/useProvince.jsx +++ b/src/lib/app/hooks/useProvince.jsx @@ -8,10 +8,10 @@ const useProvince = () => { const [provinceList, setProvinceList] = useState([]) const requestServer = useRequest({auth: true, notification: false}) - useEffect(()=> { + useEffect(() => { setIsLoadingProvinceList(true) - requestServer(GET_PROVINCE_LIST, 'get',{auth : true, notification : false}).then(({data}) => { - const formattedData = data.map((province, index) => ({ + requestServer(GET_PROVINCE_LIST, 'get', {auth: true, notification: false}).then(({data}) => { + const formattedData = data.data.map((province, index) => ({ id: index, name: province.name, value: province.id, @@ -22,7 +22,7 @@ const useProvince = () => { setIsLoadingProvinceList(false) setErrorProvinceList(true) }) - },[]) + }, []) return { provinceList,