import React from 'react';
import { Head, Link, useForm } from '@inertiajs/react';
import EmployerLayout from '../../../Layouts/EmployerLayout';
import { useTranslation } from '../../../lib/LanguageContext';
import {
ArrowLeft,
Clock,
CheckCircle,
AlertCircle,
CornerDownRight,
Send,
Terminal,
UserCheck,
Lock,
UploadCloud,
X,
Volume2
} from 'lucide-react';
export default function Show({ ticket, replies }) {
const { t } = useTranslation();
const { data, setData, post, processing, reset, errors } = useForm({
message: '',
voice_note: null,
});
const handleSubmit = (e) => {
e.preventDefault();
post(`/employer/support/${ticket.id}/reply`, {
onSuccess: () => reset('message', 'voice_note'),
});
};
const getStatusBadge = (status) => {
switch (status) {
case 'open':
return (
{t('ticket_status_open', 'Open')}
);
case 'in_progress':
return (
{t('ticket_status_in_progress', 'In Progress')}
);
case 'resolved':
return (
{t('ticket_status_resolved', 'Resolved')}
);
case 'closed':
return (
{t('ticket_status_closed', 'Closed')}
);
default:
return (
{status}
);
}
};
const getPriorityBadge = (priority) => {
switch (priority) {
case 'high':
return (
{t('priority_high', 'High')}
);
case 'medium':
return (
{t('priority_medium', 'Medium')}
);
case 'low':
return (
{t('priority_low', 'Low')}
);
default:
return {priority};
}
};
return (
{/* Back button */}
{t('back_to_support', 'Back to Help & Support')}
{/* Ticket main card */}
{ticket.ticket_number}
{getPriorityBadge(ticket.priority)}
{getStatusBadge(ticket.status)}
{t('raised_on', 'Raised on:')} {ticket.created_at}
{ticket.reason && (
Support Category:
{ticket.reason}
)}
{ticket.subject}
{ticket.description}
{ticket.voice_note_url && (
)}
{/* Replies header */}
{t('ticket_replies', 'Discussion History')} ({replies.length})
{/* Replies list */}
{replies.map((reply) => {
const isSystemDev = reply.is_developer_response;
const isAdmin = reply.is_admin;
return (
{isSystemDev ? (
) : (
{reply.sender_name.charAt(0)}
)}
{reply.sender_name}
{reply.created_at}
{reply.message && (
{reply.message}
)}
{reply.voice_note_url && (
)}
);
})}
{replies.length === 0 && (
{t('no_replies_yet', 'No replies posted yet. Our team is investigating.')}
)}
{/* Reply Form */}
{ticket.status !== 'closed' ? (
{t('post_a_reply', 'Post a Reply')}
{t('post_a_reply_desc', 'Need to add info or follow up? Type your response below.')}
) : (
{t('ticket_closed_title', 'This support ticket has been closed')}
{t('ticket_closed_desc', 'This discussion is locked. If the problem persists, please create a new support ticket.')}
)}
);
}