household editor: allow to move without any household

This commit is contained in:
Julien Fastré 2021-06-10 16:17:59 +02:00
parent 38c06977ca
commit b2ce5fca38
3 changed files with 49 additions and 20 deletions

View File

@ -1,7 +1,12 @@
<template>
<h2>{{ $t('household_members_editor.concerned.title') }}</h2>
<h3>{{ $t('household_members_editor.concerned.persons_to_positionnate') }}</h3>
<h3 v-if="needsPositionning">
{{ $t('household_members_editor.concerned.persons_to_positionnate') }}
</h3>
<h3 v-else>
{{ $t('household_members_editor.concerned.persons_leaving') }}
</h3>
<div v-if="noPerson">
<div class="alert alert-info">
@ -40,7 +45,7 @@
</ul>
</div>
</div>
<div class="item-row move_to">
<div v-if="needsPositionning" class="item-row move_to">
<div class="item-col">
<p class="move_hint">{{ $t('household_members_editor.concerned.move_to') }}:</p>
@ -79,7 +84,7 @@
</div>
<div class="positions">
<div v-if="needsPositionning" class="positions">
<div
v-for="position in positions"
>
@ -159,6 +164,7 @@ export default {
'concUnpositionned',
'positions',
'concByPosition',
'needsPositionning'
]),
noPerson () {
return this.$store.getters.persons.length === 0;

View File

@ -10,6 +10,7 @@ const appMessages = {
create_household: "Créer un ménage",
search_household: "Chercher un ménage",
will_leave_any_household: "Ne rejoignent pas de ménage",
leave_without_household: "Sans nouveau ménage"
},
concerned: {
title: "Usagers concernés",
@ -17,6 +18,7 @@ const appMessages = {
search: "Rechercher des usagers",
move_to: "Déplacer vers",
persons_to_positionnate: 'Usagers à positionner',
persons_leaving: "Usagers quittant leurs ménages",
},
drop_persons_here: "Glissez-déposez ici les usagers pour la position \"{position}\"",
all_positionnated: "Tous les usagers sont positionnés",

View File

@ -65,35 +65,48 @@ const store = createStore({
.find(conc => conc.person.id === person_id)
;
},
needsPositionning(state) {
return state.forceLeaveWithoutHousehold === false;
},
buildPayload: (state) => {
let
conc,
payload_conc,
payload = {
concerned: [],
destination: {
id: state.household.id,
type: state.household.type
}
destination: null
}
;
if (state.forceLeaveWithoutHousehold === false) {
payload.destination = {
id: state.household.id,
type: state.household.type
};
}
for (let i in state.concerned) {
conc = state.concerned[i];
payload.concerned.push({
payload_conc = {
person: {
id: conc.person.id,
type: conc.person.type
},
position: {
id: conc.position.id,
type: conc.position.type
},
holder: conc.holder,
comment: conc.comment,
start_date: {
datetime: datetimeToISO(state.startDate)
}
});
};
if (state.forceLeaveWithoutHousehold === false) {
payload_conc.position = {
id: conc.position.id,
type: conc.position.type
};
payload_conc.holder = conc.holder;
payload_conc.comment = conc.comment;
}
payload.concerned.push(payload_conc);
}
return payload;
@ -137,6 +150,7 @@ const store = createStore({
},
createHousehold(state) {
state.household = { type: 'household', members: [], address: null }
state.forceLeaveWithoutHousehold = false;
},
forceLeaveWithoutHousehold(state) {
state.household = null;
@ -202,12 +216,19 @@ const store = createStore({
commit('setWarnings', warnings);
},
confirm({ getters }) {
let payload = getters.buildPayload;
confirm({ getters, state }) {
let payload = getters.buildPayload,
person_id,
household_id;
householdMove(payload).then(household => {
let id = household.id;
// nothing to do anymore here, bye-bye !
window.location.replace(`/fr/person/household/{id}/members`);
if (household === null) {
person_id = getters.persons[0].id;
window.location.replace(`/fr/person/${person_id}/general`);
} else {
household_id = household.id;
// nothing to do anymore here, bye-bye !
window.location.replace(`/fr/person/household/${household_id}/members`);
}
});
},
}