Module: TransitionManager

Included in:
BoardController, Card, CardsController, IterationController
Defined in:
lib/transition_manager.rb

Instance Method Summary collapse

Instance Method Details

#apply_transition(card, status) ⇒ Object



6
7
8
9
10
11
12
13
# File 'lib/transition_manager.rb', line 6

def apply_transition(card, status)
  card.update_attribute("status_name",status.name())
  if (Status::IN_PLAY == status)
    for parent_card in card.parent_cards().select { |c| Status::ESTIMATED == c.status()}
      apply_transition(parent_card, status)
    end
  end
end

#successor_statuses(card) ⇒ Object



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/transition_manager.rb', line 15

def successor_statuses(card)
  successor_statuses = Array.new(card.status().successors())
  if (! card.child_cards().empty?())
    successor_statuses.delete(Status::DROPPED)
    for child_card in card.child_cards()
      successor_statuses.delete(Status::IN_PLAY) if (Status::IN_DEV == child_card.status())
      successor_statuses.delete(Status::ESTIMATED) if (child_card.status().active?())
    end
  end
  for parent_card in card.parent_cards()
    successor_statuses.delete(Status::IN_DEV) if (Status::IN_PLAY == parent_card.status())
    successor_statuses.delete(Status::IN_PLAY) if (Status::NEW == parent_card.status())
  end
  return successor_statuses
end

#transition_allowed?(card, status) ⇒ Boolean

Returns:

  • (Boolean)


2
3
4
# File 'lib/transition_manager.rb', line 2

def transition_allowed?(card, status)
  successor_statuses(card).include?(status)
end