Files
odc-analyzer/app/controllers/Projects.scala

34 lines
1.1 KiB
Scala

package controllers
class Projects (
val projectMap: Map[String, String],
private val teamLeaders: Map[TeamId, String],
val projectToTeams: Map[String, Set[TeamId]]
) {
val projectSet: Set[String] = projectMap.keySet
private val projectAndTeams = projectToTeams.toSeq.flatMap{case (project, teams) => teams.map(team => (project, team))}
private val teamsToProjects = projectAndTeams.groupBy(_._2).mapValues(_.map(_._1).toSet).map(identity)
private val teamsById: Map[String, Team] = for{
(team, projectNames) <- teamsToProjects
} yield team.id -> Team(
id = team.id,
name = team.name,
leader = teamLeaders(team),
projectNames = projectNames
)
def teamById(id: String): Team = teamsById(id)
def getTeamById(id: String): Option[Team] = teamsById.get(id)
def teamSet: Set[Team] = teamsById.values.toSet
def teamsByProjectId(projectId: String): Set[TeamId] = projectToTeams.filter{case (projectSpecification, _) =>
val projectName = projectMap(projectId)
(projectSpecification == projectName) || (projectSpecification startsWith s"$projectName:")
}.values.flatten.toSet
}