summaryrefslogtreecommitdiff
path: root/app/controllers/projects/boards/issues_controller.rb
diff options
context:
space:
mode:
authorDouglas Barbosa Alexandre <dbalexandre@gmail.com>2016-10-04 17:41:00 -0300
committerPhil Hughes <me@iamphill.com>2016-10-06 11:00:01 +0100
commit97ec0c05f66e40a6de6620efcf5c92b7c2979f95 (patch)
tree526b5f675205be58ed0a0ac32a09af6cc250913b /app/controllers/projects/boards/issues_controller.rb
parente7a4bbb04a86259a569f6ac239ecb35ad36f39b5 (diff)
downloadgitlab-ce-97ec0c05f66e40a6de6620efcf5c92b7c2979f95.tar.gz
Add service to create a new issue in a board list
Diffstat (limited to 'app/controllers/projects/boards/issues_controller.rb')
-rw-r--r--app/controllers/projects/boards/issues_controller.rb29
1 files changed, 18 insertions, 11 deletions
diff --git a/app/controllers/projects/boards/issues_controller.rb b/app/controllers/projects/boards/issues_controller.rb
index fea7a35232d..095af6c35eb 100644
--- a/app/controllers/projects/boards/issues_controller.rb
+++ b/app/controllers/projects/boards/issues_controller.rb
@@ -10,23 +10,21 @@ module Projects
issues = issues.page(params[:page])
render json: {
- issues: issues.as_json(
- only: [:iid, :title, :confidential],
- include: {
- assignee: { only: [:id, :name, :username], methods: [:avatar_url] },
- labels: { only: [:id, :title, :description, :color, :priority], methods: [:text_color] }
- }),
+ issues: serialize_as_json(issues),
size: issues.total_count
}
end
def create
list = project.board.lists.find(params[:list_id])
+ service = ::Boards::Issues::CreateService.new(project, current_user, issue_params)
+ issue = service.execute(list)
- issue = Issues::CreateService.new(project, current_user, issue_params.merge(request: request)).execute
- issue.labels << list.label if list.label
-
- render json: issue.to_json
+ if issue.valid?
+ render json: serialize_as_json(issue)
+ else
+ render json: issue.errors, status: :unprocessable_entity
+ end
end
def update
@@ -70,7 +68,16 @@ module Projects
end
def issue_params
- params.require(:issue).permit(:title)
+ params.require(:issue).permit(:title).merge(request: request)
+ end
+
+ def serialize_as_json(resource)
+ resource.as_json(
+ only: [:iid, :title, :confidential],
+ include: {
+ assignee: { only: [:id, :name, :username], methods: [:avatar_url] },
+ labels: { only: [:id, :title, :description, :color, :priority], methods: [:text_color] }
+ })
end
end
end