-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy pathTeamTaskResponseMapper.java
More file actions
77 lines (67 loc) · 3.12 KB
/
TeamTaskResponseMapper.java
File metadata and controls
77 lines (67 loc) · 3.12 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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
package clap.server.application.mapper.response;
import clap.server.adapter.inbound.web.dto.task.response.TeamStatusResponse;
import clap.server.adapter.inbound.web.dto.task.response.TeamTaskItemResponse;
import clap.server.adapter.inbound.web.dto.task.response.TeamTaskResponse;
import clap.server.domain.model.task.Task;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class TeamTaskResponseMapper {
public static List<TeamTaskResponse> toTeamTaskResponses(List<Task> tasks) {
return tasks.stream()
.collect(Collectors.groupingBy(t -> t.getProcessor().getMemberId(), LinkedHashMap::new, Collectors.toList()))
.entrySet().stream()
.map(TeamTaskResponseMapper::toTeamTaskResponse)
.collect(Collectors.toList());
}
private static TeamTaskResponse toTeamTaskResponse(Map.Entry<Long, List<Task>> entry) {
List<TeamTaskItemResponse> taskResponses = entry.getValue().stream()
.map(TeamTaskResponseMapper::toTeamTaskItemResponse)
.collect(Collectors.toList());
Task firstTask = entry.getValue().get(0);
int inProgressTaskCount = firstTask.getProcessor().getInProgressTaskCount();
int inReviewingTaskCount = firstTask.getProcessor().getInReviewingTaskCount();
return new TeamTaskResponse(
entry.getKey(),
firstTask.getProcessor().getNickname(),
firstTask.getProcessor().getImageUrl(),
firstTask.getProcessor().getDepartment().getName(),
inProgressTaskCount,
inReviewingTaskCount,
entry.getValue().size(),
taskResponses
);
}
private static TeamTaskItemResponse toTeamTaskItemResponse(Task task) {
return new TeamTaskItemResponse(
task.getTaskId(),
task.getTaskCode(),
task.getTitle(),
task.getCategory().getMainCategory().getName(),
task.getCategory().getName(),
toLabelInfo(task),
task.getRequester().getNickname(),
task.getRequester().getImageUrl(),
task.getRequester().getDepartment().getName(),
task.getProcessorOrder(),
task.getTaskStatus(),
task.getCreatedAt()
);
}
private static TeamTaskItemResponse.LabelInfo toLabelInfo(Task task) {
return task.getLabel() != null ?
new TeamTaskItemResponse.LabelInfo(
task.getLabel().getLabelName(),
task.getLabel().getLabelColor()
) : null;
}
public static TeamStatusResponse toTeamStatusResponse(List<TeamTaskResponse> members, int totalInProgressTaskCount, int totalInReviewingTaskCount) {
return new TeamStatusResponse(
(members == null) ? List.of() : members,
totalInProgressTaskCount,
totalInReviewingTaskCount,
totalInProgressTaskCount + totalInReviewingTaskCount
);
}
}