diff --git a/src/main/scala/app/IssuesController.scala b/src/main/scala/app/IssuesController.scala index b129c68..8ff2e5b 100644 --- a/src/main/scala/app/IssuesController.scala +++ b/src/main/scala/app/IssuesController.scala @@ -23,7 +23,7 @@ )(IssueForm.apply) val milestoneForm = mapping( - "title" -> trim(label("Title", text(required))), + "title" -> trim(label("Title", text(required, maxlength(100)))), "description" -> trim(label("Description", optional(text()))), "dueDate" -> trim(label("Due Date", optional(date()))) )(MilestoneForm.apply) @@ -127,9 +127,7 @@ getMilestone(owner, repository, milestoneId) match { case None => NotFound() case Some(m) => { - // TODO I want to ban to use the currentDate in Controller. - val currentDate = new java.util.Date() - updateMilestone(m.copy(closedDate = Some(currentDate))) + closeMilestone(m) redirect("/%s/%s/issues/milestones".format(owner, repository)) } } @@ -143,7 +141,7 @@ getMilestone(owner, repository, milestoneId) match { case None => NotFound() case Some(m) => { - updateMilestone(m.copy(closedDate = None)) + openMilestone(m) redirect("/%s/%s/issues/milestones".format(owner, repository)) } } diff --git a/src/main/scala/service/IssuesService.scala b/src/main/scala/service/IssuesService.scala index 76c6fe4..4c08981 100644 --- a/src/main/scala/service/IssuesService.scala +++ b/src/main/scala/service/IssuesService.scala @@ -65,6 +65,10 @@ milestone.dueDate, milestone.closedDate) + def openMilestone(milestone: Milestone): Unit = updateMilestone(milestone.copy(closedDate = None)) + + def closeMilestone(milestone: Milestone): Unit = updateMilestone(milestone.copy(closedDate = Some(currentDate))) + def deleteMilestone(owner: String, repository: String, milestoneId: Int): Unit = { Query(Issues) .filter { i => (i.userName is owner.bind) && (i.repositoryName is repository.bind) && (i.milestoneId is milestoneId.bind)} @@ -85,11 +89,11 @@ def getMilestoneIssueCounts(owner: String, repository: String): Map[(Int, Boolean), Int] = { import scala.slick.jdbc.GetResult - case class IssueCount(userName: String, repositoryName: String, milestoneId: Int, closed: Boolean, count: Int) - implicit val getIssueCount = GetResult(r => IssueCount(r.<<, r.<<, r.<<, r.<<, r.<<)) + case class IssueCount(milestoneId: Int, closed: Boolean, count: Int) + implicit val getIssueCount = GetResult(r => IssueCount(r.<<, r.<<, r.<<)) sql""" - select USER_NAME, REPOSITORY_NAME, MILESTONE_ID, CLOSED, COUNT(ISSUE_ID) + select MILESTONE_ID, CLOSED, COUNT(ISSUE_ID) from ISSUE where USER_NAME = $owner AND REPOSITORY_NAME = $repository AND MILESTONE_ID IS NOT NULL group by USER_NAME, REPOSITORY_NAME, MILESTONE_ID, CLOSED"""