import { getAllRoles, getAllUsers, getRoleMemberships, getUserById } from "."; import { ManagerMemberships, Role, UserInfo } from "./type"; // Import User export const getRoleIdByName = ( roles: Role[], roleName: string ): string | undefined => { if (!roles || !Array.isArray(roles)) { console.error("getRoleIdByName received invalid roles data:", roles); return undefined; } const foundRole = roles.find((role) => role.roleName === roleName); return foundRole?.roleId; }; export const findUsersInRole = async (roleName: string) => { try { console.log("Step 1: Fetching all roles..."); const allRoles = await getAllRoles(); console.log(`Step 2: Finding ID for role "${roleName}"...`); const roleId = getRoleIdByName(allRoles, roleName); if (!roleId) { console.error(`Error: Role "${roleName}" not found.`); return; } console.log(`Found roleId: ${roleId}`); console.log("Step 3: Fetching memberships for this role..."); const memberships = await getRoleMemberships(roleId); if (memberships.length === 0) { console.log(`No users found for role "${roleName}".`); return; } console.log( `Success! Found ${memberships.length} user(s) in "${roleName}":` ); const userIds = memberships.map((m: { userId: string }) => m.userId); console.log(userIds); return userIds; } catch (error) { console.error("An error occurred during the process:", error); } }; export const getManagerMemberships = async (): Promise => { try { const response = await getAllRoles(); const allRoles = Array.isArray(response) ? response : (response?.content || []); console.log("rolesss", allRoles); const projectManagerId = getRoleIdByName(allRoles, "Project manager"); const accountManagerId = getRoleIdByName(allRoles, "Account Manager"); if (!projectManagerId) { console.warn("Could not find roleId for 'Project Manager'"); } if (!accountManagerId) { console.warn("Could not find roleId for 'Account Manager'"); } const pmPromise = projectManagerId ? getRoleMemberships(projectManagerId) : Promise.resolve([]); const amPromise = accountManagerId ? getRoleMemberships(accountManagerId) : Promise.resolve([]); const [projectManagerMembers, accountManagerMembers] = await Promise.all([ pmPromise, amPromise, ]); return { projectManagerMembers, accountManagerMembers, }; } catch (error) { console.error("Error in getManagerMemberships:", error); return { projectManagerMembers: [], accountManagerMembers: [], }; } }; export const createUserMaps = async (): Promise<{ nameMap: Map; designationMap: Map; }> => { const nameMap = new Map(); const designationMap = new Map(); try { const response = await getAllUsers(); const userArray = response ?? response; if (!userArray || !Array.isArray(userArray) || userArray.length === 0) { return { nameMap, designationMap }; } else { for (const user of userArray) { if (user?.userId) { nameMap.set(user.userId, user.userName); designationMap.set(user.userId, user.userDesignation); } } } return { nameMap, designationMap }; } catch (error) { console.error("Failed to fetch users and create maps:", error); return { nameMap, designationMap }; } }; export const getUserNameById = async ( userId: string ): Promise => { try { const user = await getUserById(userId); return user?.userName; } catch (error) { console.error("Failed to get user name by ID:", error); } }; export const getUserInfo = async (userId: string): Promise => { const user = await getUserById(userId); if (!user) { return null; } return { userName: user.userName, userLogin: user.userLogin, userEmail: user.userEmail, }; };