@startuml
!theme plain
hide footbox

actor "User" as User
participant ": EstimateEffortUI" as UI
participant ": EstimateEffortController" as Controller
participant ": ProjectList" as PL
participant "project : Project" as P
participant "sprintList : SprintList" as SL
participant "sprint : Sprint" as S
participant "userStory : UserStory" as US

User ->  UI: Estimate effort of a User Story (projectCode, sprintNumber, userStoryId, effortEstimateValue)
activate User #FFBBBB
activate UI #FFBBBB
UI -> Controller: estimateEffortUserStory(projectCode, sprintNumber, userStoryId, effortEstimateValue)
activate Controller #FFBBBB
Controller -> PL: getProject(projectCode)
activate PL #FFBBBB
PL --> Controller: project
deactivate PL
Controller -> P: getSprintList()
activate P #FFBBBB
P --> Controller: sprintList
deactivate P
Controller -> SL: getSprint(sprintNumber)
activate SL #FFBBBB
SL --> Controller: sprint
deactivate SL
Controller -> S: estimateEffortOfUserStory(userStoryId, effortEstimateValue)
activate S #FFBBBB
S -> S: validEffortEstimate(effort)
S -> US: getId()
activate US #FFBBBB
US --> S: userStoryId
deactivate US
S -> S: put(userStoryId, effort)
S --> Controller: true
deactivate S
Controller --> UI: true
deactivate Controller
UI --> User: user story effort estimated
deactivate UI

@enduml
