diff --git a/public/swagger.json b/public/swagger.json
index da7b48d..8b48739 100644
--- a/public/swagger.json
+++ b/public/swagger.json
@@ -2690,7 +2690,7 @@
"Worker/Profile"
],
"summary": "Get Safety Report Reasons (Worker)",
- "description": "Returns a list of active safety/moderation report reasons. Can filter reasons by target type (Chat or Review).",
+ "description": "Returns a list of active safety/moderation report reasons. Can filter reasons by target type (Chat or Support).",
"parameters": [
{
"name": "type",
@@ -5130,7 +5130,7 @@
"Employer/Reviews"
],
"summary": "Get Safety Report Reasons (Employer)",
- "description": "Returns a list of active safety/moderation report reasons. Can filter reasons by target type (Chat or Review).",
+ "description": "Returns a list of active safety/moderation report reasons. Can filter reasons by target type (Chat or Support).",
"parameters": [
{
"name": "type",
diff --git a/resources/js/Pages/Admin/Workers/Index.jsx b/resources/js/Pages/Admin/Workers/Index.jsx
index 140c505..a34142c 100644
--- a/resources/js/Pages/Admin/Workers/Index.jsx
+++ b/resources/js/Pages/Admin/Workers/Index.jsx
@@ -62,6 +62,16 @@ const locationData = {
}
};
+const safeRender = (value) => {
+ if (value === null || value === undefined) return 'N/A';
+ if (typeof value === 'object') {
+ if (value.name) return String(value.name);
+ if (value.full_name) return String(value.full_name);
+ return JSON.stringify(value);
+ }
+ return String(value);
+};
+
export default function WorkerManagement({ workers }) {
const [searchTerm, setSearchTerm] = useState('');
const [statusFilter, setStatusFilter] = useState('all');
@@ -749,55 +759,55 @@ export default function WorkerManagement({ workers }) {
Passport Number
- {passportDoc.ocr_data?.passport_number || passportDoc.number || 'N/A'}
+ {safeRender(passportDoc.ocr_data?.passport_number || passportDoc.number)}
Surname
- {passportDoc.ocr_data?.surname || 'N/A'}
+ {safeRender(passportDoc.ocr_data?.surname)}
Given Names
- {passportDoc.ocr_data?.given_names || 'N/A'}
+ {safeRender(passportDoc.ocr_data?.given_names)}
Sex
- {passportDoc.ocr_data?.sex || 'N/A'}
+ {safeRender(passportDoc.ocr_data?.sex)}
Date of Birth
- {passportDoc.ocr_data?.date_of_birth || 'N/A'}
+ {safeRender(passportDoc.ocr_data?.date_of_birth)}
Place of Birth
- {passportDoc.ocr_data?.place_of_birth || 'N/A'}
+ {safeRender(passportDoc.ocr_data?.place_of_birth)}
Nationality
- {passportDoc.ocr_data?.nationality || 'N/A'}
+ {safeRender(passportDoc.ocr_data?.nationality)}
Issuing Country
- {passportDoc.ocr_data?.issuing_country || 'N/A'}
+ {safeRender(passportDoc.ocr_data?.issuing_country)}
Date of Issue
- {passportDoc.ocr_data?.date_of_issue || passportDoc.issue_date || 'N/A'}
+ {safeRender(passportDoc.ocr_data?.date_of_issue || passportDoc.issue_date)}
Date of Expiry
- {passportDoc.ocr_data?.date_of_expiry || passportDoc.expiry_date || 'N/A'}
+ {safeRender(passportDoc.ocr_data?.date_of_expiry || passportDoc.expiry_date)}
Authority
- {passportDoc.ocr_data?.authority || 'N/A'}
+ {safeRender(passportDoc.ocr_data?.authority)}
Document Type
- {passportDoc.ocr_data?.document_type || 'N/A'}
+ {safeRender(passportDoc.ocr_data?.document_type)}
Personal Number
- {passportDoc.ocr_data?.personal_number || 'N/A'}
+ {safeRender(passportDoc.ocr_data?.personal_number)}
{passportDoc.file_path && (
@@ -835,89 +845,89 @@ export default function WorkerManagement({ workers }) {
Entry Permit No
- {visaDoc.ocr_data?.entry_permit_no || 'N/A'}
+ {safeRender(visaDoc.ocr_data?.entry_permit_no)}
UID No
- {visaDoc.ocr_data?.uid_no || 'N/A'}
+ {safeRender(visaDoc.ocr_data?.uid_no)}
File Number
- {visaDoc.ocr_data?.file_number || visaDoc.number || 'N/A'}
+ {safeRender(visaDoc.ocr_data?.file_number || visaDoc.number)}
ID Number
- {visaDoc.ocr_data?.id_number || 'N/A'}
+ {safeRender(visaDoc.ocr_data?.id_number)}
Full Name
- {visaDoc.ocr_data?.full_name || 'N/A'}
+ {safeRender(visaDoc.ocr_data?.full_name)}
Name
- {visaDoc.ocr_data?.name || 'N/A'}
+ {safeRender(visaDoc.ocr_data?.name)}
Visa Type
- {visaDoc.ocr_data?.visa_type || 'N/A'}
+ {safeRender(visaDoc.ocr_data?.visa_type)}
Profession
- {visaDoc.ocr_data?.profession || 'N/A'}
+ {safeRender(visaDoc.ocr_data?.profession)}
Sponsor Name
- {visaDoc.ocr_data?.sponsor_name || 'N/A'}
+ {safeRender(visaDoc.ocr_data?.sponsor_name)}
Nationality
- {visaDoc.ocr_data?.nationality || 'N/A'}
+ {safeRender(visaDoc.ocr_data?.nationality)}
Country
- {visaDoc.ocr_data?.country || 'N/A'}
+ {safeRender(visaDoc.ocr_data?.country)}
Passport No
- {visaDoc.ocr_data?.passport_no || 'N/A'}
+ {safeRender(visaDoc.ocr_data?.passport_no)}
Passport Number
- {visaDoc.ocr_data?.passport_number || 'N/A'}
+ {safeRender(visaDoc.ocr_data?.passport_number)}
Date of Birth
- {visaDoc.ocr_data?.date_of_birth || 'N/A'}
+ {safeRender(visaDoc.ocr_data?.date_of_birth)}
Place of Birth
- {visaDoc.ocr_data?.place_of_birth || 'N/A'}
+ {safeRender(visaDoc.ocr_data?.place_of_birth)}
Place of Issue
- {visaDoc.ocr_data?.place_of_issue || 'N/A'}
+ {safeRender(visaDoc.ocr_data?.place_of_issue)}
Issue Date
- {visaDoc.ocr_data?.issue_date || visaDoc.issue_date || 'N/A'}
+ {safeRender(visaDoc.ocr_data?.issue_date || visaDoc.issue_date)}
Expiry Date
- {visaDoc.ocr_data?.expiry_date || visaDoc.expiry_date || 'N/A'}
+ {safeRender(visaDoc.ocr_data?.expiry_date || visaDoc.expiry_date)}
Accompanied By
- {visaDoc.ocr_data?.accompanied_by || 'N/A'}
+ {safeRender(visaDoc.ocr_data?.accompanied_by)}
Document Type
- {visaDoc.ocr_data?.document_type || 'N/A'}
+ {safeRender(visaDoc.ocr_data?.document_type)}
OCR Accuracy
- {visaDoc.ocr_data?.ocr_accuracy || 'N/A'}
+ {safeRender(visaDoc.ocr_data?.ocr_accuracy)}
{visaDoc.file_path && (
diff --git a/resources/js/Pages/Employer/Workers/Show.jsx b/resources/js/Pages/Employer/Workers/Show.jsx
index 490bc52..97772df 100644
--- a/resources/js/Pages/Employer/Workers/Show.jsx
+++ b/resources/js/Pages/Employer/Workers/Show.jsx
@@ -70,6 +70,16 @@ const getExpiryStatus = (expiryDate) => {
}
};
+const safeRender = (value) => {
+ if (value === null || value === undefined) return 'N/A';
+ if (typeof value === 'object') {
+ if (value.name) return String(value.name);
+ if (value.full_name) return String(value.full_name);
+ return JSON.stringify(value);
+ }
+ return String(value);
+};
+
export default function Show({ worker }) {
const { t } = useTranslation();
const passportDoc = worker.documents?.find(d => d.type === 'passport');
@@ -442,39 +452,39 @@ export default function Show({ worker }) {
{t('given_names', 'Given Names')}
-
{passportDoc.ocr_data.given_names || 'N/A'}
+
{safeRender(passportDoc.ocr_data.given_names)}
{t('surname', 'Surname')}
-
{passportDoc.ocr_data.surname || 'N/A'}
+
{safeRender(passportDoc.ocr_data.surname)}
{t('passport_number', 'Passport Number')}
-
{passportDoc.number}
+
{safeRender(passportDoc.ocr_data.passport_number || passportDoc.number)}
{t('sex', 'Sex')}
-
{passportDoc.ocr_data.sex || 'N/A'}
+
{safeRender(passportDoc.ocr_data.sex)}
{t('date_of_birth', 'Date of Birth')}
-
{passportDoc.ocr_data.date_of_birth || 'N/A'}
+
{safeRender(passportDoc.ocr_data.date_of_birth)}
{t('place_of_birth', 'Place of Birth')}
-
{passportDoc.ocr_data.place_of_birth || 'N/A'}
+
{safeRender(passportDoc.ocr_data.place_of_birth)}
{t('issue_date', 'Date of Issue')}
-
{passportDoc.issue_date || 'N/A'}
+
{safeRender(passportDoc.ocr_data.date_of_issue || passportDoc.issue_date)}
{t('expiry_date', 'Date of Expiry')}
-
{passportDoc.expiry_date || 'N/A'}
+
{safeRender(passportDoc.ocr_data.date_of_expiry || passportDoc.expiry_date)}
{t('issuing_country', 'Issuing Country')}
-
{passportDoc.ocr_data.issuing_country || 'N/A'}
+
{safeRender(passportDoc.ocr_data.issuing_country)}
) : (
@@ -558,39 +568,39 @@ export default function Show({ worker }) {
{t('full_name', 'Full Name')}
-
{visaDoc.ocr_data.name || 'N/A'}
+
{safeRender(visaDoc.ocr_data.name)}
{t('file_number', 'File Number')}
-
{visaDoc.number}
+
{safeRender(visaDoc.ocr_data.file_number || visaDoc.number)}
{t('profession', 'Profession')}
-
{visaDoc.ocr_data.profession || worker.visa_status || 'N/A'}
+
{safeRender(visaDoc.ocr_data.profession || worker.visa_status)}
{t('sponsor', 'Sponsor')}
-
{visaDoc.ocr_data.sponsor || 'N/A'}
+
{safeRender(visaDoc.ocr_data.sponsor || visaDoc.ocr_data.sponsor_name)}
{t('passport_number', 'Passport Number')}
-
{visaDoc.ocr_data.passport_number || 'N/A'}
+
{safeRender(visaDoc.ocr_data.passport_number)}
{t('place_of_issue', 'Place of Issue')}
-
{visaDoc.ocr_data.place_of_issue || 'N/A'}
+
{safeRender(visaDoc.ocr_data.place_of_issue)}
{t('issue_date', 'Date of Issue')}
-
{visaDoc.issue_date || 'N/A'}
+
{safeRender(visaDoc.ocr_data.issue_date || visaDoc.issue_date)}
{t('expiry_date', 'Date of Expiry')}
-
{visaDoc.expiry_date || 'N/A'}
+
{safeRender(visaDoc.ocr_data.expiry_date || visaDoc.expiry_date)}
{t('accompanied_by', 'Accompanied By')}
-
{visaDoc.ocr_data.accompanied_by || 'N/A'}
+
{safeRender(visaDoc.ocr_data.accompanied_by)}
) : (