@startuml
skinparam linetype polyline


title US018 - As PO/SM/Team Member, I want to consult the product backlog, i.e. to get the list of user stories sorted by priority

!include ../../../overall_project/design/class_diagram/classes/classes_ddd/ConsultProductBacklogController.puml
!include ../../../overall_project/design/class_diagram/classes/classes_ddd/ProductBacklog.puml
!include ../../../overall_project/design/class_diagram/classes/classes_ddd/ConsultProductBacklogAssembler.puml
!include ../../../overall_project/design/class_diagram/classes/classes_ddd/UserStory.puml
!include ../../../overall_project/design/class_diagram/classes/classes_ddd/UserStoryDTO.puml
!include ../../../overall_project/design/class_diagram/classes/classes_ddd/ProjectService.puml
!include ../../../overall_project/design/class_diagram/classes/classes_ddd/ProjectRepositoryFake.puml
!include ../../../overall_project/design/class_diagram/classes/classes_ddd/UserStoryRepositoryFake.puml
!include ../../../overall_project/design/class_diagram/classes/classes_ddd/ProjectCode.puml
!include ../../../overall_project/design/class_diagram/classes/classes_ddd/Description.puml
!include ../../../overall_project/design/class_diagram/classes/classes_ddd/UserStoryCode.puml
!include ../../../overall_project/design/class_diagram/classes/classes_ddd/Repository.puml

ConsultProductBacklogController --> ProjectService : productBacklogService

ProjectService ..> ProjectCode
ProjectService --> Repository : projectRepository
ProjectService --> Repository : userStoryRepository
ProjectService ..> ProductBacklog
ProjectService ..> UserStory
ProjectService ..> ConsultProductBacklogAssembler

UserStoryRepository "1" *--> "*" UserStory : userStoryList

ProjectRepository "1" *--> "*" ProjectCode : data
ProjectRepository "1" *--> "*" ProductBacklog : data
Repository <|.. ProjectRepository
Repository <|.. UserStoryRepository

ProductBacklog "1" *--> "*" UserStoryCode : userStoryCodeList
ProductBacklog --> ProjectCode : projectCode

ConsultProductBacklogAssembler ..> UserStory
ConsultProductBacklogAssembler ..> UserStoryDTO
ConsultProductBacklogAssembler ..> UserStoryCode
ConsultProductBacklogAssembler ..> Description

UserStory --> ProjectCode : projectCode
UserStory --> UserStoryCode : userStoryCode
UserStory --> Description : description

@enduml