class Pello::Actions::AddPomodoriToCard

Attributes

logger[R]
prompt[R]

Public Class Methods

new(prompt, logger = Pello::CardLogger.new) click to toggle source
# File lib/pello/actions/add_pomodori_to_card.rb, line 8
def initialize(prompt, logger = Pello::CardLogger.new)
  @prompt = prompt
  @logger = logger
end

Public Instance Methods

run(user, board_url, list_name) click to toggle source
# File lib/pello/actions/add_pomodori_to_card.rb, line 13
def run(user, board_url, list_name)
  board = Pello::Inputs.choose_board user, board_url
  return unless board

  puts board.as_table
  continue = true
  while continue
    list = Pello::Inputs.choose_list board, list_name
    return unless list

    card = Pello::Inputs.choose_card list
    next unless card

    pomodori_before = card.extract_pomodori
    pomodori_to_add = prompt.ask('Pomodori', default: 1)

    new_name = name_with_added_pomodori(card, pomodori_to_add.to_i)

    puts "Updating card #{card.name}"
    puts "New title:    #{new_name}"

    if prompt.yes?('Confirm?')
      card.name = new_name
      card.save
      logger.log user, card, "[#{Time.now}] #{card.extract_name} (#{pomodori_before} -> #{card.extract_pomodori})"
      puts('Done!')
    else
      puts 'Ok, bye!'
      nil
    end

    continue = prompt.yes?('Another one?')
  end
end

Private Instance Methods

name_with_added_pomodori(card, pomodori_to_add) click to toggle source
# File lib/pello/actions/add_pomodori_to_card.rb, line 50
def name_with_added_pomodori(card, pomodori_to_add)
  current_pomodori = card.extract_pomodori
  current_points = card.extract_points
  current_name = card.extract_name

  result = []
  result << "(#{current_points})" unless current_points.zero?
  result << "#{current_pomodori + pomodori_to_add} 🍅"
  result << current_name
  result.join(' ')
end