import React, { useState } from 'react';
import { Head, Link, router } from '@inertiajs/react';
import EmployerLayout from '@/Layouts/EmployerLayout';
import {
ArrowLeft,
MessageSquare,
CheckCircle2,
XCircle,
Globe2,
Briefcase,
DollarSign,
MoreHorizontal,
Search,
Filter,
ShieldCheck,
Star,
X,
FileText
} from 'lucide-react';
import { Badge } from '@/components/ui/badge';
import { toast } from 'sonner';
export default function Applicants({ job, applicants: initialApplicants, isShortlistedOnly = false }) {
const [searchTerm, setSearchTerm] = useState('');
const [applicants, setApplicants] = useState(initialApplicants || []);
// Modal states
const [selectedApp, setSelectedApp] = useState(null);
const [newStatus, setNewStatus] = useState('');
const [notes, setNotes] = useState('');
const [showModal, setShowModal] = useState(false);
const filteredApplicants = applicants.filter(a =>
a.name.toLowerCase().includes(searchTerm.toLowerCase()) ||
a.nationality.toLowerCase().includes(searchTerm.toLowerCase())
);
const openStatusModal = (app, statusPreset = '') => {
setSelectedApp(app);
let resolvedStatus = statusPreset || app.status || 'Applied';
const lowerStatus = resolvedStatus.toLowerCase();
if (lowerStatus === 'hire_requested' || lowerStatus === 'hired') {
resolvedStatus = 'Hired';
} else if (lowerStatus === 'rejected') {
resolvedStatus = 'Rejected';
} else if (lowerStatus === 'shortlisted') {
resolvedStatus = 'Shortlisted';
} else {
resolvedStatus = 'Applied';
}
setNewStatus(resolvedStatus);
setNotes(app.notes || '');
setShowModal(true);
};
const handleSaveStatus = () => {
if (!selectedApp) return;
router.post(`/employer/candidates/${selectedApp.application_id}/status`, {
status: newStatus,
notes: notes
}, {
onSuccess: () => {
toast.success('Applicant status updated successfully.');
setShowModal(false);
setSelectedApp(null);
},
onError: (errors) => {
toast.error('Failed to update status: ' + (errors.error || errors.status || 'Error occurred'));
}
});
};
const pageTitle = isShortlistedOnly ? 'Shortlisted Workers' : (job ? 'Job Applicants' : 'All Applicants');
const headerTitle = isShortlistedOnly ? 'Shortlisted Workers' : (job ? `Applicants for ${job.title}` : 'All Job Applicants');
return (
No applicants found for this job yet.
{selectedApp?.name}