mirror of
https://github.com/Tria-plc/emaui.git
synced 2026-08-26 19:12:50 +00:00
feat: add description field to question entity commit
This commit is contained in:
@@ -44,6 +44,8 @@ function QuestionForm({
|
||||
certificationId: string;
|
||||
titleEn: string;
|
||||
titleAm: string;
|
||||
descriptionEn: string;
|
||||
descriptionAm: string;
|
||||
form: string;
|
||||
points: number;
|
||||
days: number;
|
||||
@@ -55,6 +57,8 @@ function QuestionForm({
|
||||
const [certificationId, setCertificationId] = useState<string | null>(editing?.certificationId ?? null);
|
||||
const [titleEn, setTitleEn] = useState(editing?.title?.en ?? '');
|
||||
const [titleAm, setTitleAm] = useState(editing?.title?.am ?? '');
|
||||
const [descriptionEn, setDescriptionEn] = useState(editing?.description?.en ?? '');
|
||||
const [descriptionAm, setDescriptionAm] = useState(editing?.description?.am ?? '');
|
||||
const [form, setForm] = useState<string | null>(editing?.form ?? null);
|
||||
const [points, setPoints] = useState<number>(editing?.points ?? 0);
|
||||
const [days, setDays] = useState(editing?.time?.days ?? 0);
|
||||
@@ -67,7 +71,7 @@ function QuestionForm({
|
||||
notify.error('Please fill all required fields');
|
||||
return;
|
||||
}
|
||||
onSubmit({ certificationId, titleEn, titleAm, form, points, days, hours, minutes }, !!editing);
|
||||
onSubmit({ certificationId, titleEn, titleAm, descriptionEn, descriptionAm, form, points, days, hours, minutes }, !!editing);
|
||||
};
|
||||
|
||||
return (
|
||||
@@ -77,6 +81,8 @@ function QuestionForm({
|
||||
<Select label="Certification" placeholder="Select certification" data={certOptions} value={certificationId} onChange={setCertificationId} size="sm" searchable required />
|
||||
<TextInput label="Title (English)" placeholder="Question in English" value={titleEn} onChange={(e) => setTitleEn(e.currentTarget.value)} size="sm" required />
|
||||
<TextInput label="Title (Amharic)" placeholder="ጥያቄ በአማርኛ" value={titleAm} onChange={(e) => setTitleAm(e.currentTarget.value)} size="sm" required />
|
||||
<Textarea label="Description (English)" placeholder="Question description in English" value={descriptionEn} onChange={(e) => setDescriptionEn(e.currentTarget.value)} size="sm" />
|
||||
<Textarea label="Description (Amharic)" placeholder="ስለ ዝርዝር መረጃ" value={descriptionAm} onChange={(e) => setDescriptionAm(e.currentTarget.value)} size="sm" />
|
||||
<Select label="Form" placeholder="Select form" data={[{ value: 'ESSAY', label: 'Essay' }, { value: 'CHOICE', label: 'Choice' }]} value={form} onChange={setForm} size="sm" required />
|
||||
<NumberInput label="Points" placeholder="Points" value={points} onChange={(v) => setPoints(Number(v))} min={0} size="sm" required />
|
||||
<Text fz="sm" fw={500}>Time Allowed</Text>
|
||||
@@ -120,17 +126,19 @@ export function QuestionPage() {
|
||||
const resetForm = () => { setEditing(null); setShowForm(false); };
|
||||
|
||||
const handleSubmit = async (values: {
|
||||
certificationId: string; titleEn: string; titleAm: string; form: string;
|
||||
certificationId: string; titleEn: string; titleAm: string;
|
||||
descriptionEn: string; descriptionAm: string; form: string;
|
||||
points: number; days: number; hours: number; minutes: number;
|
||||
}, isEdit: boolean) => {
|
||||
const title = { en: values.titleEn, am: values.titleAm };
|
||||
const description = { en: values.descriptionEn, am: values.descriptionAm };
|
||||
const time = { days: values.days, hours: values.hours, minutes: values.minutes };
|
||||
try {
|
||||
if (isEdit && editing) {
|
||||
await updateQ({ id: editing.id, certificationId: values.certificationId, title, form: values.form as QuestionForm, points: values.points, time }).unwrap();
|
||||
await updateQ({ id: editing.id, certificationId: values.certificationId, title, description, form: values.form as QuestionForm, points: values.points, time }).unwrap();
|
||||
notify.success('Question updated');
|
||||
} else {
|
||||
await createQ({ certificationId: values.certificationId, title, form: values.form as QuestionForm, points: values.points, time }).unwrap();
|
||||
await createQ({ certificationId: values.certificationId, title, description, form: values.form as QuestionForm, points: values.points, time }).unwrap();
|
||||
notify.success('Question created');
|
||||
}
|
||||
resetForm();
|
||||
|
||||
@@ -13,6 +13,7 @@ export interface Question {
|
||||
certificationId: string;
|
||||
certification?: { id: string; name: LocalePair };
|
||||
title: LocalePair;
|
||||
description: LocalePair;
|
||||
form: QuestionForm;
|
||||
time: EstimatedTime | null;
|
||||
points: number;
|
||||
@@ -29,6 +30,7 @@ export interface ListResponse<T> {
|
||||
export interface CreateQuestionPayload {
|
||||
certificationId: string;
|
||||
title: LocalePair;
|
||||
description: LocalePair;
|
||||
form: QuestionForm;
|
||||
time?: EstimatedTime;
|
||||
points: number;
|
||||
@@ -38,6 +40,7 @@ export interface UpdateQuestionPayload {
|
||||
id: string;
|
||||
certificationId?: string;
|
||||
title?: LocalePair;
|
||||
description?: LocalePair;
|
||||
form?: QuestionForm;
|
||||
time?: EstimatedTime;
|
||||
points?: number;
|
||||
|
||||
Reference in New Issue
Block a user