85 lines
3.0 KiB
JavaScript
85 lines
3.0 KiB
JavaScript
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;
|