import subscriptionStatus from 'common-fe/constants/subscription-status'
import userRoles from 'common-fe/constants/user-roles'

const {ACTIVE, TRIALING} = subscriptionStatus

export const isAdminUser = (user) => {
    if (!user || !user.roles) {
        return false
    }

    return user.roles.includes(userRoles.ADMIN)
}

export const isParticipantUser = (user) => {
    if (!user || !user.roles) {
        return false
    }

    return user.roles.includes(userRoles.FINANCIAL_SIM_USER)
}

export const isProfessorUser = (user) => {
    if (!user || !user.roles) {
        return false
    }

    return user.roles.includes(userRoles.PROFESSOR)
}

export const isAuthenticatedUser = (user) => {
    return user && user.isLoggedIn && user.isEmailVerified && user.isActive
}

export const isVisitorUser = (user) => {
    if (!user || !user.roles || !user.roles.length) {
        return true
    }

    return false
}

export const isOnboardedUser = (user) => {
    if (!user) {
        return false
    }

    const {onboarding = {}, portfolios = []} = user

    const isProfessor = isProfessorUser(user)

    // Professors don't go through onboarding modals
    if (isProfessor) {
        return true
    }

    // For participants, as part of their account onboarding they need
    // to create their first portfolio. If this hasn't been done yet, then they
    // have yet to be onboarded to the platform.
    if (
        !isProfessor &&
        !onboarding.isFirstPortfolioCreated &&
        !portfolios.length
    ) {
        return false
    }

    return true
}

export const isSubscriptionActiveForUser = (user) => {
    const {subscription: {status} = {}} = user
    const activeStatuses = [ACTIVE, TRIALING]

    // Currently, professor accounts only have a free tier – as a result,
    // their subscription is active by default.
    return activeStatuses.includes(status) || isProfessorUser(user)
}
