package stirling.software.SPDF.model; import java.util.LinkedHashMap; import java.util.Map; import lombok.Getter; import lombok.RequiredArgsConstructor; @Getter @RequiredArgsConstructor public enum Role { // Unlimited access ADMIN("ROLE_ADMIN", Integer.MAX_VALUE, Integer.MAX_VALUE, "adminUserSettings.admin"), // Unlimited access USER("ROLE_USER", Integer.MAX_VALUE, Integer.MAX_VALUE, "adminUserSettings.user"), // 40 API calls Per Day, 40 web calls LIMITED_API_USER("ROLE_LIMITED_API_USER", 40, 40, "adminUserSettings.apiUser"), // 20 API calls Per Day, 20 web calls EXTRA_LIMITED_API_USER("ROLE_EXTRA_LIMITED_API_USER", 20, 20, "adminUserSettings.extraApiUser"), // 0 API calls per day and 20 web calls WEB_ONLY_USER("ROLE_WEB_ONLY_USER", 0, 20, "adminUserSettings.webOnlyUser"), INTERNAL_API_USER( "STIRLING-PDF-BACKEND-API-USER", Integer.MAX_VALUE, Integer.MAX_VALUE, "adminUserSettings.internalApiUser"), DEMO_USER("ROLE_DEMO_USER", 100, 100, "adminUserSettings.demoUser"); private final String roleId; private final int apiCallsPerDay; private final int webCallsPerDay; private final String roleName; public static String getRoleNameByRoleId(String roleId) { // Using the fromString method to get the Role enum based on the roleId Role role = fromString(roleId); // Return the roleName of the found Role enum return role.getRoleName(); } // Method to retrieve all role IDs and role names public static Map getAllRoleDetails() { // Using LinkedHashMap to preserve order Map roleDetails = new LinkedHashMap<>(); for (Role role : Role.values()) { roleDetails.put(role.getRoleId(), role.getRoleName()); } return roleDetails; } public static Role fromString(String roleId) { for (Role role : Role.values()) { if (role.getRoleId().equalsIgnoreCase(roleId)) { return role; } } throw new IllegalArgumentException("No Role defined for id: " + roleId); } }