Class: RailsExecution::Task

Inherits:
AppModel show all
Defined in:
app/models/rails_execution/task.rb

Constant Summary collapse

PROCESSING_STATUSES =
%w(created reviewing approved processing rejected)
ACTIVE_REPEAT_MODE =
%w(hourly daily weekly monthly annually weekdays)

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#reviewer_idsObject

Returns the value of attribute reviewer_ids.



11
12
13
# File 'app/models/rails_execution/task.rb', line 11

def reviewer_ids
  @reviewer_ids
end

Instance Method Details

#add_files(attachments, current_owner) ⇒ Object



82
83
84
# File 'app/models/rails_execution/task.rb', line 82

def add_files(attachments, current_owner)
  ::RailsExecution.configuration.file_uploader.new(self, attachments, owner: current_owner).call
end

#assign_labels(ids) ⇒ Object



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

def assign_labels(ids)
  self.labels = RailsExecution::Label.where(id: ids.uniq)
end

#assign_reviewers(ids) ⇒ Object



62
63
64
65
66
67
68
69
70
71
72
# File 'app/models/rails_execution/task.rb', line 62

def assign_reviewers(ids)
  ids.each do |id|
    next if id.blank?

    task_review = self.task_reviews.find_or_initialize_by({
      owner_id: id,
      owner_type: ::RailsExecution.configuration.owner_model.to_s,
    })
    task_review.status ||= :reviewing
  end
end

#in_processing?Boolean

Returns:

  • (Boolean)


50
51
52
# File 'app/models/rails_execution/task.rb', line 50

def in_processing?
  PROCESSING_STATUSES.include?(self.status)
end

#next_time_atObject



99
100
101
# File 'app/models/rails_execution/task.rb', line 99

def next_time_at
  ::RailsExecution::Services::CreateScheduledJob.new(self).calculate_next_time_at.strftime("%Y-%m-%d %H:%M")
end

#repeat_mode_select_optionsObject



86
87
88
89
90
91
92
93
94
95
96
97
# File 'app/models/rails_execution/task.rb', line 86

def repeat_mode_select_options
  return RailsExecution::Task.repeat_modes if scheduled_at.nil?

  options = RailsExecution::Task.repeat_modes.dup
  options['hourly'] = self.scheduled_at.strftime('Hourly at minute %-M')
  options['daily'] = self.scheduled_at.strftime('Daily at %H:%M')
  options['weekly'] = self.scheduled_at.strftime('Weekly on %A at %H:%M')
  options['monthly'] = self.scheduled_at.strftime('Monthly on %-d at %H:%M')
  options['annually'] = self.scheduled_at.strftime('Annually on %B %-d at %H:%M')
  options['weekdays'] = self.scheduled_at.strftime('Every weekday (Monday to Friday) at %H:%M')
  return options
end

#repeatable?Boolean

Returns:

  • (Boolean)


58
59
60
# File 'app/models/rails_execution/task.rb', line 58

def repeatable?
  ACTIVE_REPEAT_MODE.include?(self.repeat_mode)
end

#scheduled?Boolean

Returns:

  • (Boolean)


54
55
56
# File 'app/models/rails_execution/task.rb', line 54

def scheduled?
  self.scheduled_at? && self.repeat_none?
end