import BaseProvider from '~/services/data/BaseProvider' import Address from '~/components/Ui/Search/Address.vue' class StructuresProvider extends BaseProvider { protected normalize (s: any) : Structure { s.n1Id = s.n1Id ? parseInt(s.n1Id) : null s.n2Id = s.n2Id ? parseInt(s.n2Id) : null s.n3Id = s.n3Id ? parseInt(s.n3Id) : null s.n4Id = s.n4Id ? parseInt(s.n4Id) : null s.n5Id = s.n5Id ? parseInt(s.n5Id) : null s.practices = s.practices ? s.practices.split(',') : [] s.addresses = (s.addresses && s.addresses !== '{}') ? JSON.parse('[' + s.addresses + ']') : [] // Define the map address according to priorities s.mapAddress = s.addresses.find((a: Address) => { return a.type === 'ADDRESS_PRACTICE' }) || s.addresses.find((a: Address) => { return a.type === 'ADDRESS_HEAD_OFFICE' }) || s.addresses.find((a: Address) => { return a.type === 'ADDRESS_CONTACT' }) || null // Define the postal address according to priorities s.postalAddress = s.addresses.find((a: Address) => { return a.type === 'ADDRESS_CONTACT' }) || s.addresses.find((a: Address) => { return a.type === 'ADDRESS_HEAD_OFFICE' }) || null s.latitude = s.latitude ? parseFloat(s.latitude) : null s.longitude = s.longitude ? parseFloat(s.longitude) : null s.parents = s.parents ? s.parents.split(',').map((i: string) => Number(i)) : [] s.articles = (s.articles && s.articles !== '{}') ? JSON.parse('[' + s.articles + ']').reverse() : [] return s } async getAll (parentId: number): Promise> { return await this.get( `/api/public/federation_structures/all?parent-id=${parentId}` ).then((res) => { return res.map((s: any) => { return this.normalize(s) }) }) } async getById (organizationId: number): Promise { return await this.get( `/api/public/federation_structures/get?organization-id=${organizationId}` ).then((s) => { return this.normalize(s) }) } } export default StructuresProvider