79 lines
2.1 KiB
TypeScript
79 lines
2.1 KiB
TypeScript
import { type Ref, defineComponent, inject, onMounted, ref } from 'vue';
|
|
import { useI18n } from 'vue-i18n';
|
|
|
|
import { useAlertService } from '@/shared/alert/alert.service';
|
|
import { type IExamAnswer } from '@/shared/model/exam-answer.model';
|
|
|
|
import ExamAnswerService from './exam-answer.service';
|
|
|
|
export default defineComponent({
|
|
name: 'ExamAnswer',
|
|
setup() {
|
|
const { t: t$ } = useI18n();
|
|
const examAnswerService = inject('examAnswerService', () => new ExamAnswerService());
|
|
const alertService = inject('alertService', () => useAlertService(), true);
|
|
|
|
const examAnswers: Ref<IExamAnswer[]> = ref([]);
|
|
|
|
const isFetching = ref(false);
|
|
|
|
const clear = () => {};
|
|
|
|
const retrieveExamAnswers = async () => {
|
|
isFetching.value = true;
|
|
try {
|
|
const res = await examAnswerService().retrieve();
|
|
examAnswers.value = res.data;
|
|
} catch (err) {
|
|
alertService.showHttpError(err.response);
|
|
} finally {
|
|
isFetching.value = false;
|
|
}
|
|
};
|
|
|
|
const handleSyncList = () => {
|
|
retrieveExamAnswers();
|
|
};
|
|
|
|
onMounted(async () => {
|
|
await retrieveExamAnswers();
|
|
});
|
|
|
|
const removeId: Ref<number> = ref(null);
|
|
const removeEntity = ref<any>(null);
|
|
const prepareRemove = (instance: IExamAnswer) => {
|
|
removeId.value = instance.id;
|
|
removeEntity.value.show();
|
|
};
|
|
const closeDialog = () => {
|
|
removeEntity.value.hide();
|
|
};
|
|
const removeExamAnswer = async () => {
|
|
try {
|
|
await examAnswerService().delete(removeId.value);
|
|
const message = t$('questionBankApp.examAnswer.deleted', { param: removeId.value }).toString();
|
|
alertService.showInfo(message, { variant: 'danger' });
|
|
removeId.value = null;
|
|
retrieveExamAnswers();
|
|
closeDialog();
|
|
} catch (error) {
|
|
alertService.showHttpError(error.response);
|
|
}
|
|
};
|
|
|
|
return {
|
|
examAnswers,
|
|
handleSyncList,
|
|
isFetching,
|
|
retrieveExamAnswers,
|
|
clear,
|
|
removeId,
|
|
removeEntity,
|
|
prepareRemove,
|
|
closeDialog,
|
|
removeExamAnswer,
|
|
t$,
|
|
};
|
|
},
|
|
});
|