Sha256: cfd73c54b49900bcd300f934305dbb04ab5d849508ebf1f6f8baf54e87642e0d

Contents?: true

Size: 1.89 KB

Versions: 1

Compression:

Stored size: 1.89 KB

Contents

require '3llo/commands/card/list'
require '3llo/commands/card/list_mine'
require '3llo/commands/card/show'
require '3llo/commands/card/move'
require '3llo/commands/card/self_assign'
require '3llo/commands/card/assign'
require '3llo/commands/card/invalid'
require '3llo/commands/card/comments'
require '3llo/commands/card/comment'
require '3llo/commands/card/add'

module Tr3llo
  class CardCommandFactory
    def initialize(subcommand, args)
      @subcommand = subcommand
      @args = args
    end

    def factory
      case subcommand
      when 'list'
        is_mine, _ = *args
        board_id = $container.resolve(:board)[:id]

        if is_mine == 'mine'
          user_id = $container.resolve(:user)[:id]
          Command::Card::ListMineCommand.new(board_id, user_id)
        else
          Command::Card::ListCommand.new(board_id)
        end
      when 'add'
        board_id = $container.resolve(:board)[:id]
        Command::Card::AddCommand.new(board_id)
      when 'show'
        card_id, _ = args
        Command::Card::ShowCommand.new(card_id)
      when 'comments'
        card_id, _ = args
        Command::Card::CommentsCommand.new(card_id)
      when 'comment'
        card_id, _ = args
        Command::Card::CommentCommand.new(card_id)
      when 'move'
        card_id, _ = args
        board_id = $container.resolve(:board)[:id]
        Command::Card::MoveCommand.new(card_id, board_id)
      when 'self-assign'
        card_id, _ = args
        user_id = $container.resolve(:user)[:id]
        Command::Card::SelfAssignCommand.new(card_id, user_id)
      when 'assign'
        card_id, _ = args
        board_id = $container.resolve(:board)[:id]
        Command::Card::AssignCommand.new(card_id, board_id)
      else
        Command::Card::InvalidCommand.new
      end
    rescue Container::KeyNotFoundError
      Command::ErrorCommand.new
    end

    private

    attr_reader :subcommand, :args
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
3llo-0.1.12 lib/3llo/card_command_factory.rb