organization.vue 2.6 KB

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