fixed bugs

This commit is contained in:
AmirHossein Mahmoodi
2025-02-25 14:59:01 +03:30
parent 46d5e7d2fe
commit 1d9d153657
25 changed files with 212 additions and 123 deletions

View File

@@ -0,0 +1,31 @@
import SelectBox from "@/core/components/SelectBox"
import useEdaratLists from "@/lib/hooks/useEdaratLists";
import { useEffect, useState } from "react";
const CityContent = ({ provinceID, field, fieldState: { error } }) => {
const { edaratList, loadingEdaratList, errorEdaratList } = useEdaratLists(provinceID);
const [prevDependency, setPrevDependency] = useState(provinceID);
useEffect(() => {
if (prevDependency === provinceID) return;
field.onChange(null)
setPrevDependency(provinceID);
}, [provinceID])
return (
<SelectBox
value={!provinceID ? 'dependency' : errorEdaratList ? "error" : loadingEdaratList ? 'loading' : field.value || ""}
label={"شهرستان"}
selectors={edaratList}
schema={{ name: "name_fa", value: "id" }}
error={error}
onChange={field.onChange}
helperText={error?.message}
isLoading={loadingEdaratList}
errorEcured={errorEdaratList}
isDependency={!provinceID}
dependencyLabel={"ابتدا استان را انتخاب کنید"}
/>
)
}
export default CityContent

View File

@@ -1,27 +1,15 @@
import SelectBox from "@/core/components/SelectBox";
import { Controller, useWatch } from "react-hook-form";
import useEdaratLists from "@/lib/hooks/useEdaratLists";
import { Controller, useWatch } from "react-hook-form";
import CityContent from "./CityContent";
const CityController = ({ control }) => {
const provinceID = useWatch({ control, name: "province_id" });
const { edaratList, loadingEdaratList, errorEdaratList } = useEdaratLists(provinceID);
return (
<Controller
name="city_id"
control={control}
render={({ field, fieldState: { error } }) => (
<SelectBox
value={!loadingEdaratList ? field.value || "" : ""}
label={provinceID ? "شهرستان" : "ابتدا استان را انتخاب کنید"}
selectors={edaratList}
schema={{ name: "name_fa", value: "id" }}
error={error}
onChange={field.onChange}
helperText={error?.message}
isLoading={loadingEdaratList}
errorEcured={errorEdaratList}
/>
)}
render={(props) => <CityContent provinceID={provinceID} {...props} />}
/>
);
};

View File

@@ -14,6 +14,7 @@ import DamageInfo from "./DamageInfo";
import KeyboardDoubleArrowLeftIcon from "@mui/icons-material/KeyboardDoubleArrowLeft";
import DamageReport from "./DamageReport";
import DamageItem from "./DamageItem";
import validateNationalCode from "@/core/utils/nationalCodeValidation";
function TabPanel(props) {
const { children, value, index } = props;
@@ -32,14 +33,12 @@ const validationSchema = object({
city_id: number().required("لطفا شهرستان را وارد کنید!!!"),
axis_name: string().required("لطفا نام محور را وارد کنید!!!"),
driver_name: string().required("لطفا نام و نام خانوادگی را وارد کنید!!!"),
phone_number: mixed()
.test("max", "تلفن همراه باید شامل 11 رقم باشد", (value) => {
const stringValue = String(value);
return stringValue.length === 11;
})
phone_number: string()
.matches(/^09\d{9}$/, "شماره موبایل باید با 09 شروع شده و 11 رقم باشد")
.required("لطفا تلفن همراه را وارد کنید!!!"),
national_code: mixed()
.test("max", "کد ملی باید شامل 10 رقم باشد", (value) => value.toString().length === 10)
.test("validation", "کد ملی صحیح نمی باشد", (value) => validateNationalCode(value))
.required("لطفا کد ملی را وارد کنید!!!"),
start_point: mixed()
.test("start-point-required", "لطفاً نقطه تصادف را مشخص کنید!", function (value) {

View File

@@ -8,6 +8,7 @@ import PlateNumber from "@/core/components/PlateNumber";
import ImageUpload from "./ImageUpload";
import MapInfoOneMarker from "@/core/components/MapInfoOneMarker";
import CityController from "@/components/dashboard/damages/operator/Actions/create/Forms/CityController";
import PersianTextField from "@/core/components/PersianTextField";
const DamageInfo = ({ control, setValue, errors }) => {
const StartPoint = useWatch({ control, name: "start_point" });
@@ -100,8 +101,8 @@ const DamageInfo = ({ control, setValue, errors }) => {
render={({ field, fieldState: { error } }) => {
return (
<SelectBox
value={!loadingProvinces ? field.value || "" : ""}
label="اداره کل(استان)"
value={errorProvinces ? "error" : loadingProvinces ? 'loading' : field.value || ""}
label="استان"
selectors={provinces}
schema={{ name: "name_fa", value: "id" }}
error={error}
@@ -122,17 +123,18 @@ const DamageInfo = ({ control, setValue, errors }) => {
name="axis_name"
control={control}
render={({ field, fieldState: { error } }) => (
<TextField
<PersianTextField
value={field.value}
variant="outlined"
name="axis_name"
onChange={field.onChange}
fieldOnChange={field.onChange}
label="نام محور"
placeholder={"نام محور را وارد کنید"}
placeholder={"نام محور فارسی را وارد کنید"}
fullWidth
size="small"
error={error}
helperText={error?.message}
InputLabelProps={{ shrink: true }}
/>
)}
/>
@@ -144,17 +146,18 @@ const DamageInfo = ({ control, setValue, errors }) => {
name="driver_name"
control={control}
render={({ field, fieldState: { error } }) => (
<TextField
<PersianTextField
value={field.value}
variant="outlined"
name="driver_name"
onChange={field.onChange}
fieldOnChange={field.onChange}
label="نام و نام خانوادگی راننده"
placeholder={"نام و نام خانوادگی راننده را وارد کنید"}
placeholder={"نام و نام خانوادگی فارسی را وارد کنید"}
fullWidth
size="small"
error={error}
helperText={error?.message}
InputLabelProps={{ shrink: true }}
/>
)}
/>

View File

@@ -45,7 +45,7 @@ const OperatorCreateForm = ({ open, setOpen, mutate }) => {
mutate();
setOpen(false);
})
.catch(() => {});
.catch(() => { });
};
const defaultData = {
accident_date: "",
@@ -74,12 +74,14 @@ const OperatorCreateForm = ({ open, setOpen, mutate }) => {
};
return (
<Dialog open={open} fullWidth maxWidth="md">
<CreateFormContent
defaultData={defaultData}
SubmitDamage={SubmitCreateDamage}
setOpen={setOpen}
mutate={mutate}
/>
{open && (
<CreateFormContent
defaultData={defaultData}
SubmitDamage={SubmitCreateDamage}
setOpen={setOpen}
mutate={mutate}
/>
)}
</Dialog>
);
};

View File

@@ -1,11 +1,11 @@
import { Box, Button, Chip, DialogActions, DialogContent, Divider, Grid, Typography } from "@mui/material";
import PaymentIcon from "@mui/icons-material/Payment";
import WebAssetIcon from "@mui/icons-material/WebAsset";
import RequestQuoteIcon from "@mui/icons-material/RequestQuote";
import ReceiptLongIcon from "@mui/icons-material/ReceiptLong";
import { useReducer, useState } from "react";
import { CHECK_PAYMENT_STATUS, CREATE_FACTOR_DAMAGE, SEND_SMS_AGAIN } from "@/core/utils/routes";
import useRequest from "@/lib/hooks/useRequest";
import PaymentIcon from "@mui/icons-material/Payment";
import ReceiptLongIcon from "@mui/icons-material/ReceiptLong";
import RequestQuoteIcon from "@mui/icons-material/RequestQuote";
import WebAssetIcon from "@mui/icons-material/WebAsset";
import { Alert, Box, Button, Chip, DialogActions, DialogContent, Divider, Grid, Stack, Typography } from "@mui/material";
import { useReducer, useState } from "react";
const initialState = {
submittingCreateFactor: false,
@@ -66,7 +66,7 @@ const CreateFactorContent = ({ row, mutate, rowId, setOpenCreateFactorDialog })
return (
<>
<DialogContent>
<DialogContent dividers>
<Grid container spacing={3} sx={{ alignItems: "center", justifyContent: "space-around" }}>
<Grid item xs={12} sm={12} sx={{ display: "flex", alignItems: "center" }}>
<Box sx={{ display: "flex", alignItems: "center" }}>
@@ -134,18 +134,14 @@ const CreateFactorContent = ({ row, mutate, rowId, setOpenCreateFactorDialog })
</Grid>
{!factorCreated && (
<Grid item xs={12}>
<Box sx={{ display: "flex", alignItems: "center", mt: 2 }}>
<Typography sx={{ color: "red", mr: 1 }}>*</Typography>
<Typography variant="body2" sx={{ color: "grey.700" }}>
پس از ایجاد فاکتور امکان تغییر در اطلاعات کاربر و مبالغ وجود نخواهد داشت.
</Typography>
</Box>
<Box sx={{ display: "flex", alignItems: "center", mt: 1 }}>
<Typography sx={{ color: "red", mr: 1 }}>*</Typography>
<Typography variant="body2" sx={{ color: "grey.700" }}>
لینک پرداخت فاکتور به شماره {row.original?.driver_phone_number} ارسال خواهد شد.
</Typography>
</Box>
<Stack spacing={1}>
<Alert severity="warning">
بعد از صدور فاکتور، ویرایش اطلاعات کاربر و مبالغ امکانپذیر نخواهد بود.
</Alert>
<Alert severity="info">
لینک پرداخت فاکتور به شماره {row.original?.driver_phone_number} ارسال می شود.
</Alert>
</Stack>
</Grid>
)}
</Grid>
@@ -197,7 +193,7 @@ const CreateFactorContent = ({ row, mutate, rowId, setOpenCreateFactorDialog })
color="primary"
disabled={state.submittingCreateFactor}
>
{state.submittingCreateFactor ? "درحال ایجاد فاکتور..." : "ایجاد فاکتور"}
{state.submittingCreateFactor ? "درحال صدور فاکتور..." : "صدور فاکتور"}
</Button>
</>
)}

View File

@@ -8,7 +8,7 @@ const CreateFactor = ({ row, rowId, mutate }) => {
return (
<>
<Tooltip title="ایجاد فاکتور">
<Tooltip title={row.original?.status == 2 ? "صدور فاکتور" : 'استعلام پرداخت'}>
<IconButton color="primary" onClick={() => setOpenCreateFactorDialog(true)}>
<ReceiptLongIcon />
</IconButton>
@@ -25,13 +25,15 @@ const CreateFactor = ({ row, rowId, mutate }) => {
maxWidth={"sm"}
scroll="paper"
>
<DialogTitle sx={{ fontSize: "large" }}>مدیریت پرداخت</DialogTitle>
<CreateFactorContent
setOpenCreateFactorDialog={setOpenCreateFactorDialog}
rowId={rowId}
mutate={mutate}
row={row}
/>
<DialogTitle sx={{ fontSize: "large" }}>{row.original?.status == 2 ? "صدور فاکتور" : 'استعلام پرداخت'}</DialogTitle>
{openCreateFactorDialog && (
<CreateFactorContent
setOpenCreateFactorDialog={setOpenCreateFactorDialog}
rowId={rowId}
mutate={mutate}
row={row}
/>
)}
</Dialog>
</>
);

View File

@@ -30,7 +30,7 @@ const DaghiPayment = ({ control }) => {
render={({ field }) => <Radio {...field} value="no_daghi" />}
/>
}
label="صورتجلسه تحویل داغی به انبار (بیمه) ندارد"
label="صورتجلسه تحویل داغی به انبار ندارد"
/>
<FormControlLabel
value="has_daghi"
@@ -41,7 +41,7 @@ const DaghiPayment = ({ control }) => {
render={({ field }) => <Radio {...field} value="has_daghi" />}
/>
}
label="صورتجلسه تحویل داغی به انبار (بیمه) دارد"
label="صورتجلسه تحویل داغی به انبار دارد"
/>
</Stack>
</RadioGroup>

View File

@@ -128,7 +128,7 @@ const RegisterInsuranceContent = ({ setOpenRegisterInsuranceDialog, row, mutate,
mutate();
setOpenRegisterInsuranceDialog(false);
})
.catch(() => {});
.catch(() => { });
};
return (
<StyledForm onSubmit={handleSubmit(onSubmitBase)}>
@@ -192,7 +192,7 @@ const RegisterInsuranceContent = ({ setOpenRegisterInsuranceDialog, row, mutate,
disabled={isSubmitting}
endIcon={<BeenhereIcon />}
>
{isSubmitting ? "در حال ثبت فیش" : "ثبت فیش"}
{isSubmitting ? "در حال ثبت" : "ثبت"}
</Button>
)}
</DialogActions>

View File

@@ -24,12 +24,14 @@ const RegisterInsurance = ({ row, mutate, rowId }) => {
maxWidth={"sm"}
scroll="paper"
>
<RegisterInsuranceContent
rowId={rowId}
mutate={mutate}
row={row}
setOpenRegisterInsuranceDialog={setOpenRegisterInsuranceDialog}
/>
{openRegisterInsuranceDialog && (
<RegisterInsuranceContent
rowId={rowId}
mutate={mutate}
row={row}
setOpenRegisterInsuranceDialog={setOpenRegisterInsuranceDialog}
/>
)}
</Dialog>
</>
);

View File

@@ -127,8 +127,8 @@ const OperatorList = () => {
props.dependencyFieldValue?.value === ""
? "empty"
: loadingEdaratList
? "loading"
: props.filterParameters.value
? "loading"
: props.filterParameters.value
}
columnSelectOption={getColumnSelectOptions}
/>
@@ -361,7 +361,7 @@ const OperatorList = () => {
},
{
accessorKey: "status",
header: "اخرین وضعیت",
header: "وضعیت",
id: "status",
enableColumnFilter: true,
datatype: "numeric",

View File

@@ -24,7 +24,9 @@ const DeleteDialog = ({ rowId, mutate }) => {
maxWidth={"md"}
>
<DialogTitle>حذف فعالیت</DialogTitle>
<DeleteContent rowId={rowId} mutate={mutate} setOpenDeleteDialog={setOpenDeleteDialog} />
{openDeleteDialog && (
<DeleteContent rowId={rowId} mutate={mutate} setOpenDeleteDialog={setOpenDeleteDialog} />
)}
</Dialog>
</>
);

View File

@@ -26,12 +26,12 @@ const ImageDialog = ({ images }) => {
scroll="paper"
>
<DialogTitle sx={{ fontSize: "large" }}>تصاویر</DialogTitle>
<DialogContent>
<Paper elevation={0}>
{openImageDialog && (
<DialogContent>
<ImageFormContent image={images[1]} title={"تصویر تصادف"} />
<ImageFormContent image={images[0]} title={"تصویر تصادف"} />
</Paper>
</DialogContent>
</DialogContent>
)}
<DialogActions>
<Button onClick={() => setOpenImageDialog(false)} variant="outlined" color="secondary">
بستن

View File

@@ -24,13 +24,15 @@ const LocationForm = ({ start_lat, start_lng, end_lat, end_lng }) => {
maxWidth={"md"}
>
<DialogTitle>موقعیت</DialogTitle>
<LocationFormContent
start_lat={start_lat}
start_lng={start_lng}
end_lat={end_lat}
end_lng={end_lng}
setOpenLocationDialog={setOpenLocationDialog}
/>
{openLocationDialog && (
<LocationFormContent
start_lat={start_lat}
start_lng={start_lng}
end_lat={end_lat}
end_lng={end_lng}
setOpenLocationDialog={setOpenLocationDialog}
/>
)}
</Dialog>
</>
);

View File

@@ -1,18 +1,17 @@
import { Button, DialogActions, DialogContent, Stack, Typography } from "@mui/material";
import React, { useState } from "react";
import useRequest from "@/lib/hooks/useRequest";
import { GET_POLICERAH_PAGE } from "@/core/utils/routes";
import { GET_POLICERAH, GET_POLICERAH_PAGE } from "@/core/utils/routes";
const PoliceRahLetterContent = ({ setOpenPoliceRahDialog, rowId, mutate }) => {
const [submitting, setSubmitting] = useState(false);
const requestServer = useRequest({ notificationSuccess: true });
const requestServer = useRequest();
const handleClick = () => {
setSubmitting(true);
const url = `https://rms.witel.ir/v2/receipt/document-release/${rowId}`;
requestServer(`${GET_POLICERAH_PAGE}/${rowId}`, "get")
requestServer(`${GET_POLICERAH}/${rowId}`, "get")
.then(() => {
mutate();
window.open(url, "_blank");
window.open(`${GET_POLICERAH_PAGE}/${rowId}`, "_blank");
setSubmitting(false);
setOpenPoliceRahDialog(false);
})

View File

@@ -24,7 +24,9 @@ const PoliceRahLetter = ({ rowId, mutate }) => {
scroll="paper"
>
<DialogTitle sx={{ fontSize: "large" }}>صدور نامه پلیس راه</DialogTitle>
<PoliceRahLetterContent mutate={mutate} rowId={rowId} setOpenPoliceRahDialog={setOpenPoliceRahDialog} />
{openPoliceRahDialog && (
<PoliceRahLetterContent mutate={mutate} rowId={rowId} setOpenPoliceRahDialog={setOpenPoliceRahDialog} />
)}
</Dialog>
</>
);

View File

@@ -1,18 +1,17 @@
import { Button, DialogActions, DialogContent, Stack, Typography } from "@mui/material";
import React, { useState } from "react";
import useRequest from "@/lib/hooks/useRequest";
import { GET_INSURANCE_PAGE } from "@/core/utils/routes";
import { GET_INSURANCE, GET_INSURANCE_PAGE } from "@/core/utils/routes";
const SendToInsuranceContent = ({ setOpenSendInsuranceDialog, rowId, mutate }) => {
const [submitting, setSubmitting] = useState(false);
const requestServer = useRequest({ notificationSuccess: true });
const requestServer = useRequest();
const handleClick = () => {
setSubmitting(true);
const url = `https://rms.witel.ir/v2/receipt/send-to-insurance/${rowId}`;
requestServer(`${GET_INSURANCE_PAGE}/${rowId}`, "get")
requestServer(`${GET_INSURANCE}/${rowId}`, "get")
.then(() => {
mutate();
window.open(url, "_blank");
window.open(`${GET_INSURANCE_PAGE}/${rowId}`, "_blank");
setSubmitting(false);
setOpenSendInsuranceDialog(false);
})

View File

@@ -24,11 +24,13 @@ const SendToInsurance = ({ rowId, mutate }) => {
scroll="paper"
>
<DialogTitle sx={{ fontSize: "large" }}>نامه بیمه</DialogTitle>
<SendToInsuranceContent
mutate={mutate}
rowId={rowId}
setOpenSendInsuranceDialog={setOpenSendInsuranceDialog}
/>
{openSendInsuranceDialog && (
<SendToInsuranceContent
mutate={mutate}
rowId={rowId}
setOpenSendInsuranceDialog={setOpenSendInsuranceDialog}
/>
)}
</Dialog>
</>
);

View File

@@ -5,22 +5,28 @@ import DeleteDialog from "./DeleteDialog";
import SendToInsurance from "./SendToInsurance";
import PoliceRahLetter from "./PoliceRahLetter";
import EditForm from "../Form/EditForm";
import { usePermissions } from "@/lib/hooks/usePermissions";
const RowActions = ({ row, mutate }) => {
const { data: userPermissions } = usePermissions();
const hasDeletePermission = userPermissions.some(item => ['delete-receipt', 'delete-receipt-province'].includes(item))
const hasEditPermission = userPermissions.some(item => ['edit-receipt', 'edit-receipt-province'].includes(item))
return (
<Box sx={{ display: "flex", gap: 1 }}>
{[0, 1, 2].includes(row.original?.status) && <SendToInsurance mutate={mutate} rowId={row.getValue("id")} />}
{[1, 2].includes(row.original?.status) && (
<RegisterInsurance mutate={mutate} row={row} rowId={row.getValue("id")} />
)}
{[4, 5].includes(row.original?.status) && <PoliceRahLetter mutate={mutate} rowId={row.getValue("id")} />}
{[2, 3].includes(row.original?.status) && (
<CreateFactor row={row} rowId={row.getValue("id")} mutate={mutate} />
)}
{[4, 5].includes(row.original?.status) && <PoliceRahLetter mutate={mutate} rowId={row.getValue("id")} />}
{[0, 1, 2].includes(row.original?.status) && (
{[1, 2].includes(row.original?.status) && (
<RegisterInsurance mutate={mutate} row={row} rowId={row.getValue("id")} />
)}
{[0, 1, 2].includes(row.original?.status) && <SendToInsurance mutate={mutate} rowId={row.getValue("id")} />}
{hasEditPermission && [0, 1, 2].includes(row.original?.status) && (
<EditForm row={row} mutate={mutate} rowId={row.getValue("id")} />
)}
<DeleteDialog mutate={mutate} rowId={row.getValue("id")} />
{hasDeletePermission && (
<DeleteDialog mutate={mutate} rowId={row.getValue("id")} />
)}
</Box>
);
};

View File

@@ -1,12 +1,17 @@
import { Box } from "@mui/material";
import OperatorCreate from "./Actions/create";
import PrintExcel from "./ExcelPrint";
import { usePermissions } from "@/lib/hooks/usePermissions";
const Toolbar = ({ table, filterData, mutate }) => {
const { data: userPermissions } = usePermissions();
const hasAddPermission = userPermissions.some(item => ['add-receipt', 'add-receipt-province'].includes(item))
return (
<Box sx={{ display: "flex", gap: 1 }}>
<PrintExcel table={table} filterData={filterData} />
<OperatorCreate mutate={mutate} />
{hasAddPermission && (
<OperatorCreate mutate={mutate} />
)}
</Box>
);
};

View File

@@ -1,9 +1,9 @@
import { GET_CMMS_MACHINE_ROAD_ITEM, UPDATE_ROAD_ITEMS } from "@/core/utils/routes";
import { Dialog, DialogTitle, Typography } from "@mui/material";
import EditFormContent from "./EditFormContent";
import useRequest from "@/lib/hooks/useRequest";
import { useEffect, useState } from "react";
import DialogLoading from "@/core/components/DialogLoading";
import { GET_CMMS_MACHINE_ROAD_ITEM, GET_IMAGES_ROAD_ITEM, GET_RAHDARAN_ROAD_ITEM, UPDATE_ROAD_ITEMS } from "@/core/utils/routes";
import useRequest from "@/lib/hooks/useRequest";
import { Typography } from "@mui/material";
import { useEffect, useState } from "react";
import EditFormContent from "./EditFormContent";
const EditController = ({ rowId, mutate, setOpenEditDialog, openEditDialog, row }) => {
const requestServer = useRequest();
@@ -76,7 +76,7 @@ const EditController = ({ rowId, mutate, setOpenEditDialog, openEditDialog, row
mutate();
setOpenEditDialog(false);
})
.catch((error) => {});
.catch((error) => { });
};
return loadingImages || loadingCmmsMachine || loadingRahdaran ? (

View File

@@ -0,0 +1,23 @@
import usePersianInput from "@/lib/hooks/usePersianInput";
import { TextField } from "@mui/material";
import { useRef } from "react";
const PersianTextField = (props) => {
const { fieldOnChange, ...rest } = props;
const inputRef = useRef(null);
const handleChange = (value) => {
fieldOnChange(value);
}
usePersianInput(inputRef, handleChange);
return (
<TextField
ref={inputRef}
{...rest}
/>
);
};
export default PersianTextField

View File

@@ -4,6 +4,8 @@ function SelectBox({
name,
value,
onChange,
isDependency = false,
dependencyLabel = '',
onBlur,
selectors,
label,
@@ -28,10 +30,12 @@ function SelectBox({
}}
onBlur={onBlur}
>
{isLoading ? (
<MenuItem sx={{ color: "primary.main" }}>درحال دریافت اطلاعات...</MenuItem>
{isDependency ? (
<MenuItem value={'dependency'} sx={{ color: "primary.main" }}>{dependencyLabel}</MenuItem>
) : isLoading ? (
<MenuItem value={'loading'} sx={{ color: "primary.main" }}>درحال دریافت اطلاعات...</MenuItem>
) : errorEcured ? (
<MenuItem sx={{ color: "secondary.main" }}>خطا در دریافت اطلاعات!!!</MenuItem>
<MenuItem value={'error'} sx={{ color: "secondary.main" }}>خطا در دریافت اطلاعات!!!</MenuItem>
) : (
selectors.map((selector) => {
return (

View File

@@ -0,0 +1,20 @@
function validateNationalCode(code) {
const invalidCodes = ["1111111111", "2222222222", "3333333333", "4444444444", "5555555555", "6666666666", "7777777777", "8888888888", "9999999999"];
if (invalidCodes.includes(code)) return false;
const L = code.length;
if (L < 8 || parseInt(code, 10) === 0) return false;
code = code.padStart(10, '0');
if (parseInt(code.substr(3, 6), 10) === 0) return false;
const c = parseInt(code.charAt(9), 10);
let s = 0;
for (let i = 0; i < 9; i++) {
s += parseInt(code.charAt(i), 10) * (10 - i);
}
s = s % 11;
return (s < 2 && c === s) || (s >= 2 && c === (11 - s));
}
export default validateNationalCode;

View File

@@ -97,8 +97,10 @@ export const SEND_SMS_AGAIN = api + "/api/v3/receipts/send_sms_again";
export const EXPORT_DAMAGES_OPERATOR_LIST = api + "/api/v3/receipts/excel_report";
export const GET_DAMAGE_ITEM_DETAILS = api + "/api/v3/receipts";
export const UPDATE_DAMAGE_ITEM = api + "/api/v3/receipts";
export const GET_INSURANCE_PAGE = api + "/api/v3/receipts/generate_insurance_letter";
export const GET_POLICERAH_PAGE = api + "/api/v3/receipts/generate_police_document";
export const GET_INSURANCE = api + "/api/v3/receipts/generate_insurance_letter";
export const GET_INSURANCE_PAGE = api + "/v2/receipt/send-to-insurance";
export const GET_POLICERAH = api + "/api/v3/receipts/generate_insurance_letter";
export const GET_POLICERAH_PAGE = api + "/v2/receipt/document-release";
// recept report
export const GET_COUNTRY_RECEIPT_REPORT = api + "/api/v3/receipt_reports/country_report";