-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathTeamStatusService.java
More file actions
49 lines (37 loc) · 1.89 KB
/
TeamStatusService.java
File metadata and controls
49 lines (37 loc) · 1.89 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
package clap.server.application.service.task;
import clap.server.adapter.inbound.web.dto.task.request.FilterTeamStatusRequest;
import clap.server.adapter.inbound.web.dto.task.response.TeamStatusResponse;
import clap.server.adapter.inbound.web.dto.task.response.TeamTaskResponse;
import clap.server.application.port.inbound.task.FilterTeamStatusUsecase;
import clap.server.application.port.inbound.task.LoadTeamStatusUsecase;
import clap.server.application.port.outbound.task.LoadTaskPort;
import clap.server.common.annotation.architecture.ApplicationService;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
@ApplicationService
public class TeamStatusService implements LoadTeamStatusUsecase, FilterTeamStatusUsecase {
private final LoadTaskPort loadTaskPort;
public TeamStatusService(LoadTaskPort loadTaskPort) {
this.loadTaskPort = loadTaskPort;
}
@Override
public TeamStatusResponse getTeamStatus(Long memberId, FilterTeamStatusRequest filter) {
List<TeamTaskResponse> members = loadTaskPort.findTeamStatus(memberId, filter);
if (members == null) {
members = List.of();
}
return new TeamStatusResponse(members);
}
@Override
@Transactional(readOnly = true)
public TeamStatusResponse filterTeamStatus(FilterTeamStatusRequest filter) {
List<TeamTaskResponse> members = loadTaskPort.findTeamStatus(null, filter);
if (members == null) {
members = List.of();
}
// 전체 팀의 진행 중 & 검토 중 작업 수 계산
int totalInProgressTaskCount = members.stream().mapToInt(TeamTaskResponse::inProgressTaskCount).sum();
int totalInReviewingTaskCount = members.stream().mapToInt(TeamTaskResponse::inReviewingTaskCount).sum();
return new TeamStatusResponse(members, totalInProgressTaskCount, totalInReviewingTaskCount);
}
}