myFamilyMenuBuilder.ts 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. import * as _ from 'lodash-es'
  2. import AbstractMenuBuilder from '~/services/layout/menuBuilder/abstractMenuBuilder'
  3. import type { MenuGroup, MenuItems } from '~/types/layout'
  4. import { MENU_LINK_TYPE } from '~/types/enum/layout'
  5. /**
  6. * Menu Famille
  7. */
  8. export default class MyFamilyMenuBuilder extends AbstractMenuBuilder {
  9. static readonly menuName = 'MyFamily'
  10. /**
  11. * Construit le menu Header Changement d'utilisateur ou null si aucune page accessible
  12. */
  13. build(): MenuGroup | null {
  14. const children: MenuItems = []
  15. // Si Access des membres de la familles (enfants)
  16. Object.entries(this.accessProfile.familyAccesses).forEach((access) => {
  17. const url = `/switch_user/${this.organizationProfile.id}/${this.accessProfile.id}/${access.id}`
  18. const icon = {
  19. avatarId: access.avatarId,
  20. avatarByDefault:
  21. access.gender === 'MISTER'
  22. ? '/images/default/men-1.png'
  23. : '/images/default/women-1.png',
  24. }
  25. children.push(
  26. this.createItem(
  27. `${access.givenName} ${access.name}`,
  28. icon,
  29. url,
  30. MENU_LINK_TYPE.V1,
  31. ),
  32. )
  33. })
  34. // Si on est en compte switch, on doit pouvoir retourner au compte d'origine
  35. const originalAccess = this.accessProfile.originalAccess
  36. if (
  37. originalAccess &&
  38. !_.isEmpty(originalAccess) &&
  39. !originalAccess.isSuperAdminAccess
  40. ) {
  41. const url = `/switch_user/${originalAccess.organization.id}/${originalAccess.id}/exit`
  42. children.push(
  43. this.createItem(
  44. `${originalAccess.givenName} ${originalAccess.name}`,
  45. undefined,
  46. url,
  47. MENU_LINK_TYPE.V1,
  48. ),
  49. )
  50. }
  51. if (children.length > 0) {
  52. return this.createGroup(
  53. 'familyAccesses',
  54. { name: 'fas fa-users' },
  55. children,
  56. )
  57. }
  58. return null
  59. }
  60. }