30 import de.uapcore.lightpit.AbstractServlet |
30 import de.uapcore.lightpit.AbstractServlet |
31 import de.uapcore.lightpit.HttpRequest |
31 import de.uapcore.lightpit.HttpRequest |
32 import de.uapcore.lightpit.dao.DataAccessObject |
32 import de.uapcore.lightpit.dao.DataAccessObject |
33 import de.uapcore.lightpit.entities.IssueCommentHistoryEntry |
33 import de.uapcore.lightpit.entities.IssueCommentHistoryEntry |
34 import de.uapcore.lightpit.entities.IssueHistoryEntry |
34 import de.uapcore.lightpit.entities.IssueHistoryEntry |
|
35 import de.uapcore.lightpit.entities.Project |
35 import de.uapcore.lightpit.types.IssueHistoryType |
36 import de.uapcore.lightpit.types.IssueHistoryType |
36 import de.uapcore.lightpit.viewmodel.CommentDiff |
37 import de.uapcore.lightpit.viewmodel.CommentDiff |
37 import de.uapcore.lightpit.viewmodel.IssueDiff |
38 import de.uapcore.lightpit.viewmodel.IssueDiff |
38 import de.uapcore.lightpit.viewmodel.IssueFeed |
39 import de.uapcore.lightpit.viewmodel.IssueFeed |
39 import de.uapcore.lightpit.viewmodel.IssueFeedEntry |
40 import de.uapcore.lightpit.viewmodel.IssueFeedEntry |
160 ) |
162 ) |
161 }.flatMap { it.value } |
163 }.flatMap { it.value } |
162 } |
164 } |
163 |
165 |
164 private fun issues(http: HttpRequest, dao: DataAccessObject) { |
166 private fun issues(http: HttpRequest, dao: DataAccessObject) { |
165 val project = http.pathParams["project"]?.let { dao.findProjectByNode(it) } |
167 val projectNode = http.pathParams["project"].orEmpty() |
166 if (project == null) { |
168 val project: Project? |
167 http.response.sendError(404) |
169 if (projectNode == "-") { |
168 return |
170 project = null |
|
171 } else { |
|
172 project = dao.findProjectByNode(projectNode) |
|
173 if (project == null) { |
|
174 http.response.sendError(404) |
|
175 return |
|
176 } |
169 } |
177 } |
170 val assignees = http.param("assignee")?.split(',') |
178 val assignees = http.param("assignee")?.split(',') |
171 val comments = http.param("comments") ?: "all" |
179 val comments = http.param("comments") ?: "all" |
172 |
180 |
173 val days = http.param("days")?.toIntOrNull() ?: 30 |
181 val days = http.param("days")?.toIntOrNull() ?: 30 |
174 |
182 |
175 val issuesFromDb = dao.listIssueHistory(project.id, days) |
183 val issuesFromDb = dao.listIssueHistory(project, days) |
176 val issueHistory = if (assignees == null) issuesFromDb else |
184 val issueHistory = if (assignees == null) issuesFromDb else |
177 issuesFromDb.filter { assignees.contains(it.currentAssignee) } |
185 issuesFromDb.filter { assignees.contains(it.currentAssignee) } |
178 |
186 |
179 val commentsFromDb = dao.listIssueCommentHistory(project.id, days) |
187 val commentsFromDb = dao.listIssueCommentHistory(project, days) |
180 val commentHistory = when (comments) { |
188 val commentHistory = when (comments) { |
181 "all" -> commentsFromDb |
189 "all" -> commentsFromDb |
182 "new" -> commentsFromDb.filter { it.type == IssueHistoryType.NewComment } |
190 "new" -> commentsFromDb.filter { it.type == IssueHistoryType.NewComment } |
183 else -> emptyList() |
191 else -> emptyList() |
184 } |
192 } |