fix: error message delete assignment knop met vragen of submissions
This commit is contained in:
parent
29f6bd9cad
commit
8cf2f16ff7
2 changed files with 33 additions and 2 deletions
|
@ -14,11 +14,14 @@ import { mapToSubmissionDTO, mapToSubmissionDTOId } from '../interfaces/submissi
|
||||||
import { fetchClass } from './classes.js';
|
import { fetchClass } from './classes.js';
|
||||||
import { QuestionDTO, QuestionId } from '@dwengo-1/common/interfaces/question';
|
import { QuestionDTO, QuestionId } from '@dwengo-1/common/interfaces/question';
|
||||||
import { SubmissionDTO, SubmissionDTOId } from '@dwengo-1/common/interfaces/submission';
|
import { SubmissionDTO, SubmissionDTOId } from '@dwengo-1/common/interfaces/submission';
|
||||||
import { EntityDTO } from '@mikro-orm/core';
|
import {EntityDTO, ForeignKeyConstraintViolationException} from '@mikro-orm/core';
|
||||||
import { putObject } from './service-helper.js';
|
import { putObject } from './service-helper.js';
|
||||||
import { fetchStudents } from './students.js';
|
import { fetchStudents } from './students.js';
|
||||||
import { ServerErrorException } from '../exceptions/server-error-exception.js';
|
import { ServerErrorException } from '../exceptions/server-error-exception.js';
|
||||||
import { BadRequestException } from '../exceptions/bad-request-exception.js';
|
import { BadRequestException } from '../exceptions/bad-request-exception.js';
|
||||||
|
import {getQuestionsAboutLearningObjectInAssignment} from "./questions";
|
||||||
|
import {LearningObjectIdentifier} from "../entities/content/learning-object-identifier";
|
||||||
|
import {ConflictException} from "../exceptions/conflict-exception";
|
||||||
|
|
||||||
export async function fetchAssignment(classid: string, assignmentNumber: number): Promise<Assignment> {
|
export async function fetchAssignment(classid: string, assignmentNumber: number): Promise<Assignment> {
|
||||||
const classRepository = getClassRepository();
|
const classRepository = getClassRepository();
|
||||||
|
@ -133,7 +136,13 @@ export async function deleteAssignment(classid: string, id: number): Promise<Ass
|
||||||
const cls = await fetchClass(classid);
|
const cls = await fetchClass(classid);
|
||||||
|
|
||||||
const assignmentRepository = getAssignmentRepository();
|
const assignmentRepository = getAssignmentRepository();
|
||||||
|
|
||||||
|
try {
|
||||||
await assignmentRepository.deleteByClassAndId(cls, id);
|
await assignmentRepository.deleteByClassAndId(cls, id);
|
||||||
|
} catch (e: ForeignKeyConstraintViolationException) {
|
||||||
|
throw new ConflictException("Cannot delete assigment with questions or submissions")
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
return mapToAssignmentDTO(assignment);
|
return mapToAssignmentDTO(assignment);
|
||||||
}
|
}
|
||||||
|
|
|
@ -87,6 +87,18 @@
|
||||||
dialog.value = true;
|
dialog.value = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const snackbar = ref({
|
||||||
|
visible: false,
|
||||||
|
message: "",
|
||||||
|
color: "success",
|
||||||
|
});
|
||||||
|
|
||||||
|
function showSnackbar(message: string, color: string): void {
|
||||||
|
snackbar.value.message = message;
|
||||||
|
snackbar.value.color = color;
|
||||||
|
snackbar.value.visible = true;
|
||||||
|
}
|
||||||
|
|
||||||
const deleteAssignmentMutation = useDeleteAssignmentMutation();
|
const deleteAssignmentMutation = useDeleteAssignmentMutation();
|
||||||
async function deleteAssignment(num: number, clsId: string): Promise<void> {
|
async function deleteAssignment(num: number, clsId: string): Promise<void> {
|
||||||
deleteAssignmentMutation.mutate(
|
deleteAssignmentMutation.mutate(
|
||||||
|
@ -95,6 +107,9 @@
|
||||||
onSuccess: () => {
|
onSuccess: () => {
|
||||||
window.location.href = "/user/assignment";
|
window.location.href = "/user/assignment";
|
||||||
},
|
},
|
||||||
|
onError: (e) => {
|
||||||
|
showSnackbar(t("failed") + ": " + e.response.data.error || e.message, "error");
|
||||||
|
}
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -458,6 +473,13 @@
|
||||||
</v-card>
|
</v-card>
|
||||||
</v-dialog>
|
</v-dialog>
|
||||||
</v-container>
|
</v-container>
|
||||||
|
<v-snackbar
|
||||||
|
v-model="snackbar.visible"
|
||||||
|
:color="snackbar.color"
|
||||||
|
timeout="3000"
|
||||||
|
>
|
||||||
|
{{ snackbar.message }}
|
||||||
|
</v-snackbar>
|
||||||
</using-query-result>
|
</using-query-result>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue