Role.java

package no.nav.data.team.team.domain;

import java.util.Arrays;
import java.util.List;

public enum Role {

    LEAD,
    DEVELOPER,
    TESTER,
    TECH_DOMAIN_SPECIALIST,
    TECH_LEAD,
    TEST_LEAD,
    PRODUCT_LEAD,
    STRATEGIC_PRODUCT_LEAD,
    SECURITY_ARCHITECT,
    SOLUTION_ARCHITECT,
    BUSINESS_ANALYST,
    DOMAIN_EXPERT,
    DOMAIN_RESPONSIBLE,
    DOMAIN_RESOURCE,
    ARCHITECT,
    AGILE_COACH,
    DATA_MANAGER,
    DATA_SCIENTIST,
    MAINTENANCE_MANAGER,
    DESIGNER,
    DESIGN_LEAD,
    OPERATIONS,
    FUNCTIONAL_ADVISER,
    TECHNICAL_ADVISER,
    TECHNICAL_TESTER,
    TECHNOLOGY_LEAD,
    COMMUNICATION_ADVISER,
    AREA_LEAD,
    LEGAL_ADVISER,
    SECURITY_CHAMPION,
    UU_CHAMPION,
    FRONTEND,
    PROFIT_COACH,
    CONTROLLER,
    STAFFING_MANAGER,
    DESIGN_RESEARCHER,
    HEAD_OF_LEGAL,
    PRINCIPAL,
    PLATFORM_SYSTEM_TECHNICIAN,
    TEAMCOACH,
    WEB_ANALYST,
    UU_SPECIALIST,
    VISUAL_ANALYTICS_ENGINEER,
    DATA_ENGINEER,
    SUBJECT_MATTER_EXPERT,
    OTHER,

    // LEDERGRUPPE ROLLER
    LEADER, // LEDER
    DISCIPLINE_DIRECTOR, // FAGDIREKTOER,
    PERSONELLROSTER_RESPONSIBLE, // PERSONALOGBEMANNINGSANSVARLIG,
    DISCIPLINE_AND_DELIVERY_MANAGER; // FAGOGLEVERANSELEDER


    public static List<Role> getLeadergroupRoles(){
        return List.of(DISCIPLINE_DIRECTOR, PERSONELLROSTER_RESPONSIBLE, DISCIPLINE_AND_DELIVERY_MANAGER, LEADER);
    }

    public static List<Role> getNonLeadergroupRoles(){
        return Arrays.stream(Role.values()).filter(role -> !role.isLeaderGroupRole()).toList();
    }

    public boolean isLeaderGroupRole() {
        return Role.getLeadergroupRoles().contains(this);
    }

}