useMenu.ts 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. import { ItemMenu, ItemsMenu } from '~/types/interfaces'
  2. import { getAccessMenu } from '~/composables/layout/Menus/accessMenu'
  3. import { getAgendaMenu } from '~/composables/layout/Menus/agendaMenu'
  4. import { getEquipmentMenu } from '~/composables/layout/Menus/equipmentMenu'
  5. import { getEducationalMenu } from '~/composables/layout/Menus/educationalMenu'
  6. import { getBillingMenu } from '~/composables/layout/Menus/billingMenu'
  7. import { getCommunicationMenu } from '~/composables/layout/Menus/communicationMenu'
  8. import { getDonorsMenu } from '~/composables/layout/Menus/donorsMenu'
  9. import { getMedalsMenu } from '~/composables/layout/Menus/medalsMenu'
  10. import { getStatsMenu } from '~/composables/layout/Menus/statsMenu'
  11. import { getCotisationsMenu } from '~/composables/layout/Menus/cotisationsMenu'
  12. import { getAdmin2iosMenu } from '~/composables/layout/Menus/admin2iosMenu'
  13. import { getWebsiteMenu } from '~/composables/layout/Menus/websiteMenu'
  14. import { getConfigurationMenu } from '~/composables/layout/Menus/configurationMenu'
  15. import { getMyFamilyMenu } from '~/composables/layout/Menus/myFamilyMenu'
  16. import { getMyAccessesMenu } from '~/composables/layout/Menus/myAccessesMenu'
  17. import { getAccountMenu } from '~/composables/layout/Menus/accountMenu'
  18. import {getParametersMenu} from "~/composables/layout/Menus/parametersMenu";
  19. import {Ref} from "@vue/reactivity";
  20. import {useAccessProfileStore} from "~/store/profile/access";
  21. /**
  22. * @category composables/layout
  23. * @class Menu
  24. * Use Classe pour la construction du Menu
  25. */
  26. class Menu {
  27. /**
  28. * Construit le menu et mets à jour le state du profile d'access
  29. */
  30. getLateralMenu (): Ref {
  31. const menu: ItemsMenu = []
  32. const accessMenu: ItemMenu | null = getAccessMenu()
  33. if (accessMenu) { menu.push(accessMenu) }
  34. const agendaMenu: ItemMenu | null = getAgendaMenu()
  35. if (agendaMenu) { menu.push(agendaMenu) }
  36. const equipmentMenu: ItemMenu | null = getEquipmentMenu()
  37. if (equipmentMenu) { menu.push(equipmentMenu) }
  38. const educationalMenu: ItemMenu | null = getEducationalMenu()
  39. if (educationalMenu) { menu.push(educationalMenu) }
  40. const billingMenu: ItemMenu | null = getBillingMenu()
  41. if (billingMenu) { menu.push(billingMenu) }
  42. const communicationMenu: ItemMenu | null = getCommunicationMenu()
  43. if (communicationMenu) { menu.push(communicationMenu) }
  44. const donorsMenu: ItemMenu | null = getDonorsMenu()
  45. if (donorsMenu) { menu.push(donorsMenu) }
  46. const medalsMenu: ItemMenu | null = getMedalsMenu()
  47. if (medalsMenu) { menu.push(medalsMenu) }
  48. const websiteMenu: ItemMenu | null = getWebsiteMenu().getMenu()
  49. if (websiteMenu) { menu.push(websiteMenu) }
  50. const cotisationsMenu: ItemMenu | null = getCotisationsMenu()
  51. if (cotisationsMenu) { menu.push(cotisationsMenu) }
  52. const statsMenu: ItemMenu | null = getStatsMenu()
  53. if (statsMenu) { menu.push(statsMenu) }
  54. const admin2iosMenu: ItemMenu | null = getAdmin2iosMenu()
  55. if (admin2iosMenu) { menu.push(admin2iosMenu) }
  56. // Si l'utilisateur possède au moins un menu alors le menu latéral sera accessible
  57. const accessProfileStore = useAccessProfileStore()
  58. accessProfileStore.hasLateralMenu = menu.length > 0
  59. return ref(menu)
  60. }
  61. /**
  62. * Construit le menu configuration et met à jour le state du profile d'access
  63. */
  64. getConfigurationMenu (): Ref {
  65. const menu: ItemMenu | null = getConfigurationMenu()
  66. // Si l'utilisateur possède au moins un menu alors le menu configuration sera accessible
  67. const accessProfileStore = useAccessProfileStore()
  68. accessProfileStore.hasConfigurationMenu = menu != null
  69. return ref(menu)
  70. }
  71. /**
  72. * Construit le menu Mon Compte
  73. */
  74. getAccountMenu (): Ref {
  75. return ref(getAccountMenu())
  76. }
  77. /**
  78. * Construit le menu Mes structure et mets à jour le state du profile d'access
  79. */
  80. getMyAccessesMenu (): Ref {
  81. const menu: ItemMenu | null = getMyAccessesMenu()
  82. // Si l'utilisateur possède au moins un menu alors le menu mes structures sera accessible
  83. const accessProfileStore = useAccessProfileStore()
  84. accessProfileStore.hasAccessesMenu = menu != null
  85. return ref(menu)
  86. }
  87. /**
  88. * Construit le menu Changement d'utilisateur et mets à jour le state du profile d'access
  89. */
  90. getMyFamilyMenu (): Ref {
  91. const menu: ItemMenu | null = getMyFamilyMenu()
  92. // Si l'utilisateur possède au moins un menu alors le menu changement d'utilisateur sera accessible
  93. const accessProfileStore = useAccessProfileStore()
  94. accessProfileStore.hasFamilyMenu = menu != null
  95. return ref(menu)
  96. }
  97. /**
  98. * Construit le menu site internet du header
  99. */
  100. getWebSiteMenu (): Ref {
  101. return ref(getWebsiteMenu().getHeaderMenu())
  102. }
  103. /**
  104. * Construit le menu Paramètres
  105. */
  106. getParametersMenu (): Ref {
  107. const menu: ItemsMenu | null = getParametersMenu()
  108. // Si l'utilisateur possède au moins un menu alors le menu latéral sera accessible
  109. const accessProfileStore = useAccessProfileStore()
  110. accessProfileStore.hasLateralMenu = true
  111. return ref(menu)
  112. }
  113. }
  114. export function UseMenu() {
  115. return new Menu()
  116. }