From 1303dfb14e3e148b5fa4ea4cfe1805926aba61bc Mon Sep 17 00:00:00 2001 From: Jorge Manrubia Date: Wed, 25 Jun 2025 14:55:56 +0200 Subject: [PATCH] Add "Do" command --- app/models/command/do.rb | 34 ++++++++++++++++++++++++++++++++++ app/models/command/parser.rb | 2 ++ 2 files changed, 36 insertions(+) create mode 100644 app/models/command/do.rb diff --git a/app/models/command/do.rb b/app/models/command/do.rb new file mode 100644 index 000000000..fbf31e0f5 --- /dev/null +++ b/app/models/command/do.rb @@ -0,0 +1,34 @@ +class Command::Do < Command + include Command::Cards + + store_accessor :data, :statues_by_card_id + + def title + "Move #{cards_description} to Doing" + end + + def execute + statues_by_card_id = {} + + transaction do + cards.find_each do |card| + statues_by_card_id[card.id] = { closed: card.closed?, doing: card.doing?, considering: card.considering? } + card.engage + end + + update! statues_by_card_id: statues_by_card_id + end + end + + def undo + transaction do + statues_by_card_id.each do |card_id, data| + if card = user.accessible_cards.find_by_id(card_id) + card.close if data["closed"] + card.engage if data["doing"] + card.reconsider if data["considering"] + end + end + end + end +end diff --git a/app/models/command/parser.rb b/app/models/command/parser.rb index fe6269515..15a3761ff 100644 --- a/app/models/command/parser.rb +++ b/app/models/command/parser.rb @@ -31,6 +31,8 @@ class Command::Parser Command::ClearFilters.new(params: filter.as_params) when "/close" Command::Close.new(card_ids: cards.ids, reason: combined_arguments) + when "/do" + Command::Do.new(card_ids: cards.ids) when "/insight" Command::GetInsight.new(query: combined_arguments, card_ids: cards.ids) when "/search"