import React, { useEffect, useState } from "react"; import { useForm } from "react-hook-form"; import { zodResolver } from "@hookform/resolvers/zod"; import useMaster from "../../hooks/masterHook/useMaster"; import { useDispatch } from "react-redux"; import { changeMaster } from "../../slices/localVariablesSlice"; import { Link, useNavigate, useParams } from "react-router-dom"; import { formatDate } from "../../utils/dateUtils"; import { useEmployeeProfile, useUpdateEmployee, } from "../../hooks/useEmployees"; import Label from "../common/Label"; import DatePicker from "../common/DatePicker"; import { defatEmployeeObj, employeeSchema } from "./EmployeeSchema"; // import { useOrganizationsList } from "../../hooks/useOrganization"; import { ITEMS_PER_PAGE } from "../../utils/constants"; const ManageEmployee = ({ employeeId, onClosed, IsAllEmployee }) => { const dispatch = useDispatch(); const { mutate: updateEmployee, isPending } = useUpdateEmployee(); // const { // data: organzationList, // isLoading, // isError, // error: EempError, // } = useOrganizationsList(ITEMS_PER_PAGE, 1, true); const { employee, error, loading: empLoading, refetch, } = useEmployeeProfile(employeeId); useEffect(() => { dispatch(changeMaster("Job Role")); }, [employeeId]); const [disabledEmail, setDisabledEmail] = useState(false); const { data: job_role, loading } = useMaster(); const [isloading, setLoading] = useState(false); const navigation = useNavigate(); const [currentEmployee, setCurrentEmployee] = useState(null); const [currentAddressLength, setCurrentAddressLength] = useState(0); const [permanentAddressLength, setPermanentAddressLength] = useState(0); useEffect(() => { refetch(); }, []); const { register, control, handleSubmit, watch, formState: { errors }, reset, getValues, } = useForm({ resolver: zodResolver(employeeSchema), defaultValues: defatEmployeeObj, mode: "onChange", }); const AadharNumberValue = watch("aadharNumber") || ""; const onSubmit = (data) => { if (data.email === "") { data.email = null; } const payload = { ...data, IsAllEmployee }; if (employeeId) { payload.id = employeeId; } updateEmployee(payload, { onSuccess: () => { reset(); onClosed(); }, }); }; useEffect(() => { if (!loading && !error && employee) { setCurrentEmployee(employee); } }, [loading, error, employee]); useEffect(() => { reset( currentEmployee ? { id: currentEmployee.id || null, firstName: currentEmployee.firstName || "", middleName: currentEmployee.middleName || "", lastName: currentEmployee.lastName || "", email: currentEmployee.email || "", currentAddress: currentEmployee.currentAddress || "", birthDate: formatDate(currentEmployee.birthDate) || "", joiningDate: formatDate(currentEmployee.joiningDate) || "", emergencyPhoneNumber: currentEmployee.emergencyPhoneNumber || "", emergencyContactPerson: currentEmployee.emergencyContactPerson || "", aadharNumber: currentEmployee.aadharNumber || "", gender: currentEmployee.gender || "", panNumber: currentEmployee.panNumber || "", permanentAddress: currentEmployee.permanentAddress || "", phoneNumber: currentEmployee.phoneNumber || "", jobRoleId: currentEmployee.jobRoleId?.toString() || "", // organizationId: currentEmployee.organizationId || "", // Hide temp. for version 1 hasApplicationAccess: currentEmployee.hasApplicationAccess || false, } : {} ); setCurrentAddressLength(currentEmployee?.currentAddress?.length || 0); setPermanentAddressLength(currentEmployee?.permanentAddress?.length || 0); }, [currentEmployee, reset]); const hasAccessAplication = watch("hasApplicationAccess"); return ( <>

{" "} {employee ? "Update Employee" : "Create Employee"}

{" "}
{ e.target.value = e.target.value.replace(/[^A-Za-z\s]/g, ""); }} /> {errors.firstName && (
{errors.firstName.message}
)}
Middle Name
{ e.target.value = e.target.value.replace(/[^A-Za-z\s]/g, ""); }} /> {errors.middleName && (
{errors.middleName.message}
)}
{ e.target.value = e.target.value.replace(/[^A-Za-z\s]/g, ""); }} /> {errors.lastName && (
{errors.lastName.message}
)}
{errors.email && (
{errors.email.message}
)}
{errors.phoneNumber && (
{errors.phoneNumber.message}
)}
{errors.gender && (
{errors.gender.message}
)}
{errors.birthDate && (
{errors.birthDate.message}
)}
{errors.joiningDate && (
{errors.joiningDate.message}
)}
{500 - currentAddressLength} characters left
{errors.currentAddress && (
{errors.currentAddress.message}
)}
{500 - permanentAddressLength} characters left
{errors.permanentAddress && (
{errors.permanentAddress.message}
)}
{/* -------------- Temp hide for Version---------------*/} {/*
{errors.organizationId && (
{errors.organizationId.message}
)}
*/} {/* --------------------------------------------------- */}
{/* --------------- */}
{" "}
Other Information
{errors.jobRoleId && (
{errors.jobRoleId.message}
)}
{errors.emergencyContactPerson && (
{errors.emergencyContactPerson.message}
)}
{errors.emergencyPhoneNumber && (
{errors.emergencyPhoneNumber.message}
)}
AADHAR Number
{errors.aadharNumber && (
{errors.aadharNumber.message}
)}
PAN Number
{errors.panNumber && (
{errors.panNumber.message}
)}
); }; export default ManageEmployee;