requestor logic, is_anonymous patch request

This commit is contained in:
Mathieu Jaumotte 2021-05-12 14:49:26 +02:00
parent 0d6a339b53
commit 4fb487dcef
3 changed files with 67 additions and 26 deletions

View File

@ -13,6 +13,29 @@ const getAccompanyingCourse = (id) => {
}); });
}; };
/*
* Endpoint v.2 chill_api_single_accompanying_course__entity
* method PATCH, patch AccompanyingCourse Instance
*
* @id integer - id of accompanyingCourse
* @body Object - dictionary with changes to post
*/
const patchAccompanyingCourse = (id, body) => {
console.log('body', body);
const url = `/api/1.0/person/accompanying-course/${id}.json`;
return fetch(url, {
method: 'PATCH',
headers: {
'Content-Type': 'application/json;charset=utf-8'
},
body: JSON.stringify(body)
})
.then(response => {
if (response.ok) { return response.json(); }
throw Error('Error with request resource response');
});
};
/* /*
* Endpoint v.2 chill_api_single_accompanying_course_participation, * Endpoint v.2 chill_api_single_accompanying_course_participation,
* method POST/DELETE, add/close a participation to the accompanyingCourse * method POST/DELETE, add/close a participation to the accompanyingCourse
@ -50,7 +73,7 @@ const postRequestor = (id, payload, method) => {
const typeId = `${payload.result.type}_id`; const typeId = `${payload.result.type}_id`;
body[typeId] = payload.result[typeId]; body[typeId] = payload.result[typeId];
}; };
console.log(body); console.log('body', body);
const url = `/api/1.0/person/accompanying-course/${id}/requestor.json`; const url = `/api/1.0/person/accompanying-course/${id}/requestor.json`;
return fetch(url, { return fetch(url, {
method: method, method: method,
@ -66,7 +89,8 @@ const postRequestor = (id, payload, method) => {
}; };
export { export {
getAccompanyingCourse, getAccompanyingCourse,
patchAccompanyingCourse,
postParticipation, postParticipation,
postRequestor postRequestor
}; };

View File

@ -4,48 +4,47 @@
<h3>{{ $t('requestor.title') }}</h3> <h3>{{ $t('requestor.title') }}</h3>
<div v-if="accompanyingCourse.requestor"> <div v-if="accompanyingCourse.requestor">
<label>
<input type="checkbox" v-model="isAnonymous" :value="value" />
{{ $t('requestor.is_anonymous') }}
</label>
<dt>{{ $t('requestor.type') }}</dt> <dt>{{ $t('requestor.type') }}</dt>
<dd>{{ accompanyingCourse.requestor.type }}</dd> <dd>{{ accompanyingCourse.requestor.type }}</dd>
<dt>{{ $t('requestor.text') }}</dt> <dt>{{ $t('requestor.text') }}</dt>
<dd>{{ accompanyingCourse.requestor.text }}</dd> <dd>{{ accompanyingCourse.requestor.text }}</dd>
<dt>{{ $t('requestor.anonymous') }}</dt> <dt>{{ $t('requestor.is_anonymous') }}</dt>
<dd>{{ accompanyingCourse.requestorAnonymous }}</dd> <dd>{{ accompanyingCourse.requestorAnonymous }}</dd>
<div v-if="accompanyingCourse.requestor.type === 'person'"> <div v-if="accompanyingCourse.requestor.type === 'person'">
<dt>{{ $t('requestor.person_id') }}</dt> <dt>{{ $t('requestor.person_id') }}</dt>
<dd>{{ accompanyingCourse.requestor.person_id }}</dd> <dd>{{ accompanyingCourse.requestor.person_id }}</dd>
<dt>{{ $t('requestor.birthdate') }}</dt> <dt>{{ $t('requestor.birthdate') }}</dt>
<dd>{{ $d(accompanyingCourse.requestor.birthdate.datetime, 'short') }}</dd> <dd>{{ $d(accompanyingCourse.requestor.birthdate.datetime, 'short') }}</dd>
<dt>{{ $t('requestor.center') }}</dt> <dt>{{ $t('requestor.center') }}</dt>
<dd>{{ accompanyingCourse.requestor.center.name }}</dd> <dd>{{ accompanyingCourse.requestor.center.name }}</dd>
<dt>{{ $t('requestor.firstName') }}</dt> <dt>{{ $t('requestor.firstName') }}</dt>
<dd>{{ accompanyingCourse.requestor.firstName }}</dd> <dd>{{ accompanyingCourse.requestor.firstName }}</dd>
<dt>{{ $t('requestor.lastName') }}</dt> <dt>{{ $t('requestor.lastName') }}</dt>
<dd>{{ accompanyingCourse.requestor.lastName }}</dd> <dd>{{ accompanyingCourse.requestor.lastName }}</dd>
<dt>{{ $t('requestor.phonenumber') }}</dt> <dt>{{ $t('requestor.phonenumber') }}</dt>
<dd>{{ accompanyingCourse.requestor.phonenumber }}</dd> <dd>{{ accompanyingCourse.requestor.phonenumber }}</dd>
<dt>{{ $t('requestor.mobilenumber') }}</dt> <dt>{{ $t('requestor.mobilenumber') }}</dt>
<dd>{{ accompanyingCourse.requestor.mobilenumber }}</dd> <dd>{{ accompanyingCourse.requestor.mobilenumber }}</dd>
<dt>{{ $t('requestor.altNames') }}</dt> <dt>{{ $t('requestor.altNames') }}</dt>
<dd>{{ accompanyingCourse.requestor.altNames }}</dd> <dd>{{ accompanyingCourse.requestor.altNames }}</dd>
</div> </div>
<div v-if="accompanyingCourse.requestor.type === 'thirdparty'"> <div v-if="accompanyingCourse.requestor.type === 'thirdparty'">
<dt>{{ $t('requestor.person_id') }}</dt> <dt>{{ $t('requestor.person_id') }}</dt>
<dd>{{ accompanyingCourse.requestor.thirdparty_id }}</dd> <dd>{{ accompanyingCourse.requestor.thirdparty_id }}</dd>
<dt>{{ $t('requestor.address') }}</dt> <dt>{{ $t('requestor.address') }}</dt>
<dd>{{ accompanyingCourse.requestor.address.text }}</dd> <dd>{{ accompanyingCourse.requestor.address.text }}</dd>
<dt>{{ $t('requestor.location') }}</dt> <dt>{{ $t('requestor.location') }}</dt>
<dd>{{ accompanyingCourse.requestor.address.postcode.name }}</dd> <dd>{{ accompanyingCourse.requestor.address.postcode.name }}</dd>
</div> </div>
</div> </div>
<label>
<input type="checkbox" v-model="isAnonymous" :value="value" />
{{ $t('requestor.is_anonymous') }}
</label>
<button v-if="accompanyingCourse.requestor !== null" <button v-if="accompanyingCourse.requestor !== null"
class="sc-button bt-remove" class="sc-button bt-remove"
:title="$t('action.remove')" :title="$t('action.remove')"

View File

@ -1,6 +1,9 @@
import 'es6-promise/auto'; import 'es6-promise/auto';
import { createStore } from 'vuex'; import { createStore } from 'vuex';
import { getAccompanyingCourse, postParticipation, postRequestor } from '../api'; import { getAccompanyingCourse,
patchAccompanyingCourse,
postParticipation,
postRequestor } from '../api';
const debug = process.env.NODE_ENV !== 'production'; const debug = process.env.NODE_ENV !== 'production';
const id = window.accompanyingCourseId; const id = window.accompanyingCourseId;
@ -35,11 +38,16 @@ let initPromise = getAccompanyingCourse(id)
state.accompanyingCourse.participations.push(participation); state.accompanyingCourse.participations.push(participation);
}, },
removeRequestor(state) { removeRequestor(state) {
console.log('### mutation: removeRequestor');
state.accompanyingCourse.requestor = null; state.accompanyingCourse.requestor = null;
}, },
addRequestor(state, requestor) { addRequestor(state, requestor) {
console.log(requestor); console.log('### mutation: addRequestor', requestor);
state.accompanyingCourse.requestor = requestor; state.accompanyingCourse.requestor = requestor;
},
requestorIsAnonymous(state, value) {
console.log('### mutation: requestorIsAnonymous', value);
state.accompanyingCourse.requestorAnonymous = value;
} }
}, },
actions: { actions: {
@ -69,9 +77,11 @@ let initPromise = getAccompanyingCourse(id)
}); });
}, },
removeRequestor({ commit }) { removeRequestor({ commit }) {
console.log('## action: fetch post requestor');
postRequestor(id, null, 'DELETE') postRequestor(id, null, 'DELETE')
.then(requestor => new Promise((resolve, reject) => { .then(requestor => new Promise((resolve, reject) => {
commit('removeRequestor'); commit('removeRequestor');
commit('requestorIsAnonymous', false);
resolve(); resolve();
})) }))
.catch((error) => { .catch((error) => {
@ -79,7 +89,7 @@ let initPromise = getAccompanyingCourse(id)
}); });
}, },
addRequestor({ commit }, payload) { addRequestor({ commit }, payload) {
console.log(payload); console.log('## action: fetch post requestor: payload', payload);
postRequestor(id, payload, 'POST') postRequestor(id, payload, 'POST')
.then(requestor => new Promise((resolve, reject) => { .then(requestor => new Promise((resolve, reject) => {
commit('addRequestor', requestor); commit('addRequestor', requestor);
@ -90,7 +100,15 @@ let initPromise = getAccompanyingCourse(id)
}); });
}, },
requestorIsAnonymous({ commit }, payload) { requestorIsAnonymous({ commit }, payload) {
console.log('payload', payload); console.log('## action: fetch patch AccompanyingCourse: payload', payload);
patchAccompanyingCourse(id, { requestorAnonymous: payload })
.then(course => new Promise((resolve, reject) => {
commit('requestorIsAnonymous', course.requestorAnonymous)
resolve();
}))
.catch((error) => {
state.errorMsg.push(error.message);
});
} }
} }
}); });