"use client"; import { formatDateMonthYear, t } from "@/utils"; import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow, } from "@/components/ui/table"; import { useSelector } from "react-redux"; import { useEffect, useState } from "react"; import { CurrentLanguageData } from "@/redux/reducer/languageSlice"; import NoData from "@/components/EmptyStates/NoData"; import { Badge } from "@/components/ui/badge"; import JobApplicationSkeleton from "@/components/Skeletons/JobApplicationSkeleton"; import { toast } from "sonner"; import Pagination from "@/components/Common/Pagination"; import { getMyJobApplicationsList } from "@/utils/api"; import CustomLink from "@/components/Common/CustomLink"; const JobApplications = () => { const CurrentLanguage = useSelector(CurrentLanguageData); const [jobApplication, setJobApplication] = useState({ data: [], currentPage: 1, totalItems: 0, perPage: 15, totalPages: 0, isLoading: false, }); useEffect(() => { fetchJobApplicationsData(1); }, [jobApplication?.currentPage, CurrentLanguage.code]); const fetchJobApplicationsData = async (page) => { try { setJobApplication((prev) => ({ ...prev, isLoading: true })); const response = await getMyJobApplicationsList.getMyJobApplications({ page, }); if (response.data.error === false) { setJobApplication((prev) => ({ ...prev, data: response?.data?.data?.data, totalItems: response?.data?.data?.total, perPage: response?.data?.data?.per_page, totalPages: response?.data?.data?.last_page, currentPage: response?.data?.data?.current_page, })); } else { toast.error(response.data.message); } } catch (error) { console.error("Error:", error); } finally { setJobApplication((prev) => ({ ...prev, isLoading: false })); } }; const handlePageChange = (page) => { setJobApplication((prev) => ({ ...prev, currentPage: page })); }; const getStatusBadge = (status) => { switch (status) { case "pending": return {t("pending")}; case "accepted": return {t("accepted")}; case "rejected": return {t("rejected")}; default: return {status}; } }; return ( <> {jobApplication?.isLoading ? ( ) : jobApplication?.data?.length > 0 ? ( <>
{t("jobTitle")} {t("recruiter")} {t("status")} {t("appliedDate")} {t("resume")} {jobApplication?.data?.map((application) => ( {application.item?.translated_name || "-"} {application.recruiter?.name || "-"} {getStatusBadge(application.status || "Pending")} {formatDateMonthYear(application.created_at)} {application?.resume ? ( {t("viewResume")} ) : ( {t("notAvailable")} )} ))}
) : ( )} ); }; export default JobApplications;