summaryrefslogtreecommitdiff
path: root/app/contexts/issues_bulk_update_context.rb
blob: 7c3c1d4f7c3c30fcd091fb29c58fb081db907a3e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
class IssuesBulkUpdateContext < BaseContext
  def execute
    update_data = params[:update]

    issues_ids   = update_data[:issues_ids].split(",")
    milestone_id = update_data[:milestone_id]
    assignee_id  = update_data[:assignee_id]
    status       = update_data[:status]

    opts = {} 
    opts[:milestone_id] = milestone_id if milestone_id.present?
    opts[:assignee_id] = assignee_id if assignee_id.present?
    opts[:closed] = (status == "closed") if status.present?

    issues = Issue.where(id: issues_ids).all
    issues = issues.select { |issue| can?(current_user, :modify_issue, issue) }
    issues.each { |issue| issue.update_attributes(opts) }
    { 
      count: issues.count,
      success: !issues.count.zero?
    }
  end
end