11package demo .codeexample .project .application .usecase ;
22
3+ import demo .codeexample .project .ProjectDto ;
34import demo .codeexample .project .domain .Category ;
45import demo .codeexample .project .domain .Genre ;
56import demo .codeexample .project .application .in .ProjectUseCase ;
67import demo .codeexample .project .application .out .ProjectRepositoryPort ;
78import demo .codeexample .project .application .out .UserPort ;
89import demo .codeexample .project .domain .Project ;
10+ import jakarta .persistence .EntityNotFoundException ;
11+ import org .modelmapper .ModelMapper ;
912
1013import java .time .LocalDate ;
1114import java .util .List ;
@@ -15,10 +18,12 @@ public class ProjectService implements ProjectUseCase {
1518
1619 private final ProjectRepositoryPort repository ;
1720 private final UserPort userPort ;
21+ private final ModelMapper mapper ;
1822
19- public ProjectService (ProjectRepositoryPort repository , UserPort userPort ) {
23+ public ProjectService (ProjectRepositoryPort repository , UserPort userPort , ModelMapper mapper ) {
2024 this .repository = repository ;
2125 this .userPort = userPort ;
26+ this .mapper = mapper ;
2227 }
2328
2429 @ Override
@@ -52,9 +57,10 @@ public List<Project> findProjectContainingTitle(String title) {
5257 return repository .findProjectContainingTitle (title );
5358 }
5459
55- @ Override
56- public ProjectDetails getProjectDetails (Long projectId ) {
57- return null ;
60+ public ProjectDto getProjectDetails (Long projectId ) {
61+ return repository .findById (projectId )
62+ .map (project -> mapper .map (project , ProjectDto .class ))
63+ .orElseThrow (() -> new EntityNotFoundException ("Project not found: " + projectId ));
5864 }
5965
6066}
0 commit comments