41 lines
798 B
Ruby
41 lines
798 B
Ruby
class Command::Assign < Command
|
|
store_accessor :data, :card_ids, :assignee_ids
|
|
|
|
validates_presence_of :card_ids, :assignee_ids
|
|
|
|
def execute
|
|
transaction do
|
|
cards.each do |card|
|
|
assignees.each do |assignee|
|
|
card.toggle_assignment(assignee) unless card.assigned_to?(assignee)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
def undo
|
|
raise "pending"
|
|
end
|
|
|
|
def title
|
|
card_description = if cards.one?
|
|
"card '#{cards.first.title}'"
|
|
else
|
|
"#{cards.count} cards"
|
|
end
|
|
|
|
assignee_description = assignees.collect(&:first_name).join(", ")
|
|
|
|
"Assign #{assignee_description} to #{card_description}"
|
|
end
|
|
|
|
private
|
|
def assignees
|
|
User.where(id: assignee_ids)
|
|
end
|
|
|
|
def cards
|
|
user.accessible_cards.where(id: card_ids)
|
|
end
|
|
end
|