class TodosController

This module exposes a method for each TODO related flow

Attributes

database[R]

Public Class Methods

new() click to toggle source
# File lib/todos_controller.rb, line 11
def initialize
  @database = TodosListModel.new
end

Public Instance Methods

add_todo(description) click to toggle source
# File lib/todos_controller.rb, line 15
def add_todo(description)
  @database.add_todo description
  task_number = @database.pending_todos.length
  MessageHelper.print_task_created task_number
end
complete_todo(index) click to toggle source
# File lib/todos_controller.rb, line 29
def complete_todo(index)
  if database.pending_todos.length >= index
    database.pending_todos[index - 1].complete
    database.save_todos
  else
    WarningHelper.print_cant_complete_inexistent_task index
  end
end
delete_todo(index) click to toggle source
# File lib/todos_controller.rb, line 38
def delete_todo(index)
  unless @database.pending_todos.length >= index
    return WarningHelper.print_cant_delete_inexistent_task index
  end

  description = @database.pending_todos[index - 1].description

  if request_delete_confirmation(description, index) == 'y'
    @database.delete_pending_todo index - 1
    MessageHelper.print_delete_todo_confirmed index
  else
    MessageHelper.print_delete_todo_aborted
  end
end
list_all_todos() click to toggle source
# File lib/todos_controller.rb, line 25
def list_all_todos
  list_todos include_completed: true
end
list_pending_todos() click to toggle source
# File lib/todos_controller.rb, line 21
def list_pending_todos
  list_todos include_completed: false
end

Private Instance Methods

list_todos(include_completed: false) click to toggle source
# File lib/todos_controller.rb, line 78
def list_todos(include_completed: false)
  number_of_tasks = include_completed ?
    database.pending_todos.length + database.completed_todos.length :
    database.pending_todos.length
  if number_of_tasks.zero?
    MessageHelper.print_no_matches
  else
    MessageHelper.print_task_list_header
    print_pending_tasks
    print_completed_tasks if include_completed
    MessageHelper.print_task_list_footer number_of_tasks
  end
end
print_completed_tasks() click to toggle source
print_pending_tasks() click to toggle source
request_delete_confirmation(description, index) click to toggle source
# File lib/todos_controller.rb, line 55
def request_delete_confirmation(description, index)
  user_confirmed = ''
  until %w[y n].include?(user_confirmed)
    MessageHelper.print_delete_todo_request_confirmation description, index
    user_confirmed = STDIN.gets.chomp
  end
  user_confirmed
end