Class: Milestone

Inherits:
ActiveRecord::Base
  • Object
show all
Extended by:
Nosync
Defined in:
app/models/milestone.rb

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Nosync

nosync, nosync=, nosync?

Class Method Details

.completedObject Also known as: closed



26
27
28
29
30
# File 'app/models/milestone.rb', line 26

def completed
  where(
    arel_table[:tickets_count].gt(0).and(
    arel_table[:closed_tickets_count].eq(arel_table[:tickets_count])))
end

.emptyObject



18
19
20
# File 'app/models/milestone.rb', line 18

def empty
  where(tickets_count: 0)
end

.id_for_remote_id(remote_id) ⇒ Object



53
54
55
56
# File 'app/models/milestone.rb', line 53

def id_for_remote_id(remote_id)
  return nil if remote_id.nil? or remote_id == 0
  where(remote_id: remote_id).pluck(:id).first
end

.populatedObject



22
23
24
# File 'app/models/milestone.rb', line 22

def populated
  where(arel_table[:tickets_count].gt(0))
end

.remote_id_mapObject



48
49
50
51
# File 'app/models/milestone.rb', line 48

def remote_id_map
  query = select("remote_id, id").to_sql
  connection.select_rows(query).each_with_object({}) { |(remote_id, id), map| map[remote_id.to_i] = id.to_i }
end

.uncompletedObject Also known as: open



33
34
35
36
37
# File 'app/models/milestone.rb', line 33

def uncompleted
  where(
    arel_table[:tickets_count].eq(0).or(
    arel_table[:closed_tickets_count].lt(arel_table[:tickets_count])))
end

.without(milestones) ⇒ Object



40
41
42
# File 'app/models/milestone.rb', line 40

def without(milestones)
  without_remote_ids(milestones.map(&:remote_id))
end

.without_remote_ids(*ids) ⇒ Object



44
45
46
# File 'app/models/milestone.rb', line 44

def without_remote_ids(*ids)
  where(arel_table[:remote_id].not_in(ids.flatten.map(&:to_i)))
end

Instance Method Details

#close!Object



69
70
71
72
# File 'app/models/milestone.rb', line 69

def close!
  project.ticket_tracker.close_milestone!(self) if project.ticket_tracker.respond_to?(:close_milestone!)
  touch :completed_at
end

#completed?Boolean

Returns:

  • (Boolean)


61
62
63
# File 'app/models/milestone.rb', line 61

def completed?
  tickets_count > 0 && closed_tickets_count == tickets_count
end

#remote_milestoneObject Also known as: remote



74
75
76
# File 'app/models/milestone.rb', line 74

def remote_milestone
  @remote_milestone ||= ticket_tracker.find_milestone(remote_id) if ticket_tracker.respond_to?(:find_milestone)
end

#uncompleted?Boolean

Returns:

  • (Boolean)


65
66
67
# File 'app/models/milestone.rb', line 65

def uncompleted?
  !completed?
end

#update_closed_tickets_count!Object



79
80
81
# File 'app/models/milestone.rb', line 79

def update_closed_tickets_count!
  update_column :closed_tickets_count, tickets.closed.count
end