WIP Добавил обновление, контактов персоны

This commit is contained in:
DwCay
2023-04-14 20:06:34 +03:00
parent d67ec3c6bb
commit 0ecb56139a
4 changed files with 157 additions and 47 deletions

View File

@@ -131,19 +131,19 @@ const getters = {
};
},
getContactsData(state) {
let phones = state.medicalCard.person.contacts.filter(
(el) => el.kind === "PHONE"
);
let emails = state.medicalCard.person.contacts.filter(
(el) => el.kind === "EMAIL"
);
let networks = state.medicalCard.person.contacts.filter(
(el) => el.kind !== "PHONE" && el.kind !== "EMAIL"
);
let phones = state.medicalCard.person.contacts
.filter((el) => el.kind === "PHONE")
.map((el) => ({ ...el }));
let emails = state.medicalCard.person.contacts
.filter((el) => el.kind === "EMAIL")
.map((el) => ({ ...el }));
let networks = state.medicalCard.person.contacts
.filter((el) => el.kind !== "PHONE" && el.kind !== "EMAIL")
.map((el) => ({ ...el }));
return {
phones: phones,
emails: emails,
networks: networks,
phones: [...phones],
emails: [...emails],
networks: [...networks],
};
},
getAvatar(state) {
@@ -170,6 +170,7 @@ const actions = {
},
returnInitData({ commit }) {
commit("setBasicData");
commit("setContactsData");
},
removeMedicalCardData({ commit, rootState }) {
fetchWrapper
@@ -184,6 +185,41 @@ const actions = {
localStorage.removeItem("medicalId");
});
},
updateContactsData({ commit, state }) {
const personId = state.medicalCard.person.id;
const initContacts = state.medicalCard.person.contacts;
const allNewContacts = [
...state.contactsData.phones,
...state.contactsData.emails,
...state.contactsData.networks,
];
let requestDelete = initContacts
.filter((el) => !allNewContacts.find((newNet) => newNet.id === el.id))
.map((el) => fetchWrapper.del(`general/contact/${el.id}/delete/`));
const request = allNewContacts
.map((network) => {
let initNetwork = initContacts.find((el) => el.id === network.id);
if (!network.id) {
return fetchWrapper.post(`general/contact/create/`, {
person: personId,
...network,
});
}
if (network.id && network.username !== initNetwork.username) {
return fetchWrapper.post(`general/contact/${network.id}/update/`, {
person: personId,
username: network.username,
kind: network.kind,
});
}
return Promise.resolve();
})
.concat(requestDelete);
return Promise.allSettled(request).then(() =>
actions.getMedicalCardData({ commit })
);
},
};
const mutations = {