diff --git a/common/src/interfaces/assignment.ts b/common/src/interfaces/assignment.ts index 677221f1..49e2a84b 100644 --- a/common/src/interfaces/assignment.ts +++ b/common/src/interfaces/assignment.ts @@ -7,7 +7,7 @@ export interface AssignmentDTO { description: string; learningPath: string; language: string; - deadline: Date; + deadline: Date | null; groups: GroupDTO[] | string[][]; } diff --git a/frontend/src/utils/assignment-rules.ts b/frontend/src/utils/assignment-rules.ts index b0d29cee..51380960 100644 --- a/frontend/src/utils/assignment-rules.ts +++ b/frontend/src/utils/assignment-rules.ts @@ -12,19 +12,6 @@ export const assignmentTitleRules = [ }, ]; -/** - * Validation rule for the learning path selection. - * - * Ensures that a valid learning path is selected. - */ -export const learningPathRules = [ - (value: { hruid: string; title: string }): string | boolean => { - if (value && value.hruid) { - return true; // Valid if hruid is present - } - return "You must select a learning path."; - }, -]; /** * Validation rule for the classes selection. diff --git a/frontend/src/views/assignments/CreateAssignment.vue b/frontend/src/views/assignments/CreateAssignment.vue index d795ef20..47973f49 100644 --- a/frontend/src/views/assignments/CreateAssignment.vue +++ b/frontend/src/views/assignments/CreateAssignment.vue @@ -34,7 +34,9 @@ const selectedClass = ref(undefined); const assignmentTitle = ref(""); + console.log(route.query); const selectedLearningPath = ref(route.query.hruid || undefined); + const lpIsSelected = route.query.hruid !== undefined; const { mutate, data, isSuccess } = useCreateAssignmentMutation(); @@ -49,26 +51,42 @@ const { valid } = await form.value.validate(); if (!valid) return; - console.log(selectedLearningPath.value); + const lp = lpIsSelected + ? route.query.hruid + : selectedLearningPath.value?.hruid; - let lp = selectedLearningPath.value; - if (!lpIsSelected) { - lp = selectedLearningPath.value?.hruid; + if (!lp) { + return; } + console.log('Form values:', { + title: assignmentTitle.value, + class: selectedClass.value, + lp: selectedLearningPath.value + }); + const assignmentDTO: AssignmentDTO = { id: 0, within: selectedClass.value?.id || "", - title: assignmentTitle.value, + title: assignmentTitle.value.toString(), description: "", - learningPath: lp || "", - deadline: new Date(), - language: language.value, + learningPath: lp.toString(), + language: language.value.toString(), + deadline: null, groups: [], }; mutate({ cid: assignmentDTO.within, data: assignmentDTO }); } + + const learningPathRules = [ + (value: any) => { + // Skip validation if LP is selected from query + if (route.query.hruid) return true; + // Original validation logic + return Boolean(value) || 'Learning path is required'; + } + ];