diff --git a/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourseWorkEdit/components/DocumentsList.vue b/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourseWorkEdit/components/DocumentsList.vue index b295f2ba6..d1506fcab 100644 --- a/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourseWorkEdit/components/DocumentsList.vue +++ b/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourseWorkEdit/components/DocumentsList.vue @@ -231,6 +231,7 @@ v-model:selectedAcpw="selectedAcpw" :accompanying-period-id="accompanyingPeriodId" :is-evaluation-selector="true" + :ignore-accompanying-period-work-ids="[accompanyingPeriodWorkId]" @close-modal="showAccompanyingPeriodSelector = false" @update:selectedEvaluation="selectedEvaluation = $event" /> @@ -254,7 +255,7 @@ import { import { ref, watch } from "vue"; import AccompanyingPeriodWorkSelectorModal from "ChillPersonAssets/vuejs/_components/AccompanyingPeriodWorkSelector/AccompanyingPeriodWorkSelectorModal.vue"; -defineProps(["documents", "docAnchorId", "accompanyingPeriodId"]); +defineProps(["documents", "docAnchorId", "accompanyingPeriodId", "accompanyingPeriodWorkId"]); const emit = defineEmits([ "inputDocumentTitle", "removeDocument", diff --git a/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourseWorkEdit/components/FormEvaluation.vue b/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourseWorkEdit/components/FormEvaluation.vue index bbd26da5d..eb7ce8b5c 100644 --- a/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourseWorkEdit/components/FormEvaluation.vue +++ b/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourseWorkEdit/components/FormEvaluation.vue @@ -25,6 +25,7 @@ :documents="evaluation.documents" :docAnchorId="docAnchorId" :accompanyingPeriodId="store.state.work.accompanyingPeriod.id" + :accompanying-period-work-id="store.state.work.id" @inputDocumentTitle="onInputDocumentTitle" @removeDocument="removeDocument" @duplicateDocument="duplicateDocument" diff --git a/src/Bundle/ChillPersonBundle/Resources/public/vuejs/_components/AccompanyingPeriodWorkSelector/AccompanyingPeriodWorkSelectorModal.vue b/src/Bundle/ChillPersonBundle/Resources/public/vuejs/_components/AccompanyingPeriodWorkSelector/AccompanyingPeriodWorkSelectorModal.vue index 0174902cc..12c377892 100644 --- a/src/Bundle/ChillPersonBundle/Resources/public/vuejs/_components/AccompanyingPeriodWorkSelector/AccompanyingPeriodWorkSelectorModal.vue +++ b/src/Bundle/ChillPersonBundle/Resources/public/vuejs/_components/AccompanyingPeriodWorkSelector/AccompanyingPeriodWorkSelectorModal.vue @@ -75,7 +75,7 @@ import { ACPW_DUPLICATE_SELECT_ACCOMPANYING_PERIOD_WORK, CONFIRM, } from "translator"; -import { makeFetch } from "ChillMainAssets/lib/api/apiMethods"; +import {fetchResults, makeFetch} from "ChillMainAssets/lib/api/apiMethods"; import AccompanyingPeriodWorkEvaluationList from "ChillPersonAssets/vuejs/_components/AccompanyingPeriodWorkSelector/AccompanyingPeriodWorkEvaluationList.vue"; import { AccompanyingPeriodWorkEvaluation } from "../../../types"; @@ -85,10 +85,11 @@ const showModal = ref(false); const accompanyingPeriodWorks = ref([]); const evaluations = ref([]); -const props = defineProps({ - accompanyingPeriodId: String, - isEvaluationSelector: Boolean, -}); +const props = defineProps<{ + accompanyingPeriodId: string, + isEvaluationSelector: boolean, + ignoreAccompanyingPeriodWorkIds: number[], +}>(); const emit = defineEmits<{ pickWork: [payload: { work: AccompanyingPeriodWork | null }]; @@ -105,22 +106,19 @@ onMounted(() => { showModal.value = true; }); -const getAccompanyingPeriodWorks = (periodId: number) => { +const getAccompanyingPeriodWorks = async (periodId: number) => { const url = `/api/1.0/person/accompanying-course/${periodId}/works.json`; - makeFetch("GET", url) - .then((response) => { - if (props.isEvaluationSelector) { - accompanyingPeriodWorks.value = response.results.filter( - (acpw) => acpw.accompanyingPeriodWorkEvaluations.length > 0, - ); - } else { - accompanyingPeriodWorks.value = response.results; - } - }) - .catch((error) => { - console.log(error); - }); + const accompanyingPeriodWorksFetched = await fetchResults(url); + if (props.isEvaluationSelector) { + accompanyingPeriodWorks.value = accompanyingPeriodWorksFetched.filter( + (acpw: AccompanyingPeriodWork) => acpw.accompanyingPeriodWorkEvaluations.length > 0 + && typeof acpw.id !== "undefined" + && !props.ignoreAccompanyingPeriodWorkIds.includes(acpw.id), + ); + } else { + accompanyingPeriodWorks.value = accompanyingPeriodWorksFetched + } }; watch(selectedAcpw, (newValue) => {