"use client"; import { useState, FormEvent } from 'react'; import { createTicket, CreateTicketData } from '@/lib/api/supportService'; import { useTicketCategories } from '@/lib/hooks/useSupport'; const CreateTicketForm = () => { const { categories, loading: categoriesLoading } = useTicketCategories(); const [formData, setFormData] = useState({ title: '', description: '', ticket_type: 'general', user_name: '', user_email: '', user_phone: '', company: '', category: undefined }); const [isSubmitting, setIsSubmitting] = useState(false); const [submitError, setSubmitError] = useState(null); const [submitSuccess, setSubmitSuccess] = useState(false); const [ticketNumber, setTicketNumber] = useState(''); const handleInputChange = ( e: React.ChangeEvent ) => { const { name, value } = e.target; setFormData(prev => ({ ...prev, [name]: name === 'category' ? (value ? parseInt(value) : undefined) : value })); }; const handleSubmit = async (e: FormEvent) => { e.preventDefault(); setIsSubmitting(true); setSubmitError(null); setSubmitSuccess(false); try { const response = await createTicket(formData); setTicketNumber(response.ticket_number); setSubmitSuccess(true); // Reset form setFormData({ title: '', description: '', ticket_type: 'general', user_name: '', user_email: '', user_phone: '', company: '', category: undefined }); } catch (error: any) { setSubmitError(error.message || 'Failed to submit ticket. Please try again.'); } finally { setIsSubmitting(false); } }; if (submitSuccess) { return (

Ticket Created Successfully!

Your ticket number: {ticketNumber}

We've received your support request and will respond as soon as possible. Please save your ticket number for future reference.

); } return (

Submit a Support Ticket

Fill out the form below and our team will get back to you shortly.

ℹ️ Note: Only registered email addresses can submit tickets. If your email is not registered, please contact support@gnxsoft.com
{submitError && (
{submitError}
)}
{/* Personal Information */}

Personal Information

{/* Ticket Details */}

Ticket Details