import React, { useState } from 'react';
import { Head, Link, router } from '@inertiajs/react';
import AdminLayout from '@/Layouts/AdminLayout';
import {
LifeBuoy,
MessageSquare,
AlertCircle,
CheckCircle,
Clock,
Search,
Eye,
Plus,
User,
ShieldAlert,
TrendingUp,
Inbox
} from 'lucide-react';
export default function Index({ tickets, filters }) {
const [searchQuery, setSearchQuery] = useState(filters?.search || '');
const [statusFilter, setStatusFilter] = useState(filters?.status || 'all');
const [priorityFilter, setPriorityFilter] = useState(filters?.priority || 'all');
const handleSearch = (e) => {
e.preventDefault();
applyFilters({
search: searchQuery,
status: statusFilter,
priority: priorityFilter,
});
};
const applyFilters = (newFilters) => {
router.get('/admin/tickets', newFilters, {
preserveState: true,
replace: true,
});
};
const handleFilterChange = (key, value) => {
if (key === 'status') {
setStatusFilter(value);
applyFilters({ search: searchQuery, status: value, priority: priorityFilter });
} else if (key === 'priority') {
setPriorityFilter(value);
applyFilters({ search: searchQuery, status: statusFilter, priority: value });
}
};
// Calculate metrics locally from the tickets list
const totalTickets = tickets.length;
const openTickets = tickets.filter(t => t.status === 'open').length;
const inProgressTickets = tickets.filter(t => t.status === 'in_progress').length;
const resolvedTickets = tickets.filter(t => t.status === 'resolved' || t.status === 'closed').length;
const getStatusBadge = (status) => {
switch (status) {
case 'open':
return (
Open
);
case 'in_progress':
return (
In Progress
);
case 'resolved':
return (
Resolved
);
case 'closed':
return (
Closed
);
default:
return {status};
}
};
const getPriorityBadge = (priority) => {
switch (priority) {
case 'high':
return (
High
);
case 'medium':
return (
Medium
);
case 'low':
return (
Low
);
default:
return {priority};
}
};
return (
Review user issues, update priorities, and generate Senior Developer support responses.
| Ticket Number | Subject | Raised By | Priority | Status | Created At | Actions |
|---|---|---|---|---|---|---|
| {ticket.ticket_number} | {ticket.subject} |
{ticket.creator_name}
{ticket.user_type}
|
{getPriorityBadge(ticket.priority)} | {getStatusBadge(ticket.status)} | {ticket.created_at} |
|
|
|
||||||