import { fetchWrapper } from "@/shared/fetchWrapper"; import { genderOptions } from "@/pages/newMedicalCard/utils/medicalConfig"; const state = () => ({ medicalCard: {}, contactsData: { phones: [], emails: [], networks: [], }, basicData: { personalData: { last_name: null, first_name: null, patronymic: null, gender: null, birth_date: null, photo: null, }, registrationAddress: { region: null, city: null, street: null, house_number: null, apartment_number: null, }, residenceAddress: { region: null, city: null, street: null, house_number: null, apartment_number: null, }, insuranceDMS: { series: null, number: null, photo: null, id: null, organization: null, }, insuranceOMS: { series: null, number: null, photo: null, id: null, organization: null, }, benefit: { name: null, discount: null, photo: null, }, }, documents: { passport: { series: null, number: null, issued_by_org: null, issued_by_org_code: null, issued_by_date: null, photo: null, }, insurance_number: { insurance_number: null, photo_insurance_number: null, }, tax_identification_number: { tax_identification_number: null, photo_tax_identification_number: null, }, }, avatar: "", }); const getters = { getBasicData(state, rootState) { let registrationAddress = state.medicalCard?.person?.address?.find((el) => el.registration_flg) || {}; let residenceAddress = state?.medicalCard?.person?.address?.find((el) => el.residence_flg) || {}; let person = state.medicalCard.person; return { personalData: { last_name: person?.last_name, first_name: person?.first_name, patronymic: person?.patronymic, gender: person?.gender && genderOptions.find((el) => el.id === person?.gender), birth_date: person?.birth_date ? new Date(person?.birth_date) : new Date(), photo: person?.photo ? { photo: rootState.getUrl + person.photo, file: null, } : {}, id: person?.id, }, registrationAddress: { region: registrationAddress?.region, city: registrationAddress?.city, street: registrationAddress?.street, house_number: registrationAddress?.house_number, apartment_number: registrationAddress?.apartment_number, id: registrationAddress?.id, }, residenceAddress: { region: residenceAddress?.region, city: residenceAddress?.city, street: residenceAddress?.street, house_number: residenceAddress?.house_number, apartment_number: residenceAddress?.apartment_number, id: residenceAddress?.id, }, insuranceDMS: { series: person?.insurance_policy?.find((e) => e.title === "DMS") ?.series, number: person.insurance_policy.find((e) => e.title === "DMS")?.number, photo: person.insurance_policy.find((e) => e.title === "DMS")?.photo ? { photo: rootState.getUrl + person.insurance_policy.find((e) => e.title === "DMS")?.photo, file: null, } : {}, id: person?.insurance_policy?.find((e) => e.title === "DMS")?.id, organization: person?.insurance_policy?.find((e) => e.title === "DMS") ?.organization, }, insuranceOMS: { series: person?.insurance_policy?.find((e) => e.title === "OMS") ?.series, number: person.insurance_policy.find((e) => e.title === "OMS")?.number, photo: person.insurance_policy.find((e) => e.title === "OMS")?.photo ? { photo: rootState.getUrl + person.insurance_policy.find((e) => e.title === "OMS")?.photo, file: null, } : {}, id: person?.insurance_policy?.find((e) => e.title === "OMS")?.id, organization: person?.insurance_policy?.find((e) => e.title === "OMS") ?.organization, }, benefit: { name: person?.benefit?.name, discount: person?.benefit?.discount, }, }; }, 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" ); return { phones: phones, emails: emails, networks: networks, }; }, getAvatar(state) { let lastName = state?.medicalCard?.person?.last_name; let firstName = state?.medicalCard?.person?.first_name; return lastName?.[0] + firstName?.[0]; }, }; const actions = { getMedicalCardData({ commit }) { fetchWrapper .get( `medical_card/medical_history/${localStorage.getItem( "medicalId" )}/detail/` ) .then((res) => { commit("setMedicalCard", res); commit("setBasicData"); commit("setContactsData"); }); }, returnInitData({ commit }) { commit("setBasicData"); }, removeMedicalCardData({ commit, rootState }) { fetchWrapper .del( `medical_card/medical_history/${localStorage.getItem( "medicalId" )}/delete/` ) .then(() => { rootState.routingHistory.back(); commit("setMedicalCard", {}); localStorage.removeItem("medicalId"); }); }, }; const mutations = { setMedicalCard(state, card) { state.medicalCard = card; }, setBasicData(state) { state.basicData = { ...this.getters.getBasicData }; }, setContactsData(state) { state.contactsData = { ...this.getters.getContactsData }; }, }; export default { state, getters, actions, mutations, };