Class: Milestone
- Inherits:
-
ActiveRecord::Base
- Object
- ActiveRecord::Base
- Milestone
- Extended by:
- Nosync
- Defined in:
- app/models/milestone.rb
Class Method Summary collapse
- .completed ⇒ Object (also: closed)
- .empty ⇒ Object
- .id_for_remote_id(remote_id) ⇒ Object
- .populated ⇒ Object
- .remote_id_map ⇒ Object
- .uncompleted ⇒ Object (also: open)
- .without(milestones) ⇒ Object
- .without_remote_ids(*ids) ⇒ Object
Instance Method Summary collapse
- #close! ⇒ Object
- #completed? ⇒ Boolean
- #remote_milestone ⇒ Object (also: #remote)
- #uncompleted? ⇒ Boolean
- #update_closed_tickets_count! ⇒ Object
Methods included from Nosync
Class Method Details
.completed ⇒ Object 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 |
.empty ⇒ Object
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 |
.populated ⇒ Object
22 23 24 |
# File 'app/models/milestone.rb', line 22 def populated where(arel_table[:tickets_count].gt(0)) end |
.remote_id_map ⇒ Object
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 |
.uncompleted ⇒ Object 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
61 62 63 |
# File 'app/models/milestone.rb', line 61 def completed? tickets_count > 0 && closed_tickets_count == tickets_count end |
#remote_milestone ⇒ Object 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
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 |