Compare commits
No commits in common. "9b2c27b9036ff6f7e30fe4d1f7bcdf161435a61a" and "b39effe4b012f26473d1de2b1af1b8a8c97594da" have entirely different histories.
9b2c27b903
...
b39effe4b0
@ -13,7 +13,7 @@ import {useHasUserPermission} from "../../hooks/useHasUserPermission";
|
||||
import {MANAGE_PROJECT_INFRA} from "../../utils/constants";
|
||||
import {useDispatch, useSelector} from "react-redux";
|
||||
import {useProfile} from "../../hooks/useProfile";
|
||||
import {refreshData, setProjectId} from "../../slices/localVariablesSlice";
|
||||
import {setProjectId} from "../../slices/localVariablesSlice";
|
||||
import InfraTable from "../Project/Infrastructure/InfraTable";
|
||||
|
||||
|
||||
@ -25,23 +25,11 @@ const InfraPlanning = () =>
|
||||
|
||||
const selectedProject = useSelector((store)=>store.localVariables.projectId)
|
||||
const ManageInfra = useHasUserPermission( MANAGE_PROJECT_INFRA )
|
||||
const {projects_Details, loading: project_deatilsLoader, error: project_error,refetch} = useProjectDetails( selectedProject )
|
||||
const reloadedData = useSelector( ( store ) => store.localVariables.reload )
|
||||
|
||||
const {projects_Details, loading: project_deatilsLoader, error: project_error} = useProjectDetails(selectedProject)
|
||||
useEffect( () =>
|
||||
{
|
||||
dispatch(setProjectId(projects[0]?.id))
|
||||
}, [ projects ] )
|
||||
|
||||
useEffect( () =>
|
||||
{
|
||||
if (reloadedData)
|
||||
{
|
||||
refetch()
|
||||
dispatch( refreshData( false ) )
|
||||
}
|
||||
|
||||
},[reloadedData])
|
||||
},[projects])
|
||||
|
||||
return (
|
||||
<div className="col-md-12 col-lg-12 col-xl-12 order-0 mb-4">
|
||||
|
||||
@ -33,7 +33,7 @@ const ManageEmployee = ({ employeeId, onClosed }) => {
|
||||
const { data: job_role, loading } = useMaster();
|
||||
const [isloading, setLoading] = useState(false);
|
||||
const navigation = useNavigate();
|
||||
const [currentEmployee, setCurrentEmployee] = useState(null);
|
||||
const [currentEmployee, setCurrentEmployee] = useState();
|
||||
const [currentAddressLength, setCurrentAddressLength] = useState(0);
|
||||
const [permanentAddressLength, setPermanentAddressLength] = useState(0);
|
||||
|
||||
@ -157,30 +157,22 @@ const ManageEmployee = ({ employeeId, onClosed }) => {
|
||||
mode: "onChange",
|
||||
});
|
||||
|
||||
const AadharNumberValue = watch("aadharNumber") || "";
|
||||
const AadharNumberValue = watch("AadharNumber") || "";
|
||||
|
||||
const onSubmit = (data) => {
|
||||
setLoading(true);
|
||||
if (data.email == "") {
|
||||
data.email = null;
|
||||
}
|
||||
|
||||
console.log(data);
|
||||
EmployeeRepository.manageEmployee(data)
|
||||
.then((response) => {
|
||||
showToast(
|
||||
`Employee details ${
|
||||
data.id == null ? "created" : "updated"
|
||||
} successfully.`,
|
||||
"success"
|
||||
);
|
||||
showToast("Employee details updated successfully.", "success");
|
||||
clearCacheKey("employeeListByProject");
|
||||
clearCacheKey("allEmployeeList");
|
||||
clearCacheKey("allInactiveEmployeeList");
|
||||
clearCacheKey("employeeProfile");
|
||||
|
||||
setLoading(false);
|
||||
reset();
|
||||
// navigation("/employees");
|
||||
onClosed();
|
||||
navigation("/employees");
|
||||
})
|
||||
.catch((error) => {
|
||||
const message =
|
||||
@ -240,7 +232,7 @@ const ManageEmployee = ({ employeeId, onClosed }) => {
|
||||
className="cursor-pointer fs-6"
|
||||
onClick={() => onClosed()}
|
||||
>
|
||||
<i className="bx bx-x"></i>
|
||||
<i className='bx bx-x'></i>
|
||||
</span>
|
||||
</div>
|
||||
<div className="card-body">
|
||||
@ -258,15 +250,15 @@ const ManageEmployee = ({ employeeId, onClosed }) => {
|
||||
name="FirstName"
|
||||
{...register("firstName")}
|
||||
className="form-control form-control-sm"
|
||||
id="firstName"
|
||||
id="FirstName"
|
||||
placeholder="First Name"
|
||||
/>
|
||||
{errors.firstName && (
|
||||
{errors.FirstName && (
|
||||
<div
|
||||
className="danger-text text-start"
|
||||
style={{ fontSize: "12px" }}
|
||||
>
|
||||
{errors.firstName.message}
|
||||
{errors.FirstName.message}
|
||||
</div>
|
||||
)}
|
||||
</div>{" "}
|
||||
@ -277,15 +269,15 @@ const ManageEmployee = ({ employeeId, onClosed }) => {
|
||||
type="text"
|
||||
{...register("middleName")}
|
||||
className="form-control form-control-sm"
|
||||
id="middleName"
|
||||
id="MiddleName"
|
||||
placeholder="Middle Name"
|
||||
/>
|
||||
{errors.middleName && (
|
||||
{errors.MiddleName && (
|
||||
<div
|
||||
className="danger-text text-start "
|
||||
style={{ fontSize: "12px" }}
|
||||
>
|
||||
{errors.middleName.message}
|
||||
{errors.MiddleName.message}
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
@ -295,15 +287,15 @@ const ManageEmployee = ({ employeeId, onClosed }) => {
|
||||
type="text"
|
||||
{...register("lastName")}
|
||||
className="form-control form-control-sm"
|
||||
id="lastName"
|
||||
id="LastName"
|
||||
placeholder="Last Name"
|
||||
/>
|
||||
{errors.lastName && (
|
||||
{errors.LastName && (
|
||||
<div
|
||||
className="danger-text text-start"
|
||||
style={{ fontSize: "12px" }}
|
||||
>
|
||||
{errors.lastName.message}
|
||||
{errors.LastName.message}
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
@ -313,7 +305,7 @@ const ManageEmployee = ({ employeeId, onClosed }) => {
|
||||
<div className="form-text text-start">Email</div>
|
||||
<input
|
||||
type="email"
|
||||
id="email"
|
||||
id="Email"
|
||||
{...register("email")}
|
||||
className="form-control form-control-sm"
|
||||
placeholder="example@domain.com"
|
||||
@ -321,12 +313,12 @@ const ManageEmployee = ({ employeeId, onClosed }) => {
|
||||
aria-describedby="Email"
|
||||
disabled={!!currentEmployee?.email}
|
||||
/>
|
||||
{errors.email && (
|
||||
{errors.Email && (
|
||||
<div
|
||||
className="danger-text text-start"
|
||||
style={{ fontSize: "12px" }}
|
||||
>
|
||||
{errors.email.message}
|
||||
{errors.Email.message}
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
@ -335,19 +327,19 @@ const ManageEmployee = ({ employeeId, onClosed }) => {
|
||||
<input
|
||||
type="text"
|
||||
keyboardType="numeric"
|
||||
id="phoneNumber"
|
||||
id="PhoneNumber"
|
||||
{...register("phoneNumber")}
|
||||
className="form-control form-control-sm"
|
||||
placeholder="Phone Number"
|
||||
inputMode="numeric"
|
||||
maxLength={10}
|
||||
/>
|
||||
{errors.phoneNumber && (
|
||||
{errors.PhoneNumber && (
|
||||
<div
|
||||
className="danger-text text-start"
|
||||
style={{ fontSize: "12px" }}
|
||||
>
|
||||
{errors.phoneNumber.message}
|
||||
{errors.PhoneNumber.message}
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
@ -361,7 +353,7 @@ const ManageEmployee = ({ employeeId, onClosed }) => {
|
||||
<select
|
||||
className="form-select form-select-sm "
|
||||
{...register("gender")}
|
||||
id="gender"
|
||||
id="Gender"
|
||||
aria-label=""
|
||||
>
|
||||
<option disabled value="">
|
||||
@ -372,12 +364,12 @@ const ManageEmployee = ({ employeeId, onClosed }) => {
|
||||
<option value="Other">Other</option>
|
||||
</select>
|
||||
</div>
|
||||
{errors.gender && (
|
||||
{errors.Gender && (
|
||||
<div
|
||||
className="danger-text text-start"
|
||||
style={{ fontSize: "12px" }}
|
||||
>
|
||||
{errors.gender.message}
|
||||
{errors.Gender.message}
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
@ -389,15 +381,15 @@ const ManageEmployee = ({ employeeId, onClosed }) => {
|
||||
className="form-control form-control-sm"
|
||||
type="date"
|
||||
{...register("birthDate")}
|
||||
id="birthDate"
|
||||
id="BirthDate"
|
||||
/>
|
||||
</div>
|
||||
{errors.birthDate && (
|
||||
{errors.BirthDate && (
|
||||
<div
|
||||
className="danger-text text-start"
|
||||
style={{ fontSize: "12px" }}
|
||||
>
|
||||
{errors.birthDate.message}
|
||||
{errors.BirthDate.message}
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
@ -409,15 +401,15 @@ const ManageEmployee = ({ employeeId, onClosed }) => {
|
||||
className="form-control form-control-sm"
|
||||
type="date"
|
||||
{...register("joiningDate")}
|
||||
id="joiningDate"
|
||||
id="JoiningDate"
|
||||
/>
|
||||
</div>
|
||||
{errors.joiningDate && (
|
||||
{errors.JoiningDate && (
|
||||
<div
|
||||
className="danger-text text-start"
|
||||
style={{ fontSize: "12px" }}
|
||||
>
|
||||
{errors.joiningDate.message}
|
||||
{errors.JoiningDate.message}
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
@ -427,7 +419,7 @@ const ManageEmployee = ({ employeeId, onClosed }) => {
|
||||
<div className="form-text text-start">Current Address</div>
|
||||
|
||||
<textarea
|
||||
id="currentAddress"
|
||||
id="CurrentAddress"
|
||||
className="form-control form-control-sm"
|
||||
placeholder="Current Address"
|
||||
aria-label="Current Address"
|
||||
@ -437,7 +429,7 @@ const ManageEmployee = ({ employeeId, onClosed }) => {
|
||||
onChange={(e) => {
|
||||
setCurrentAddressLength(e.target.value.length);
|
||||
// let react-hook-form still handle it
|
||||
register("currentAddress").onChange(e);
|
||||
register("CurrentAddress").onChange(e);
|
||||
}}
|
||||
></textarea>
|
||||
<div className="text-end muted">
|
||||
@ -446,12 +438,12 @@ const ManageEmployee = ({ employeeId, onClosed }) => {
|
||||
{500 - currentAddressLength} characters left
|
||||
</small>
|
||||
</div>
|
||||
{errors.currentAddress && (
|
||||
{errors.CurrentAddress && (
|
||||
<div
|
||||
className="danger-text text-start"
|
||||
style={{ fontSize: "12px" }}
|
||||
>
|
||||
{errors.currentAddress.message}
|
||||
{errors.CurrentAddress.message}
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
@ -461,7 +453,7 @@ const ManageEmployee = ({ employeeId, onClosed }) => {
|
||||
</div>
|
||||
|
||||
<textarea
|
||||
id="permanentAddress"
|
||||
id="PermanentAddress"
|
||||
className="form-control form-control-sm"
|
||||
placeholder="Permanent Address"
|
||||
aria-label="Permanent Address"
|
||||
@ -470,7 +462,7 @@ const ManageEmployee = ({ employeeId, onClosed }) => {
|
||||
maxLength={500}
|
||||
onChange={(e) => {
|
||||
setPermanentAddressLength(e.target.value.length);
|
||||
register("permanentAddress").onChange(e);
|
||||
register("PermanentAddress").onChange(e);
|
||||
}}
|
||||
></textarea>
|
||||
<div className="text-end muted">
|
||||
@ -478,12 +470,12 @@ const ManageEmployee = ({ employeeId, onClosed }) => {
|
||||
{500 - permanentAddressLength} characters left
|
||||
</small>
|
||||
</div>
|
||||
{errors.permanentAddress && (
|
||||
{errors.PermanentAddress && (
|
||||
<div
|
||||
className="danger-text text-start"
|
||||
style={{ fontSize: "12px" }}
|
||||
>
|
||||
{errors.permanentAddress.message}
|
||||
{errors.PermanentAddress.message}
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
@ -501,7 +493,7 @@ const ManageEmployee = ({ employeeId, onClosed }) => {
|
||||
<select
|
||||
className="form-select form-select-sm"
|
||||
{...register("jobRoleId")}
|
||||
id="jobRoleId"
|
||||
id="JobRoleId"
|
||||
aria-label=""
|
||||
>
|
||||
<option disabled value="">
|
||||
@ -514,12 +506,12 @@ const ManageEmployee = ({ employeeId, onClosed }) => {
|
||||
))}
|
||||
</select>
|
||||
</div>
|
||||
{errors.jobRoleId && (
|
||||
{errors.JobRoleId && (
|
||||
<div
|
||||
className="danger-text text-start"
|
||||
style={{ fontSize: "12px" }}
|
||||
>
|
||||
{errors.jobRoleId.message}
|
||||
{errors.JobRoleId.message}
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
@ -531,16 +523,16 @@ const ManageEmployee = ({ employeeId, onClosed }) => {
|
||||
type="text"
|
||||
{...register("emergencyContactPerson")}
|
||||
className="form-control form-control-sm"
|
||||
id="emergencyContactPerson"
|
||||
id="EmergencyContactPerson"
|
||||
maxLength={50}
|
||||
placeholder="Contact Person"
|
||||
/>
|
||||
{errors.emergencyContactPerson && (
|
||||
{errors.EmergencyContactPerson && (
|
||||
<div
|
||||
className="danger-text text-start"
|
||||
style={{ fontSize: "12px" }}
|
||||
>
|
||||
{errors.emergencyContactPerson.message}
|
||||
{errors.EmergencyContactPerson.message}
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
@ -552,17 +544,17 @@ const ManageEmployee = ({ employeeId, onClosed }) => {
|
||||
type="text"
|
||||
{...register("emergencyPhoneNumber")}
|
||||
className="form-control form-control-sm phone-mask"
|
||||
id="emergencyPhoneNumber"
|
||||
id="EmergencyPhoneNumber"
|
||||
placeholder="Phone Number"
|
||||
inputMode="numeric"
|
||||
maxLength={10}
|
||||
/>
|
||||
{errors.emergencyPhoneNumber && (
|
||||
{errors.EmergencyPhoneNumber && (
|
||||
<div
|
||||
className="danger-text text-start"
|
||||
style={{ fontSize: "12px" }}
|
||||
>
|
||||
{errors.emergencyPhoneNumber.message}
|
||||
{errors.EmergencyPhoneNumber.message}
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
@ -575,14 +567,14 @@ const ManageEmployee = ({ employeeId, onClosed }) => {
|
||||
type="text"
|
||||
{...register("aadharNumber")}
|
||||
className="form-control form-control-sm"
|
||||
id="aadharNumber"
|
||||
id="AadharNumber"
|
||||
placeholder="AADHAR Number"
|
||||
maxLength={12}
|
||||
inputMode="numeric"
|
||||
/>
|
||||
{errors.aadharNumber && (
|
||||
{errors.AadharNumber && (
|
||||
<div className="danger-text text-start">
|
||||
{errors.aadharNumber.message}
|
||||
{errors.AadharNumber.message}
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
@ -593,16 +585,16 @@ const ManageEmployee = ({ employeeId, onClosed }) => {
|
||||
type="text"
|
||||
{...register("panNumber")}
|
||||
className="form-control form-control-sm"
|
||||
id="panNumber"
|
||||
id="PanNumber"
|
||||
placeholder="PAN Number"
|
||||
maxLength={10}
|
||||
/>
|
||||
{errors.panNumber && (
|
||||
{errors.PanNumber && (
|
||||
<div
|
||||
className="danger-text text-start"
|
||||
style={{ fontSize: "12px" }}
|
||||
>
|
||||
{errors.panNumber.message}
|
||||
{errors.PanNumber.message}
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
|
||||
@ -88,9 +88,7 @@ const EditActivityModal = ({
|
||||
setValue("workCategoryId", selectedId);
|
||||
};
|
||||
|
||||
const onSubmitForm = async ( data ) =>
|
||||
{
|
||||
setIsSubmitting(true)
|
||||
const onSubmitForm = async (data) => {
|
||||
const updatedProject = { ...projects_Details };
|
||||
const finalData = {
|
||||
...data,
|
||||
@ -155,18 +153,14 @@ const EditActivityModal = ({
|
||||
data: newProject,
|
||||
});
|
||||
resetForm();
|
||||
dispatch( refreshData( true ) );
|
||||
setIsSubmitting(false)
|
||||
showToast("Activity Updated Successfully","success")
|
||||
dispatch(refreshData(true));
|
||||
showToast("Activity Updated Successfully", "success");
|
||||
|
||||
onClose();
|
||||
}
|
||||
})
|
||||
.catch( ( error ) =>
|
||||
{
|
||||
setIsSubmitting(false)
|
||||
const message = error.response.data.message || error.message || "Error Occured During Api Call"
|
||||
showToast( message, "error" );
|
||||
|
||||
.catch((error) => {
|
||||
showToast(error?.response?.data?.message || error.message, "error");
|
||||
});
|
||||
};
|
||||
|
||||
@ -385,7 +379,11 @@ const EditActivityModal = ({
|
||||
{/* )} */}
|
||||
|
||||
<div className="col-12 text-center">
|
||||
<button type="submit" className="btn btn-sm btn-primary me-3" disabled={activities.length === 0 || isSubmitting}>
|
||||
<button
|
||||
type="submit"
|
||||
className="btn btn-sm btn-primary me-3"
|
||||
disabled={activities.length === 0}
|
||||
>
|
||||
{isSubmitting ? "Please Wait.." : "Edit Task"}
|
||||
</button>
|
||||
<button
|
||||
|
||||
@ -209,15 +209,9 @@ export const useEmployeesAllOrByProjectId = (projectId, showInactive) => {
|
||||
export const useEmployeeProfile = (employeeId) => {
|
||||
const [loading, setLoading] = useState(true);
|
||||
const [error, setError] = useState();
|
||||
const [employee, setEmployees] = useState(null);
|
||||
const [employee, setEmployees] = useState();
|
||||
|
||||
const fetchData = async () => {
|
||||
if (!employeeId) {
|
||||
// Reset the state if no employeeId (e.g., opening for 'add' mode)
|
||||
setEmployees(null);
|
||||
setLoading(false);
|
||||
return;
|
||||
}
|
||||
const Employee_cache = getCachedData("employeeProfile");
|
||||
if (!Employee_cache || Employee_cache.employeeId !== employeeId) {
|
||||
EmployeeRepository.getEmployeeProfile(employeeId)
|
||||
@ -237,7 +231,9 @@ export const useEmployeeProfile = (employeeId) => {
|
||||
};
|
||||
|
||||
useEffect(() => {
|
||||
fetchData();
|
||||
if (employeeId) {
|
||||
fetchData(employeeId);
|
||||
}
|
||||
}, [employeeId]);
|
||||
|
||||
return { employee, loading, error };
|
||||
|
||||
@ -43,7 +43,7 @@ const EmployeeList = () => {
|
||||
const [searchText, setSearchText] = useState("");
|
||||
const [filteredData, setFilteredData] = useState([]);
|
||||
const [showModal, setShowModal] = useState(false);
|
||||
const [selectedEmployeeId, setSelecedEmployeeId] = useState(null);
|
||||
const [selectedEmployeeId, setSelecedEmployeeId] = useState();
|
||||
const [IsDeleteModalOpen, setIsDeleteModalOpen] = useState(false);
|
||||
const [selectedEmpFordelete, setSelectedEmpFordelete] = useState(null);
|
||||
const [employeeLodaing, setemployeeLodaing] = useState(false);
|
||||
@ -111,8 +111,6 @@ const EmployeeList = () => {
|
||||
document.querySelector(".modal-backdrop").remove();
|
||||
}
|
||||
setShowModal(false);
|
||||
clearCacheKey("employeeProfile");
|
||||
recallEmployeeData(showInactive);
|
||||
};
|
||||
const handleShow = () => setShowModal(true);
|
||||
const handleClose = () => setShowModal(false);
|
||||
@ -195,7 +193,7 @@ const EmployeeList = () => {
|
||||
{isCreateModalOpen && (
|
||||
<ManageEmp employeeId={modelConfig} onClosed={closeModal} />
|
||||
)}
|
||||
{showModal && (<div
|
||||
<div
|
||||
className={`modal fade ${showModal ? "show" : ""} `}
|
||||
tabIndex="-1"
|
||||
role="dialog"
|
||||
@ -213,7 +211,7 @@ const EmployeeList = () => {
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>)}
|
||||
</div>
|
||||
|
||||
{IsDeleteModalOpen && (
|
||||
<div
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user