StructuresProvider.ts 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. import BaseProvider from '~/services/data/BaseProvider'
  2. class StructuresProvider extends BaseProvider {
  3. protected normalize (s: any) : Structure {
  4. s.n1Id = s.n1Id ? parseInt(s.n1Id) : null
  5. s.n2Id = s.n2Id ? parseInt(s.n2Id) : null
  6. s.n3Id = s.n3Id ? parseInt(s.n3Id) : null
  7. s.n4Id = s.n4Id ? parseInt(s.n4Id) : null
  8. s.n5Id = s.n5Id ? parseInt(s.n5Id) : null
  9. s.practices = s.practices ? s.practices.split(',') : []
  10. s.addresses = ((s.addresses && s.addresses !== '{}') ? JSON.parse('[' + s.addresses + ']') : []) as Array<Address>
  11. // Define the on-map address according to the chosen priorities
  12. s.mapAddress = s.addresses.find((a: Address) => { return a.type === 'ADDRESS_PRACTICE' }) ||
  13. s.addresses.find((a: Address) => { return a.type === 'ADDRESS_HEAD_OFFICE' }) ||
  14. s.addresses.find((a: Address) => { return a.type === 'ADDRESS_CONTACT' }) ||
  15. null
  16. // Define the postal address according to the chosen priorities
  17. s.postalAddress = s.addresses.find((a: Address) => { return a.type === 'ADDRESS_CONTACT' }) ||
  18. s.addresses.find((a: Address) => { return a.type === 'ADDRESS_HEAD_OFFICE' }) ||
  19. null
  20. s.latitude = s.latitude ? parseFloat(s.latitude) : null
  21. s.longitude = s.longitude ? parseFloat(s.longitude) : null
  22. s.parents = s.parents ? s.parents.split(',').map((i: string) => Number(i)) : []
  23. s.articles = (s.articles && s.articles !== '{}') ? JSON.parse('[' + s.articles + ']').reverse() : []
  24. s.articles.sort((a: Article, b: Article) => { return a.date > b.date ? -1 : 1 })
  25. return s
  26. }
  27. async getAll (parentId: number): Promise<Array<Structure>> {
  28. return await this.get(
  29. `/api/public/federation_structures/all?parent-id=${parentId}`
  30. ).then((res) => {
  31. return res.map((s: any) => { return this.normalize(s) })
  32. })
  33. }
  34. async getById (organizationId: number): Promise<Structure> {
  35. return await this.get(
  36. `/api/public/federation_structures/get?organization-id=${organizationId}`
  37. ).then((s) => {
  38. return this.normalize(s)
  39. })
  40. }
  41. }
  42. export default StructuresProvider