package com.dacrt.SBIABackend.service;

import java.util.ArrayList;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.dacrt.SBIABackend.dto.ScimGroup;
import com.dacrt.SBIABackend.security.repository.RolesRepository;

@Service
public class GroupService {
	@Autowired
	RolesRepository rolesRepository;
    /**
     * Devuelve todos los roles de la aplicación como recursos SCIM Group.
     * @return Lista de ScimGroup.
     */
    public List<ScimGroup> findAllGroups() {
       /* List<String> roleNames = List.of(
                "Otro", "Ninguno", "rordecarga", "Carga ampliada",
                "Administrador All", "Administrador de Sistemas", "Solo Ver",
                "tutitux", "Administrador", "RolNuevoNeldy",
                "AdministradorJackson", "DAEjercitar", "Todo ON"
        );*/
        
        List<String> roleNames = rolesRepository.findAllRoleNames();

        List<ScimGroup> scimGroups = new ArrayList<>();

        for (String roleName : roleNames) {
            // SCIM exige un 'id' único. Usamos una versión limpia del nombre como ID.
            // Ejemplo: "Administrador All" -> "administrador_all"
            String roleId = roleName.toLowerCase().replaceAll("[^a-z0-9]+", "_");

            ScimGroup group = new ScimGroup(roleId, roleName);
            scimGroups.add(group);
        }

        // Okta usará esta lista para poblar el dropdown de roles
        // en la sección de asignación de usuarios a la aplicación.
        return scimGroups;
    }
}
