diff options
author | Douglas Barbosa Alexandre <dbalexandre@gmail.com> | 2016-10-04 17:41:00 -0300 |
---|---|---|
committer | Phil Hughes <me@iamphill.com> | 2016-10-06 11:00:01 +0100 |
commit | 97ec0c05f66e40a6de6620efcf5c92b7c2979f95 (patch) | |
tree | 526b5f675205be58ed0a0ac32a09af6cc250913b /app/controllers/projects/boards/issues_controller.rb | |
parent | e7a4bbb04a86259a569f6ac239ecb35ad36f39b5 (diff) | |
download | gitlab-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.rb | 29 |
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 |