organization.vue.off 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. <!-- Page de détails de l'organization courante -->
  2. <template>
  3. <div>
  4. <LayoutContainer v-if="organization">
  5. <!-- Définit le contenu des trois slots du header de la page -->
  6. <LayoutBannerTop>
  7. <template #block1>
  8. {{ organization.name }}
  9. </template>
  10. <template #block2> N°Siret : {{ organization.siretNumber }} </template>
  11. <template #block3>
  12. {{ organization.description }}
  13. </template>
  14. </LayoutBannerTop>
  15. <!-- Rend le contenu de la page -->
  16. <NuxtPage />
  17. </LayoutContainer>
  18. <LayoutContainer v-else> Pending : {{ emPending }} </LayoutContainer>
  19. </div>
  20. </template>
  21. <script setup lang="ts">
  22. import { computed, ComputedRef } from 'vue'
  23. import { useEntityManager } from '~/composables/data/useEntityManager'
  24. import { useEntityFetch } from '~/composables/data/useEntityFetch'
  25. import { useOrganizationProfileStore } from '~/stores/organizationProfile'
  26. import Organization from '~/models/Organization/Organization'
  27. import ContactPoint from '~/models/Core/ContactPoint'
  28. import BankAccount from '~/models/Core/BankAccount'
  29. import OrganizationAddressPostal from '~/models/Organization/OrganizationAddressPostal'
  30. import AddressPostal from '~/models/Core/AddressPostal'
  31. import Country from '~/models/Core/Country'
  32. import TypeOfPractice from '~/models/Organization/TypeOfPractice'
  33. import Network from '~/models/Network/Network'
  34. import NetworkOrganization from '~/models/Network/NetworkOrganization'
  35. import OrganizationArticle from '~/models/Organization/OrganizationArticle'
  36. import File from '~/models/Core/File'
  37. const { em, pending: emPending } = useEntityManager()
  38. const id: number | null = useOrganizationProfileStore().id
  39. if (id === null) {
  40. throw new Error('Missing organization id')
  41. }
  42. const { fetch } = useEntityFetch()
  43. const { pending } = fetch(Organization, id)
  44. // Get file from store
  45. const organization: ComputedRef<Organization> = computed(() => {
  46. return em.find(Organization, id)
  47. })
  48. // TODO: restaurer le middleware (peut-être utiliser beforeMount?)
  49. // middleware({ $ability, redirect }) {
  50. // if(!$ability.can('display', 'organization_page'))
  51. // return redirect('/error')
  52. // }
  53. onBeforeUnmount(() => {
  54. console.log('flush store') // TODO: vérifier le bon fonctionnement
  55. em.flush(Organization)
  56. em.flush(ContactPoint)
  57. em.flush(BankAccount)
  58. em.flush(OrganizationAddressPostal)
  59. em.flush(AddressPostal)
  60. em.flush(Country)
  61. em.flush(TypeOfPractice)
  62. em.flush(Network)
  63. em.flush(NetworkOrganization)
  64. em.flush(OrganizationArticle)
  65. em.flush(File)
  66. })
  67. </script>