diff --git a/src/components/Employee/EmpDashboard.jsx b/src/components/Employee/EmpDashboard.jsx index e3866cab..91958f3f 100644 --- a/src/components/Employee/EmpDashboard.jsx +++ b/src/components/Employee/EmpDashboard.jsx @@ -17,7 +17,7 @@ const EmpDashboard = ({ profile }) => { {" "} - +
@@ -83,9 +83,12 @@ const EmpDashboard = ({ profile }) => {
- {" "} - +
+
); diff --git a/src/components/Employee/EmpReportingManager.jsx b/src/components/Employee/EmpReportingManager.jsx index 61d33c37..813b0256 100644 --- a/src/components/Employee/EmpReportingManager.jsx +++ b/src/components/Employee/EmpReportingManager.jsx @@ -2,61 +2,59 @@ import React, { useState } from "react"; import { useOrganizationHierarchy } from "../../hooks/useEmployees"; import GlobalModel from "../common/GlobalModel"; import ManageReporting from "./ManageReporting"; +import Avatar from "../common/Avatar"; +import { SpinnerLoader } from "../common/Loader"; const EmpReportingManager = ({ employeeId, employee }) => { const { data, isLoading } = useOrganizationHierarchy(employeeId); const [showManageReportingModal, setShowManageReportingModal] = useState(false); - if (isLoading) return Loading...; + if (isLoading) + return ( +
+ +
+ ); - const primary = data?.find((item) => item.isPrimary); - const secondary = data?.filter((item) => !item.isPrimary); - - // Create comma-separated string for secondary managers - const secondaryNames = secondary - ?.map((item) => `${item.reportTo?.firstName || ""} ${item.reportTo?.lastName || ""}`.trim()) - .join(", "); + // Safe access to primary and secondary managers + const primaryManager = data?.find((d) => d.isPrimary)?.reportTo; + const secondaryManagers = data?.filter((d) => !d.isPrimary).map((d) => d.reportTo) || []; return (
-
- Update Reporting Manager + + Reporting Manager + -
+
+ {/* Primary Manager */} +
+
Primary Manager:
+
+ {primaryManager + ? `${primaryManager.firstName || ""} ${primaryManager.lastName || ""}` + : "NA"} +
+
- - {/* Primary Reporting Manager */} -
- - - Primary Reporting Manager - - : - - {primary?.reportTo?.firstName || NA}{" "} - {primary?.reportTo?.lastName || ""} - + {/* Secondary Managers */} + {secondaryManagers?.length > 0 && ( +
+
Secondary Managers:
+
+ {secondaryManagers + .map((m) => `${m.firstName || ""} ${m.lastName || ""}`) + .join(", ")} +
+
+ )}
- {/* Secondary Reporting Manager (comma-separated) */} - {secondary?.length > 0 && ( -
- - - Secondary Reporting Manager - - : - - {secondaryNames || NA} - -
- )} - - {/* Open Modal Button */} -
+ {/* Manage Reporting Button */} +
- {/* ManageReporting Modal */} + {/* Manage Reporting Modal */} {showManageReportingModal && ( setShowManageReportingModal(false)} > setShowManageReportingModal(false)} /> - )}
@@ -87,3 +84,4 @@ const EmpReportingManager = ({ employeeId, employee }) => { }; export default EmpReportingManager; + diff --git a/src/components/Employee/ManageReporting.jsx b/src/components/Employee/ManageReporting.jsx index e2ebd9a3..b9857fea 100644 --- a/src/components/Employee/ManageReporting.jsx +++ b/src/components/Employee/ManageReporting.jsx @@ -5,6 +5,8 @@ import Label from "../common/Label"; import PmsEmployeeInputTag from "../common/PmsEmployeeInputTag"; import { useManageEmployeeHierarchy, useOrganizationHierarchy } from "../../hooks/useEmployees"; import { ManageReportingSchema, defaultManageReporting } from "./EmployeeSchema"; +import Avatar from "../common/Avatar"; +import { useNavigate } from "react-router-dom"; const ManageReporting = ({ onClosed, employee, employeeId }) => { const { @@ -17,6 +19,7 @@ const ManageReporting = ({ onClosed, employee, employeeId }) => { resolver: zodResolver(ManageReportingSchema), defaultValues: defaultManageReporting, }); + const navigate = useNavigate(); const { data, isLoading } = useOrganizationHierarchy(employeeId); @@ -25,7 +28,6 @@ const ManageReporting = ({ onClosed, employee, employeeId }) => { employeeId, onClosed ); - const primaryValue = watch("primaryNotifyTo"); const secondaryValue = watch("secondaryNotifyTo"); @@ -88,16 +90,48 @@ const ManageReporting = ({ onClosed, employee, employeeId }) => { manageHierarchy(payload); }; + const handleClick = () => { + handleClose(); + navigate(`/employee/${employee.id}`); + }; + + return (
-
- Update Reporting Manager ( - {`${employee.firstName || ""} ${employee.middleName || ""} ${employee.lastName || ""}`.trim()} - ) -
+
Reporting Manager
- {/* Primary */} + {/* Employee Info */} +
+
+ +
+ + {/* Employee Name + Role */} +
+
+ + {`${employee.firstName || ""} ${employee.middleName || ""} ${employee.lastName || ""}`.trim() || "Employee Name NA"} + + + {/* External Link Icon (Navigate to Employee Profile) */} + +
+ +
+ {employee.jobRole && ( + {employee.jobRole} + )} +
+
+
+ + {/* Primary Reporting Manager */}
- - {/* Secondary */} + {/* Secondary Reporting Manager */}
- +
- + {/* Buttons */}