Class: Decidim::TimeTracker::Assignation

Inherits:
ApplicationRecord show all
Includes:
Loggable, Decidim::Traceable
Defined in:
app/models/decidim/time_tracker/assignation.rb

Overview

The data store for an assignation in the Decidim::TimeTracker component.

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.log_presenter_class_for(_log) ⇒ Object

rubocop:enable Lint/UselessAssignment



63
64
65
# File 'app/models/decidim/time_tracker/assignation.rb', line 63

def self.log_presenter_class_for(_log)
  Decidim::TimeTracker::AdminLog::AssignationPresenter
end

.sorted_by_status(*statuses) ⇒ Object

rubocop:disable Lint/UselessAssignment



54
55
56
57
58
59
60
# File 'app/models/decidim/time_tracker/assignation.rb', line 54

def self.sorted_by_status(*statuses)
  accepted = self.accepted.sort_by(&:time_dedicated).reverse
  pending = self.pending
  rejected = self.rejected

  statuses.map { |status| send(status) }.sum
end

Instance Method Details

#assigneeObject



37
38
39
# File 'app/models/decidim/time_tracker/assignation.rb', line 37

def assignee
  Assignee.for(user)
end

#can_change_status?Boolean

Returns:

  • (Boolean)


49
50
51
# File 'app/models/decidim/time_tracker/assignation.rb', line 49

def can_change_status?
  time_events.empty?
end

#time_dedicatedObject



41
42
43
# File 'app/models/decidim/time_tracker/assignation.rb', line 41

def time_dedicated
  time_events.sum(&:total_seconds)
end

#time_dedicated_to(activity) ⇒ Object



45
46
47
# File 'app/models/decidim/time_tracker/assignation.rb', line 45

def time_dedicated_to(activity)
  time_events.where(activity: activity).sum(&:total_seconds)
end