Create a seprate file for export functionality in employee.
This commit is contained in:
parent
79ac3ee481
commit
33033dea9d
84
src/components/Employee/handleEmployeeExport.jsx
Normal file
84
src/components/Employee/handleEmployeeExport.jsx
Normal file
@ -0,0 +1,84 @@
|
|||||||
|
import moment from "moment";
|
||||||
|
import { exportToExcel, exportToCSV, exportToPDF, printTable } from "../../utils/tableExportUtils";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Handles export operations for employee data.
|
||||||
|
* @param {string} type - Export type: 'csv', 'excel', 'pdf', or 'print'
|
||||||
|
* @param {Array} employeeList - Full employee data array
|
||||||
|
* @param {Array} filteredData - Filtered employee data (if search applied)
|
||||||
|
* @param {string} searchText - Current search text (used to decide dataset)
|
||||||
|
* @param {RefObject} tableRef - Table reference (used for print)
|
||||||
|
*/
|
||||||
|
const handleEmployeeExport = (type, employeeList, filteredData, searchText, tableRef) => {
|
||||||
|
// Export full list (filtered if search applied)
|
||||||
|
const dataToExport = searchText ? filteredData : employeeList;
|
||||||
|
|
||||||
|
if (!dataToExport || dataToExport.length === 0) return;
|
||||||
|
|
||||||
|
// Map and format employee data for export
|
||||||
|
const exportData = dataToExport.map((item) => ({
|
||||||
|
"First Name": item.firstName || "",
|
||||||
|
"Middle Name": item.middleName || "",
|
||||||
|
"Last Name": item.lastName || "",
|
||||||
|
"Email": item.email || "",
|
||||||
|
"Gender": item.gender || "",
|
||||||
|
"Birth Date": item.birthdate
|
||||||
|
? moment(item.birthdate).format("DD-MMM-YYYY")
|
||||||
|
: "",
|
||||||
|
"Joining Date": item.joiningDate
|
||||||
|
? moment(item.joiningDate).format("DD-MMM-YYYY")
|
||||||
|
: "",
|
||||||
|
"Permanent Address": item.permanentAddress || "",
|
||||||
|
"Current Address": item.currentAddress || "",
|
||||||
|
"Phone Number": item.phoneNumber || "",
|
||||||
|
"Emergency Phone Number": item.emergencyPhoneNumber || "",
|
||||||
|
"Emergency Contact Person": item.emergencyContactPerson || "",
|
||||||
|
"Is Active": item.isActive ? "Active" : "Inactive",
|
||||||
|
"Job Role": item.jobRole || "",
|
||||||
|
}));
|
||||||
|
|
||||||
|
switch (type) {
|
||||||
|
case "csv":
|
||||||
|
exportToCSV(exportData, "employees");
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "excel":
|
||||||
|
exportToExcel(exportData, "employees");
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "pdf":
|
||||||
|
exportToPDF(
|
||||||
|
dataToExport.map((item) => ({
|
||||||
|
Name: `${item.firstName || ""} ${item.lastName || ""}`.trim(),
|
||||||
|
Email: item.email || "",
|
||||||
|
"Phone Number": item.phoneNumber || "",
|
||||||
|
"Job Role": item.jobRole || "",
|
||||||
|
"Joining Date": item.joiningDate
|
||||||
|
? moment(item.joiningDate).format("DD-MMM-YYYY")
|
||||||
|
: "",
|
||||||
|
Gender: item.gender || "",
|
||||||
|
Status: item.isActive ? "Active" : "Inactive",
|
||||||
|
})),
|
||||||
|
"employees",
|
||||||
|
[
|
||||||
|
"Name",
|
||||||
|
"Email",
|
||||||
|
"Phone Number",
|
||||||
|
"Job Role",
|
||||||
|
"Joining Date",
|
||||||
|
"Gender",
|
||||||
|
"Status",
|
||||||
|
]
|
||||||
|
);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "print":
|
||||||
|
printTable(tableRef.current);
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
export default handleEmployeeExport;
|
@ -38,6 +38,7 @@ import usePagination from "../../hooks/usePagination";
|
|||||||
import { setProjectId } from "../../slices/localVariablesSlice";
|
import { setProjectId } from "../../slices/localVariablesSlice";
|
||||||
import { useHasUserPermission } from "../../hooks/useHasUserPermission";
|
import { useHasUserPermission } from "../../hooks/useHasUserPermission";
|
||||||
import Pagination from "../../components/common/Pagination";
|
import Pagination from "../../components/common/Pagination";
|
||||||
|
import handleEmployeeExport from "../../components/Employee/handleEmployeeExport";
|
||||||
|
|
||||||
const EmployeeList = () => {
|
const EmployeeList = () => {
|
||||||
const selectedProjectId = useSelector(
|
const selectedProjectId = useSelector(
|
||||||
@ -134,78 +135,11 @@ const EmployeeList = () => {
|
|||||||
|
|
||||||
const tableRef = useRef(null);
|
const tableRef = useRef(null);
|
||||||
const handleExport = (type) => {
|
const handleExport = (type) => {
|
||||||
// Export full list (filtered if search applied)
|
handleEmployeeExport(type, employeeList, filteredData, searchText, tableRef);
|
||||||
const dataToExport = searchText ? filteredData : employeeList;
|
|
||||||
|
|
||||||
if (!dataToExport || dataToExport.length === 0) return;
|
|
||||||
|
|
||||||
// Map and format employee data for export
|
|
||||||
const exportData = dataToExport.map((item) => ({
|
|
||||||
"First Name": item.firstName || "",
|
|
||||||
"Middle Name": item.middleName || "",
|
|
||||||
"Last Name": item.lastName || "",
|
|
||||||
"Email": item.email || "",
|
|
||||||
"Gender": item.gender || "",
|
|
||||||
"Birth Date": item.birthdate
|
|
||||||
? moment(item.birthdate).format("DD-MMM-YYYY")
|
|
||||||
: "",
|
|
||||||
"Joining Date": item.joiningDate
|
|
||||||
? moment(item.joiningDate).format("DD-MMM-YYYY")
|
|
||||||
: "",
|
|
||||||
"Permanent Address": item.permanentAddress || "",
|
|
||||||
"Current Address": item.currentAddress || "",
|
|
||||||
"Phone Number": item.phoneNumber || "",
|
|
||||||
"Emergency Phone Number": item.emergencyPhoneNumber || "",
|
|
||||||
"Emergency Contact Person": item.emergencyContactPerson || "",
|
|
||||||
"Is Active": item.isActive ? "Active" : "Inactive",
|
|
||||||
"Job Role": item.jobRole || "",
|
|
||||||
}));
|
|
||||||
|
|
||||||
switch (type) {
|
|
||||||
case "csv":
|
|
||||||
exportToCSV(exportData, "employees");
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "excel":
|
|
||||||
exportToExcel(exportData, "employees");
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "pdf":
|
|
||||||
exportToPDF(
|
|
||||||
dataToExport.map((item) => ({
|
|
||||||
Name: `${item.firstName || ""} ${item.lastName || ""}`.trim(),
|
|
||||||
Email: item.email || "",
|
|
||||||
"Phone Number": item.phoneNumber || "",
|
|
||||||
"Job Role": item.jobRole || "",
|
|
||||||
"Joining Date": item.joiningDate
|
|
||||||
? moment(item.joiningDate).format("DD-MMM-YYYY")
|
|
||||||
: "",
|
|
||||||
Gender: item.gender || "",
|
|
||||||
Status: item.isActive ? "Active" : "Inactive",
|
|
||||||
})),
|
|
||||||
"employees",
|
|
||||||
[
|
|
||||||
"Name",
|
|
||||||
"Email",
|
|
||||||
"Phone Number",
|
|
||||||
"Job Role",
|
|
||||||
"Joining Date",
|
|
||||||
"Gender",
|
|
||||||
"Status",
|
|
||||||
]
|
|
||||||
);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "print":
|
|
||||||
printTable(tableRef.current);
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
const handleAllEmployeesToggle = (e) => {
|
const handleAllEmployeesToggle = (e) => {
|
||||||
const isChecked = e.target.checked;
|
const isChecked = e.target.checked;
|
||||||
setShowInactive(false);
|
setShowInactive(false);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user