import Combobox from '@/components/combobox'; import InputError from '@/components/input-error'; import LoadingButton from '@/components/loading-button'; import { Accordion, AccordionContent, AccordionItem } from '@/components/ui/accordion'; import { Card } from '@/components/ui/card'; import { Checkbox } from '@/components/ui/checkbox'; import { Input } from '@/components/ui/input'; import { Label } from '@/components/ui/label'; import { RadioGroup, RadioGroupItem } from '@/components/ui/radio-group'; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select'; import { Textarea } from '@/components/ui/textarea'; import courseDurations from '@/data/course-durations'; import { useAuth } from '@/hooks/use-auth'; import DashboardLayout from '@/layouts/dashboard/layout'; import { onHandleChange } from '@/lib/inertia'; import { SharedData } from '@/types/global'; import { useForm } from '@inertiajs/react'; import { ReactNode, useMemo } from 'react'; import { Editor } from 'richtor'; import 'richtor/styles'; interface Props extends SharedData { categories: ExamCategory[]; instructors: Instructor[]; } const CreateExam = (props: Props) => { const { user } = useAuth(); const { categories, instructors, system, translate } = props; const { input } = translate; const { data, setData, post, errors, processing } = useForm({ title: '', short_description: '', description: '', status: 'draft', level: '', pricing_type: 'paid', price: '', discount: false as boolean, discount_price: '', duration_hours: 1, duration_minutes: 0, pass_mark: 50, max_attempts: 3, total_marks: 100, expiry_type: 'lifetime', expiry_duration: '', thumbnail: null as File | null, instructor_id: user.role === 'admin' && system.sub_type === 'collaborative' ? '' : user.instructor_id, exam_category_id: '', }); // Handle form submission const handleSubmit = (e: React.FormEvent) => { e.preventDefault(); post(route('exams.store')); }; const transformedCategories = useMemo(() => { return categories.map((category) => ({ label: category.title, value: category.id.toString(), })); }, [categories]); const transformedInstructors = useMemo(() => { return instructors.map((instructor) => ({ label: instructor.user.name, value: instructor.id.toString(), })); }, [instructors]); const levels = ['beginner', 'intermediate', 'advanced']; const pricingTypes = ['paid', 'free']; const expiryTypes = ['lifetime', 'limited_time']; return (
{/* Left Column */}
onHandleChange(e, setData)} placeholder="Enter exam title" />