@startuml

skinparam sequenceArrowThickness 2
skinparam roundcorner 20
skinparam maxmessagesize 60
skinparam sequenceParticipant underline

actor "Director" as Actor
participant ": US028GetListOfHumanResourcesInProjectUI" as A
participant ": US028GetListOfHumanResourcesInProjectController" as B
participant ": Company" as C
participant "projStore: ProjectStore" as D
participant "project: Project" as E
participant "HumanResourceInProjectMapper" as F
participant " userDTO : HumanResourceInProjectDTO" as G
participant "listDTO : List<HumanResourceInProjectDTO> " as H
participant "user : User" as I


activate Actor
Actor -> A: 1. Types requested data
activate A

A -> B: 2. getListOfHumanResourcesInProject(String projectCode)
activate B

B -> C: 3. getProjectStore()
activate C
C --> B: projStore
deactivate C

B -> D: 4. getProjectByCode(String projectCode)
activate D
D --> B: project
deactivate D

B -> E: 5. getListOfUsersInProject()
activate E

ref over E : get List of all users in a Project
E --> B : tempUsers
deactivate E

B -> F : 6. getAllHumanResourcesInProject(tempUsers)
activate F

F -> H ** : 7. create()

loop for each user in users

F -> F : 8. convertUserInProjectToDTO (user)
activate F


F -> G ** : 9. create()


F->I : 10. getName()
activate I

I--> F : 11. userName
deactivate I

F->G : 12. setUserName(String userName)
activate G
deactivate G

F->I : 13. getUserEmail()
activate I

I--> F : 14. userEmail
deactivate I

F->G : 15. setUserEmail(String userEmail)
activate G
deactivate G

F->I : 16. getUserFunction()
activate I

I--> F : 17. userFunction
deactivate I

F-> G : 18. setUserStatus(String userFunction)
activate G
deactivate G

deactivate F

F -> H : 19. add(userDTO)
activate H
deactivate H

end

F --> B : 20. listDTO
deactivate F

B --> A: 21. listDTO
deactivate B


deactivate B

A --> Actor: 11. Displays Human Resources in a Project
deactivate A
deactivate Actor

@enduml