mirror of
https://gitlab.com/Chill-Projet/chill-bundles.git
synced 2025-06-07 18:44:08 +00:00
accompanying course: confirm DRAFT acc. period when suggestedReferrers is unique or null
This commit is contained in:
parent
17076024f7
commit
ce594692b3
@ -59,9 +59,35 @@
|
|||||||
</template>
|
</template>
|
||||||
<template v-slot:body>
|
<template v-slot:body>
|
||||||
<p>{{ $t('confirm.sure_description') }}</p>
|
<p>{{ $t('confirm.sure_description') }}</p>
|
||||||
|
<div v-if="accompanyingCourse.user === null">
|
||||||
|
<div v-if="filteredReferrersSuggested.length === 0">
|
||||||
|
<p class="alert alert-warning">{{ $t('confirm.no_suggested_referrer') }}</p>
|
||||||
|
</div>
|
||||||
|
<div v-if="filteredReferrersSuggested.length === 1" class="alert alert-info">
|
||||||
|
<p>{{ $t('confirm.one_suggested_referrer') }}:</p>
|
||||||
|
<ul class="list-suggest add-items inline">
|
||||||
|
<li>
|
||||||
|
<user-render-box-badge :user="filteredReferrersSuggested[0]"></user-render-box-badge>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<p>{{ $t('confirm.choose_suggested_referrer') }}</p>
|
||||||
|
<ul class="record_actions">
|
||||||
|
<li>
|
||||||
|
<button class="btn btn-save mr-5" @click="chooseSuggestedReferrer">
|
||||||
|
{{ $t('confirm.choose_button') }}
|
||||||
|
</button>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<button class="btn btn-secondary" @click="doNotChooseSuggestedReferrer">
|
||||||
|
{{ $t('confirm.do_not_choose_button') }}
|
||||||
|
</button>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<template v-slot:footer>
|
<template v-slot:footer>
|
||||||
<button class="btn btn-danger" @click="confirmCourse">
|
<button class="btn btn-danger" :disabled="disableConfirm" @click="confirmCourse">
|
||||||
{{ $t('confirm.ok') }}
|
{{ $t('confirm.ok') }}
|
||||||
</button>
|
</button>
|
||||||
</template>
|
</template>
|
||||||
@ -74,11 +100,13 @@
|
|||||||
<script>
|
<script>
|
||||||
import {mapGetters, mapState} from "vuex";
|
import {mapGetters, mapState} from "vuex";
|
||||||
import Modal from 'ChillMainAssets/vuejs/_components/Modal';
|
import Modal from 'ChillMainAssets/vuejs/_components/Modal';
|
||||||
|
import UserRenderBoxBadge from "ChillMainAssets/vuejs/_components/Entity/UserRenderBoxBadge";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "Confirm",
|
name: "Confirm",
|
||||||
components: {
|
components: {
|
||||||
Modal,
|
Modal,
|
||||||
|
UserRenderBoxBadge
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
@ -115,13 +143,15 @@ export default {
|
|||||||
msg: 'confirm.job_not_valid',
|
msg: 'confirm.job_not_valid',
|
||||||
anchor: '#section-80'
|
anchor: '#section-80'
|
||||||
},
|
},
|
||||||
}
|
},
|
||||||
|
clickedDoNotChooseReferrer: false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
...mapState([
|
...mapState({
|
||||||
'accompanyingCourse'
|
accompanyingCourse: state => state.accompanyingCourse,
|
||||||
]),
|
filteredReferrersSuggested: state => state.filteredReferrersSuggested
|
||||||
|
}),
|
||||||
...mapGetters([
|
...mapGetters([
|
||||||
'isParticipationValid',
|
'isParticipationValid',
|
||||||
'isSocialIssueValid',
|
'isSocialIssueValid',
|
||||||
@ -135,6 +165,11 @@ export default {
|
|||||||
deleteLink() {
|
deleteLink() {
|
||||||
return `/fr/parcours/${this.accompanyingCourse.id}/delete`; //TODO locale
|
return `/fr/parcours/${this.accompanyingCourse.id}/delete`; //TODO locale
|
||||||
},
|
},
|
||||||
|
disableConfirm() {
|
||||||
|
return this.clickedDoNotChooseReferrer
|
||||||
|
? (this.accompanyingCourse.user === null && this.filteredReferrersSuggested.length === 0)
|
||||||
|
: (this.accompanyingCourse.user === null && this.filteredReferrersSuggested.length === 0) || (this.filteredReferrersSuggested.length === 1);
|
||||||
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
confirmCourse() {
|
confirmCourse() {
|
||||||
@ -146,6 +181,19 @@ export default {
|
|||||||
this.$toast.open({message: 'An error occurred'})
|
this.$toast.open({message: 'An error occurred'})
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
},
|
||||||
|
chooseSuggestedReferrer() {
|
||||||
|
this.$store.dispatch('updateReferrer', this.filteredReferrersSuggested[0])
|
||||||
|
.catch(({name, violations}) => {
|
||||||
|
if (name === 'ValidationException' || name === 'AccessException') {
|
||||||
|
violations.forEach((violation) => this.$toast.open({message: violation}));
|
||||||
|
} else {
|
||||||
|
this.$toast.open({message: 'An error occurred'})
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
doNotChooseSuggestedReferrer() {
|
||||||
|
this.clickedDoNotChooseReferrer = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -43,9 +43,9 @@
|
|||||||
@select="updateReferrer">
|
@select="updateReferrer">
|
||||||
</VueMultiselect>
|
</VueMultiselect>
|
||||||
|
|
||||||
<template v-if="referrersSuggested.length > 0">
|
<template v-if="filteredReferrersSuggested.length > 0">
|
||||||
<ul class="list-suggest add-items inline">
|
<ul class="list-suggest add-items inline">
|
||||||
<li v-for="(u, i) in referrersSuggested" @click="updateReferrer(u)" :key="`referrer-${i}`">
|
<li v-for="(u, i) in filteredReferrersSuggested" @click="updateReferrer(u)" :key="`referrer-${i}`">
|
||||||
<span>
|
<span>
|
||||||
<user-render-box-badge :user="u"></user-render-box-badge>
|
<user-render-box-badge :user="u"></user-render-box-badge>
|
||||||
</span>
|
</span>
|
||||||
@ -103,20 +103,7 @@ export default {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}),
|
}),
|
||||||
referrersSuggested: state => state.referrersSuggested.filter(u => {
|
filteredReferrersSuggested: state => state.filteredReferrersSuggested,
|
||||||
if (u.user_job && state.accompanyingCourse.job && state.accompanyingCourse.user) {
|
|
||||||
return u.user_job.id === state.accompanyingCourse.job.id && state.accompanyingCourse.user.id !== u.id
|
|
||||||
} else {
|
|
||||||
if (null === state.accompanyingCourse.user) {
|
|
||||||
if (u.user_job && state.accompanyingCourse.job) {
|
|
||||||
return u.user_job.id === state.accompanyingCourse.job.id
|
|
||||||
} else {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return state.accompanyingCourse.user.id !== u.id;
|
|
||||||
}
|
|
||||||
}),
|
|
||||||
}),
|
}),
|
||||||
...mapGetters([
|
...mapGetters([
|
||||||
'isJobValid'
|
'isJobValid'
|
||||||
@ -127,7 +114,6 @@ export default {
|
|||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
updateReferrer(value) {
|
updateReferrer(value) {
|
||||||
//console.log('value', value);
|
|
||||||
this.$store.dispatch('updateReferrer', value)
|
this.$store.dispatch('updateReferrer', value)
|
||||||
.catch(({name, violations}) => {
|
.catch(({name, violations}) => {
|
||||||
if (name === 'ValidationException' || name === 'AccessException') {
|
if (name === 'ValidationException' || name === 'AccessException') {
|
||||||
|
@ -139,7 +139,12 @@ const appMessages = {
|
|||||||
sure: "Êtes-vous sûr ?",
|
sure: "Êtes-vous sûr ?",
|
||||||
sure_description: "Une fois le changement confirmé, il ne sera plus possible de le remettre à l'état de brouillon !",
|
sure_description: "Une fois le changement confirmé, il ne sera plus possible de le remettre à l'état de brouillon !",
|
||||||
ok: "Confirmer le parcours",
|
ok: "Confirmer le parcours",
|
||||||
delete: "Supprimer le parcours"
|
delete: "Supprimer le parcours",
|
||||||
|
no_suggested_referrer: "Il n'y a aucun référent qui puisse être désigné pour ce parcours. Vérifiez la localisation du parcours, les métiers et service indiqués. Si le problème persiste, contactez l'administrateur du logiciel.",
|
||||||
|
one_suggested_referrer: "Un unique référent peut être suggéré pour ce parcours",
|
||||||
|
choose_suggested_referrer: "Voulez-vous le désigner directement ?",
|
||||||
|
choose_button: "Désigner",
|
||||||
|
do_not_choose_button: "Ne pas désigner"
|
||||||
},
|
},
|
||||||
job: {
|
job: {
|
||||||
label: "Métier",
|
label: "Métier",
|
||||||
|
@ -35,6 +35,7 @@ let initPromise = Promise.all([scopesPromise, accompanyingCoursePromise])
|
|||||||
scopesAtBackend: accompanyingCourse.scopes.map(scope => scope),
|
scopesAtBackend: accompanyingCourse.scopes.map(scope => scope),
|
||||||
// the users which are available for referrer
|
// the users which are available for referrer
|
||||||
referrersSuggested: [],
|
referrersSuggested: [],
|
||||||
|
filteredReferrersSuggested: [],
|
||||||
// all the users available
|
// all the users available
|
||||||
users: [],
|
users: [],
|
||||||
permissions: {}
|
permissions: {}
|
||||||
@ -210,6 +211,22 @@ let initPromise = Promise.all([scopesPromise, accompanyingCoursePromise])
|
|||||||
return u;
|
return u;
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
setFilteredReferrersSuggested(state) {
|
||||||
|
state.filteredReferrersSuggested = state.referrersSuggested.filter(u => {
|
||||||
|
if (u.user_job && state.accompanyingCourse.job && state.accompanyingCourse.user) {
|
||||||
|
return u.user_job.id === state.accompanyingCourse.job.id && state.accompanyingCourse.user.id !== u.id
|
||||||
|
} else {
|
||||||
|
if (null === state.accompanyingCourse.user) {
|
||||||
|
if (u.user_job && state.accompanyingCourse.job) {
|
||||||
|
return u.user_job.id === state.accompanyingCourse.job.id
|
||||||
|
} else {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return state.accompanyingCourse.user.id !== u.id;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
confirmAccompanyingCourse(state, response) {
|
confirmAccompanyingCourse(state, response) {
|
||||||
//console.log('### mutation: confirmAccompanyingCourse: response', response);
|
//console.log('### mutation: confirmAccompanyingCourse: response', response);
|
||||||
state.accompanyingCourse.step = response.step;
|
state.accompanyingCourse.step = response.step;
|
||||||
@ -663,6 +680,7 @@ let initPromise = Promise.all([scopesPromise, accompanyingCoursePromise])
|
|||||||
return makeFetch('PATCH', url, body)
|
return makeFetch('PATCH', url, body)
|
||||||
.then((response) => {
|
.then((response) => {
|
||||||
commit('updateReferrer', response.user);
|
commit('updateReferrer', response.user);
|
||||||
|
commit('setFilteredReferrersSuggested');
|
||||||
})
|
})
|
||||||
.catch((error) => {
|
.catch((error) => {
|
||||||
commit('catchError', error);
|
commit('catchError', error);
|
||||||
@ -676,6 +694,7 @@ let initPromise = Promise.all([scopesPromise, accompanyingCoursePromise])
|
|||||||
return makeFetch('PATCH', url, body)
|
return makeFetch('PATCH', url, body)
|
||||||
.then((response) => {
|
.then((response) => {
|
||||||
commit('updateJob', response.job);
|
commit('updateJob', response.job);
|
||||||
|
commit('setFilteredReferrersSuggested');
|
||||||
})
|
})
|
||||||
.catch((error) => {
|
.catch((error) => {
|
||||||
commit('catchError', error);
|
commit('catchError', error);
|
||||||
@ -685,6 +704,7 @@ let initPromise = Promise.all([scopesPromise, accompanyingCoursePromise])
|
|||||||
async fetchReferrersSuggested({ state, commit}) {
|
async fetchReferrersSuggested({ state, commit}) {
|
||||||
let users = await getReferrersSuggested(state.accompanyingCourse);
|
let users = await getReferrersSuggested(state.accompanyingCourse);
|
||||||
commit('setReferrersSuggested', users);
|
commit('setReferrersSuggested', users);
|
||||||
|
commit('setFilteredReferrersSuggested');
|
||||||
if (
|
if (
|
||||||
null === state.accompanyingCourse.user
|
null === state.accompanyingCourse.user
|
||||||
&& !state.accompanyingCourse.confidential
|
&& !state.accompanyingCourse.confidential
|
||||||
|
Loading…
x
Reference in New Issue
Block a user