import { Redmine } from 'bluemine'
import { CsvEntry } from '../type.ts'
import { log, toLogin } from '../utils.ts'

async function addUsersToGroup(
	redmine: Redmine,
	csv: CsvEntry[],
	groupName: string,
) {
	const users: Redmine['users']['List']['Result']['users'] = []

	for (const { firstname, lastname } of csv) {
		const login = toLogin(firstname, lastname)

		try {
			const list = await redmine.users.list({ limit: 1, name: login })
			const user = list.users[0]

			log.info(`get id of ${user.login}#${user.id}`)
			users.push(user)
		} catch (error) {
			log.error(`get id of ${login}`)
			console.error(String(error))
		}
	}

	const { groups } = await redmine.unstableGroups.list()

	const { id } = groups.filter(({ name }) => name === 'entrepreneur-01-24')[0]

	for (const user of users) {
		try {
			log.info(`add ${user.login}#${user.id} to "${groupName}"`)
			await redmine.unstableGroups.addUser(id, user)
		} catch {
			log.error(`add ${user.login}#${user.id} to "${groupName}"`)
		}
	}
}