5
5
import main .exceptions .AqualityPermissionsException ;
6
6
import main .model .db .dao .project .IssueDao ;
7
7
import main .model .db .dao .project .IssueStatusDao ;
8
+ import main .model .db .dao .project .UserDao ;
8
9
import main .model .dto .project .IssueDto ;
9
10
import main .model .dto .project .IssueStatusDto ;
11
+ import main .model .dto .project .ResultResolutionDto ;
10
12
import main .model .dto .settings .UserDto ;
11
13
14
+ import java .util .ArrayList ;
12
15
import java .util .List ;
16
+ import java .util .Objects ;
13
17
14
18
public class IssueController extends BaseController <IssueDto > {
15
19
private IssueDao issueDao ;
16
20
private IssueStatusDao issueStatusDao ;
21
+ private UserDao userDao ;
22
+ private ResultResolutionController resultResolutionController ;
17
23
18
24
public IssueController (UserDto user ) {
19
25
super (user );
20
26
issueDao = new IssueDao ();
21
27
issueStatusDao = new IssueStatusDao ();
28
+ userDao = new UserDao ();
29
+ resultResolutionController = new ResultResolutionController (user );
22
30
}
23
31
@ Override
24
32
public List <IssueDto > get (IssueDto entity ) throws AqualityException {
25
33
if (baseUser .isManager () || baseUser .getProjectUser (entity .getProject_id ()).isViewer ()) {
26
- return issueDao .searchAll (entity );
34
+ return fillIssues ( issueDao .searchAll (entity ) );
27
35
} else {
28
36
throw new AqualityPermissionsException ("Account is not allowed to view Issues" , baseUser );
29
37
}
@@ -44,6 +52,36 @@ public boolean delete(IssueDto entity) throws AqualityException {
44
52
}
45
53
46
54
public List <IssueStatusDto > get (IssueStatusDto status ) throws AqualityException {
47
- return issueStatusDao .searchAll (status );
55
+ return issueStatusDao .searchAll (status );
56
+ }
57
+
58
+ private List <IssueDto > fillIssues (List <IssueDto > issues ) throws AqualityException {
59
+ if (issues .isEmpty ()) {
60
+ return issues ;
61
+ }
62
+
63
+ List <UserDto > users = userDao .getAll ();
64
+ List <IssueStatusDto > issueStatuses = get (new IssueStatusDto ());
65
+ List <IssueDto > filledIssues = new ArrayList <>();
66
+
67
+ ResultResolutionDto resultResolution = new ResultResolutionDto ();
68
+ resultResolution .setProject_id (issues .get (0 ).getProject_id ());
69
+ List <ResultResolutionDto > resultResolutions = resultResolutionController .get (resultResolution );
70
+
71
+ for (IssueDto issue : issues ) {
72
+ UserDto assignee = users .stream ().filter (x -> x .getId ().equals (issue .getAssignee_id ())).findFirst ().orElse (null );
73
+ UserDto creator = users .stream ().filter (x -> x .getId ().equals (issue .getCreator_id ())).findFirst ().orElse (null );
74
+ if (assignee != null ) {
75
+ issue .setAssignee (assignee .toPublic ());
76
+ }
77
+ if (creator != null ) {
78
+ issue .setCreator (creator .toPublic ());
79
+ }
80
+ issue .setStatus (issueStatuses .stream ().filter (x -> x .getId ().equals (issue .getStatus_id ())).findFirst ().orElse (null ));
81
+ issue .setResolution (resultResolutions .stream ().filter (x -> x .getId ().equals (issue .getResolution_id ())).findFirst ().orElse (null ));
82
+ filledIssues .add (issue );
83
+ }
84
+
85
+ return filledIssues ;
48
86
}
49
87
}
0 commit comments