import { defineStore } from 'pinia' import {$roleUtils} from "~/services/rights/roleUtils"; import {accessState, baseAccessState, baseOrganizationState, OrignalAccessState} from "~/types/interfaces"; import {useProfileOrganizationStore} from "~/store/profile/organization"; import {MyProfile} from "~/models/Access/MyProfile"; import {useRepo} from "pinia-orm"; export const useAccessProfileStore = defineStore('accessProfile', { state: (): accessState => { return { bearer: null, id: null, switchId: null, name: null, givenName: null, gender: null, avatarId: null, activityYear: null, historical: [], roles: [], abilities: [], isAdminAccess: false, isSuperAdminAccess: false, isAdmin: false, isAdministratifManager: false, isPedagogicManager: false, isFinancialManager: false, isCaMember: false, isStudent: false, isTeacher: false, isMember: false, isOther: false, isGuardian: false, isPayor: false, hasLateralMenu: false, hasConfigurationMenu: false, hasAccessesMenu: false, hasFamilyMenu: false, multiAccesses: [], familyAccesses: [], originalAccess: null } }, actions: { setProfile(profile: any) { const roles: Array = Object.values(profile.roles) this.name = profile.name this.givenName = profile.givenName this.gender = profile.gender this.avatarId = profile.avatarId this.activityYear = profile.activityYear this.historical = profile.historical this.isAdminAccess = profile.isAdminAccess this.isAdmin = $roleUtils.isA('ADMIN', roles) this.isAdministratifManager = $roleUtils.isA('ADMINISTRATIF_MANAGER', roles) this.isPedagogicManager = $roleUtils.isA('PEDAGOGICS_MANAGER', roles) this.isFinancialManager = $roleUtils.isA('FINANCIAL_MANAGER', roles) this.isCaMember = $roleUtils.isA('CA', roles) this.isStudent = $roleUtils.isA('STUDENT', roles) this.isTeacher = $roleUtils.isA('TEACHER', roles) this.isMember = $roleUtils.isA('MEMBER', roles) this.isOther = $roleUtils.isA('OTHER', roles) this.isGuardian = profile.isGuardian this.isPayor = profile.isPayor this.roles = $roleUtils.filterFunctionRoles(roles) // Time to add the original Access (switch User case) this.originalAccess = profile.originalAccess // Time to set Multi Accesses this.setMultiAccesses(profile.multiAccesses) // Time to set Family Accesses this.setFamilyAccesses(profile.familyAccesses) // Time to set Organization Profile const organizationProfileStore = useProfileOrganizationStore() organizationProfileStore.setProfile(profile.organization) useRepo(MyProfile).save(profile) }, refreshProfile(profile: any) { this.name = profile.name this.givenName = profile.givenName this.gender = profile.gender this.avatarId = profile.avatarId this.activityYear = profile.activityYear const organizationProfileStore = useProfileOrganizationStore() organizationProfileStore.refreshProfile(profile.organization) }, setMultiAccesses(organizations: any) { useEach(organizations, (organization: baseOrganizationState) => { const o: baseOrganizationState = { id: organization.id, name: organization.name } this.multiAccesses.push(o) }) }, setFamilyAccesses(accesses: any) { useEach(accesses, (access: baseAccessState) => { const a: baseAccessState = { id: access.id, name: access.name, givenName: access.givenName, gender: access.gender, avatarId: access.avatarId } this.familyAccesses.push(a) }) }, setOriginalAccess(access: any) { if (access) { const organization: baseOrganizationState = { id: access.organization.id, name: access.organization.name } const originalAccess: OrignalAccessState = { id: access.id, name: access.name, givenName: access.givenName, gender: access.gender, isSuperAdminAccess: access.isSuperAdminAccess, avatarId: access.avatarId, organization: organization } this.setOriginalAccess(originalAccess) } }, } })