Sha256: 0ee120b9320cf143bd770ad726b180e0c64452e8a5f293bf517b030a38380519

Contents?: true

Size: 1.1 KB

Versions: 4

Compression:

Stored size: 1.1 KB

Contents

# frozen_string_literal: true

require_relative '../entities/issue'

module Dude
  module ProjectManagement
    module Jira
      class FetchCurrentTasks
        def initialize(client)
          @client = client
        end

        def call
          board = client.Board.find(Dude::SETTINGS.dig(:jira, :board_id))

          all_issues = board_type(board)

          all_issues.map { |issue| create_issue(issue) }
        end

        private

        attr_reader :client

        def board_type(board)
          case board.type
          when 'kanban' then board.issues
          when 'simple', 'scrum' then board.sprints(state: 'active').flat_map(&:issues)
          else raise Dude::ToBeImplementedError
          end
        end

        def create_issue(issue)
          Entities::Issue.new(
            id: issue.key,
            title: issue.summary,
            description: issue.description,
            status: issue.status.name,
            assignee: issue&.assignee&.displayName,
            url: "#{Dude::SETTINGS.dig(:jira, :project, :url)}/browse/#{issue.key}"
          )
        end
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
dude-cli-2.1.0 lib/dude/project_management/jira/fetch_current_tasks.rb
dude-cli-2.1.0.alpha5 lib/dude/project_management/jira/fetch_current_tasks.rb
dude-cli-2.1.0.alpha4 lib/dude/project_management/jira/fetch_current_tasks.rb
dude-cli-2.1.0.alpha3 lib/dude/project_management/jira/fetch_current_tasks.rb