conditions changed in remarks
This commit is contained in:
parent
4db00f84fd
commit
465cc8f9b0
@ -139,6 +139,24 @@ const formatDate = (dateString) => {
|
|||||||
return `${day}/${month}/${year}`;
|
return `${day}/${month}/${year}`;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const extractIndustryCode = (value) => {
|
||||||
|
if (value === null || value === undefined) return '';
|
||||||
|
const normalized = String(value).trim();
|
||||||
|
if (!normalized) return '';
|
||||||
|
|
||||||
|
const leadingDigits = normalized.match(/^(\d+)/);
|
||||||
|
const beforeDash = normalized.split('-')[0]?.trim();
|
||||||
|
const rawCode = (leadingDigits?.[1] ?? beforeDash ?? normalized);
|
||||||
|
|
||||||
|
return String(rawCode).trim().replace(/^0+(?=\d)/, '');
|
||||||
|
};
|
||||||
|
|
||||||
|
const getIndustryCodeFromIsicSelection = (selectedValue, options = []) => {
|
||||||
|
if (selectedValue === null || selectedValue === undefined || selectedValue === '') return '';
|
||||||
|
const selected = options.find((opt) => String(opt?.value) === String(selectedValue));
|
||||||
|
return extractIndustryCode(selected?.label ?? selectedValue);
|
||||||
|
};
|
||||||
|
|
||||||
const createEmptyProfile = () => ({
|
const createEmptyProfile = () => ({
|
||||||
apiId: null,
|
apiId: null,
|
||||||
userProfileName: '',
|
userProfileName: '',
|
||||||
@ -1066,7 +1084,7 @@ const CompanyProfile = () => {
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{form.industryCodeProduction && form.industryCodeBusiness && form.industryCodeBusiness !== form.industryCodeProduction && (
|
{form.industryCodeProduction && form.industryCodeBusiness && extractIndustryCode(form.industryCodeBusiness) !== getIndustryCodeFromIsicSelection(form.industryCodeProduction, isicOptions) && (
|
||||||
<div className="mt-4 w-[calc(100%-1px)]">
|
<div className="mt-4 w-[calc(100%-1px)]">
|
||||||
<TextField
|
<TextField
|
||||||
label="Remarks"
|
label="Remarks"
|
||||||
|
|||||||
@ -65,33 +65,52 @@ const mapApiEstablishmentToProfile = (apiData) => {
|
|||||||
employmentNonEmiratiFemale: data.non_emirati_female || 0,
|
employmentNonEmiratiFemale: data.non_emirati_female || 0,
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
const computeEmploymentTotals = (data) => {
|
const computeEmploymentTotals = (data) => {
|
||||||
const emiratiMale = parseInt(data.employmentEmiratiMale) || 0;
|
const emiratiMale = parseInt(data.employmentEmiratiMale) || 0;
|
||||||
const nonEmiratiMale = parseInt(data.employmentNonEmiratiMale) || 0;
|
const nonEmiratiMale = parseInt(data.employmentNonEmiratiMale) || 0;
|
||||||
const emiratiFemale = parseInt(data.employmentEmiratiFemale) || 0;
|
const emiratiFemale = parseInt(data.employmentEmiratiFemale) || 0;
|
||||||
const nonEmiratiFemale = parseInt(data.employmentNonEmiratiFemale) || 0;
|
const nonEmiratiFemale = parseInt(data.employmentNonEmiratiFemale) || 0;
|
||||||
|
|
||||||
const totalEmployees = emiratiMale + nonEmiratiMale + emiratiFemale + nonEmiratiFemale;
|
const totalEmployees = emiratiMale + nonEmiratiMale + emiratiFemale + nonEmiratiFemale;
|
||||||
const totalEmirati = emiratiMale + emiratiFemale;
|
const totalEmirati = emiratiMale + emiratiFemale;
|
||||||
|
|
||||||
return {
|
return {
|
||||||
employmentTotalEmployees: totalEmployees,
|
employmentTotalEmployees: totalEmployees,
|
||||||
employmentTotalEmirati: totalEmirati
|
employmentTotalEmirati: totalEmirati
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const extractIndustryCode = (value) => {
|
||||||
|
if (value === null || value === undefined) return '';
|
||||||
|
const normalized = String(value).trim();
|
||||||
|
if (!normalized) return '';
|
||||||
|
|
||||||
|
const leadingDigits = normalized.match(/^(\d+)/);
|
||||||
|
const beforeDash = normalized.split('-')[0]?.trim();
|
||||||
|
const rawCode = (leadingDigits?.[1] ?? beforeDash ?? normalized);
|
||||||
|
|
||||||
|
return String(rawCode).trim().replace(/^0+(?=\d)/, '');
|
||||||
|
};
|
||||||
|
|
||||||
|
const getIndustryCodeFromIsicSelection = (selectedValue, options = []) => {
|
||||||
|
if (selectedValue === null || selectedValue === undefined || selectedValue === '') return '';
|
||||||
|
const selected = options.find((opt) => String(opt?.value) === String(selectedValue));
|
||||||
|
return extractIndustryCode(selected?.label ?? selectedValue);
|
||||||
|
};
|
||||||
|
|
||||||
const EditCompanyProfile = () => {
|
const EditCompanyProfile = () => {
|
||||||
const navigate = useNavigate();
|
const navigate = useNavigate();
|
||||||
const { id: establishmentId } = useParams();
|
const { id: establishmentId } = useParams();
|
||||||
const [loading, setLoading] = useState(false);
|
const [loading, setLoading] = useState(false);
|
||||||
const [form, setForm] = useState(createEmptyProfile());
|
const [form, setForm] = useState(createEmptyProfile());
|
||||||
|
|
||||||
const [activeStep, setActiveStep] = useState(0);
|
const [activeStep, setActiveStep] = useState(0);
|
||||||
const [fieldErrors, setFieldErrors] = useState({});
|
const [fieldErrors, setFieldErrors] = useState({});
|
||||||
const [passwordError, setPasswordError] = useState("");
|
const [passwordError, setPasswordError] = useState("");
|
||||||
const [confirmError, setConfirmError] = useState("");
|
const [confirmError, setConfirmError] = useState("");
|
||||||
const [passwordReuseError, setPasswordReuseError] = useState("");
|
const [passwordReuseError, setPasswordReuseError] = useState("");
|
||||||
|
|
||||||
const [emirateOptions, setEmirateOptions] = useState([]);
|
const [emirateOptions, setEmirateOptions] = useState([]);
|
||||||
const [emirateLookup, setEmirateLookup] = useState({});
|
const [emirateLookup, setEmirateLookup] = useState({});
|
||||||
const [contactCityOptions, setContactCityOptions] = useState([]);
|
const [contactCityOptions, setContactCityOptions] = useState([]);
|
||||||
@ -109,7 +128,7 @@ const EditCompanyProfile = () => {
|
|||||||
const [checkedProducts, setCheckedProducts] = useState(new Set());
|
const [checkedProducts, setCheckedProducts] = useState(new Set());
|
||||||
const initialSnapshotRef = useRef(null);
|
const initialSnapshotRef = useRef(null);
|
||||||
const productListRef = useRef(null);
|
const productListRef = useRef(null);
|
||||||
|
|
||||||
const formSteps = React.useMemo(
|
const formSteps = React.useMemo(
|
||||||
() => [
|
() => [
|
||||||
{ label: 'Profile' },
|
{ label: 'Profile' },
|
||||||
@ -120,7 +139,7 @@ const EditCompanyProfile = () => {
|
|||||||
],
|
],
|
||||||
[]
|
[]
|
||||||
);
|
);
|
||||||
|
|
||||||
const requiredFieldsByStep = React.useMemo(
|
const requiredFieldsByStep = React.useMemo(
|
||||||
() => ({
|
() => ({
|
||||||
0: [
|
0: [
|
||||||
@ -152,7 +171,7 @@ const EditCompanyProfile = () => {
|
|||||||
}),
|
}),
|
||||||
[]
|
[]
|
||||||
);
|
);
|
||||||
|
|
||||||
const validateStepFields = useCallback((stepIndex) => {
|
const validateStepFields = useCallback((stepIndex) => {
|
||||||
setPasswordReuseError("");
|
setPasswordReuseError("");
|
||||||
|
|
||||||
@ -184,7 +203,7 @@ const EditCompanyProfile = () => {
|
|||||||
});
|
});
|
||||||
return valid;
|
return valid;
|
||||||
}, [form, requiredFieldsByStep, selectedProducts, checkedProducts]);
|
}, [form, requiredFieldsByStep, selectedProducts, checkedProducts]);
|
||||||
|
|
||||||
const handleFormChange = useCallback((field, value) => {
|
const handleFormChange = useCallback((field, value) => {
|
||||||
// Clear remarks if either industry code field is changed
|
// Clear remarks if either industry code field is changed
|
||||||
if (field === 'industryCodeBusiness' || field === 'industryCodeCurrent') {
|
if (field === 'industryCodeBusiness' || field === 'industryCodeCurrent') {
|
||||||
@ -222,7 +241,7 @@ const EditCompanyProfile = () => {
|
|||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
}, [fieldErrors]);
|
}, [fieldErrors]);
|
||||||
|
|
||||||
const handleNext = useCallback(() => {
|
const handleNext = useCallback(() => {
|
||||||
if (validateStepFields(activeStep)) {
|
if (validateStepFields(activeStep)) {
|
||||||
if (activeStep < formSteps.length - 1) {
|
if (activeStep < formSteps.length - 1) {
|
||||||
@ -230,11 +249,11 @@ const EditCompanyProfile = () => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}, [activeStep, formSteps.length, validateStepFields]);
|
}, [activeStep, formSteps.length, validateStepFields]);
|
||||||
|
|
||||||
const handlePrev = useCallback(() => {
|
const handlePrev = useCallback(() => {
|
||||||
if (activeStep > 0) setActiveStep(activeStep - 1);
|
if (activeStep > 0) setActiveStep(activeStep - 1);
|
||||||
}, [activeStep]);
|
}, [activeStep]);
|
||||||
|
|
||||||
// Load cities based on selected emirate using your service function
|
// Load cities based on selected emirate using your service function
|
||||||
const loadCities = useCallback(async (emirateName) => {
|
const loadCities = useCallback(async (emirateName) => {
|
||||||
if (!emirateName) {
|
if (!emirateName) {
|
||||||
@ -262,7 +281,7 @@ const EditCompanyProfile = () => {
|
|||||||
setIsLoadingCities(false);
|
setIsLoadingCities(false);
|
||||||
}
|
}
|
||||||
}, [emirateOptions]);
|
}, [emirateOptions]);
|
||||||
|
|
||||||
// Load products and filter out selected ones
|
// Load products and filter out selected ones
|
||||||
const loadProducts = useCallback(async () => {
|
const loadProducts = useCallback(async () => {
|
||||||
try {
|
try {
|
||||||
@ -286,7 +305,7 @@ const EditCompanyProfile = () => {
|
|||||||
setIsLoadingProducts(false);
|
setIsLoadingProducts(false);
|
||||||
}
|
}
|
||||||
}, [selectedProducts]);
|
}, [selectedProducts]);
|
||||||
|
|
||||||
// Product search handler
|
// Product search handler
|
||||||
const handleProductSearch = (e) => {
|
const handleProductSearch = (e) => {
|
||||||
const searchTerm = e.target.value.toLowerCase();
|
const searchTerm = e.target.value.toLowerCase();
|
||||||
@ -935,7 +954,7 @@ const EditCompanyProfile = () => {
|
|||||||
rows={3}
|
rows={3}
|
||||||
/> */}
|
/> */}
|
||||||
</div>
|
</div>
|
||||||
{form.industryCodeBusiness && form.industryCodeBusiness !== form.industryCodeCurrent && (
|
{form.industryCodeBusiness && extractIndustryCode(form.industryCodeBusiness) !== getIndustryCodeFromIsicSelection(form.industryCodeCurrent, isicOptions) && (
|
||||||
<div className="col-span-full">
|
<div className="col-span-full">
|
||||||
<TextField
|
<TextField
|
||||||
label="Remarks"
|
label="Remarks"
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user