@startuml

skinparam sequenceMessageAlign center
title TO ASSOCIATE USER TEAM MEMBER TO A PROJECT
legend top
US011 - As Manager, I want to associate a User as Team Member of a project.
end legend

class AddUserInProjectController {
-company
+addUserInProject(projCode, email, role)
}

class Company {
-accountContainer
-accountInProjectContainer
-projectContainer
+addUserInProject(projCode, email, role)
}

class AccountInProject{
-account
-project
-role
+AccountInProject(projCode, email, role)
+isAccountValid(account)
+isProjectValid(project)
}

class AccountContainer {
-accounts
+getAccountByEmail(email)
}

class ProjectContainer{
-projets
+getProject(projCode)
}

class AccountInProjectContainer{
-accountInProjects
+addAccountInProject(accountInProject)

}


AddUserInProjectController ..> Company
Company "1"-->"1" AccountContainer: has
Company "1"-->"1" AccountInProjectContainer: has
Company "1"-->"1" ProjectContainer: has
AccountInProjectContainer "1"-->"*" AccountInProject: contains
Company ..> AccountInProject
@enduml