class Report
Public Class Methods
schedule()
click to toggle source
# File lib/caperoma/models/report.rb, line 13 def self.schedule puts 'Turning on auto reports' root = File.dirname __dir__ crontab_config_file = File.join root, '..', '..', 'config', 'schedule.rb' `whenever --update-crontab caperoma --load-file "#{crontab_config_file}"` puts 'Auto reports turned on' end
unschedule()
click to toggle source
# File lib/caperoma/models/report.rb, line 21 def self.unschedule puts 'Turning off auto reports' root = File.dirname __dir__ crontab_config_file = File.join root, '..', '..', 'config', 'unschedule.rb' `whenever --update-crontab caperoma --load-file "#{crontab_config_file}"` puts 'Auto reports turned off' end
Private Instance Methods
assign_unreported_tasks()
click to toggle source
most of it is related to email formatting
# File lib/caperoma/models/report.rb, line 39 def assign_unreported_tasks unreported_tasks.update_all(report_sti_key => id) end
formatted_day(day)
click to toggle source
# File lib/caperoma/models/report.rb, line 99 def formatted_day(day) day.strftime('%b %-d') end
formatted_end_day()
click to toggle source
# File lib/caperoma/models/report.rb, line 107 def formatted_end_day formatted_day(end_day) end
formatted_start_day()
click to toggle source
# File lib/caperoma/models/report.rb, line 103 def formatted_start_day formatted_day(start_day) end
formatted_title(task)
click to toggle source
# File lib/caperoma/models/report.rb, line 158 def formatted_title(task) truncate(task.title, length: 90) end
hours_spent()
click to toggle source
# File lib/caperoma/models/report.rb, line 71 def hours_spent (total_time_spent_in_minutes / 60).to_i end
jira_formatted_url(task)
click to toggle source
# File lib/caperoma/models/report.rb, line 166 def jira_formatted_url(task) "<a href=\"#{task.jira_live_url}\">#{task.jira_key}</a>" end
jira_url_or_blank(task)
click to toggle source
# File lib/caperoma/models/report.rb, line 162 def jira_url_or_blank(task) task.jira_key.present? ? jira_formatted_url(task) : '' end
not_test?()
click to toggle source
# File lib/caperoma/models/report.rb, line 83 def not_test? ENV['CAPEROMA_INTEGRATION_TEST'].blank? && ENV['CAPEROMA_TEST'].blank? end
pivotal_formatted_url(task)
click to toggle source
# File lib/caperoma/models/report.rb, line 174 def pivotal_formatted_url(task) "<a href=\"#{task.pivotal_url}\">#{task.pivotal_id}</a>" end
pivotal_url_or_blank(task)
click to toggle source
# File lib/caperoma/models/report.rb, line 170 def pivotal_url_or_blank(task) task.pivotal_id.present? ? pivotal_formatted_url(task) : '' end
remaining_minutes_spent()
click to toggle source
# File lib/caperoma/models/report.rb, line 75 def remaining_minutes_spent (total_time_spent_in_minutes - hours_spent * 60).to_i end
report_body()
click to toggle source
# File lib/caperoma/models/report.rb, line 123 def report_body [ "\n", "<h2>Done during #{timeframe}:</h2>", '<br />', '<table style="width: 100%;text-align: left;">', '<thead>', '<tr><th>Jira</th><th>Pivotal</th><th>Title</th><th>Time spent</th></tr>', '</thead>', '<tbody>', reported_tasks_rows, '</tbody>', '</table>', '<br />', "<strong>Total time spent during #{timeframe}:</strong> #{total_time_spent}." ].flatten.join("\n") end
report_msg()
click to toggle source
# File lib/caperoma/models/report.rb, line 91 def report_msg report_msg_content.join("\n") end
report_msg_content()
click to toggle source
# File lib/caperoma/models/report.rb, line 95 def report_msg_content ["subject: #{report_subject}", 'Content-Type: text/html; charset=UTF-8', report_body] end
report_sti_key()
click to toggle source
# File lib/caperoma/models/report.rb, line 55 def report_sti_key self.class.to_s.foreign_key end
report_subject()
click to toggle source
# File lib/caperoma/models/report.rb, line 115 def report_subject [subject_name, subject_timeframe].join(' ') end
reported_tasks()
click to toggle source
# File lib/caperoma/models/report.rb, line 63 def reported_tasks tasks.finished.order(finished_at: :desc) end
reported_tasks_rows()
click to toggle source
# File lib/caperoma/models/report.rb, line 141 def reported_tasks_rows reported_tasks.collect { |task| table_row(task) }.join("\n") end
send_email()
click to toggle source
# File lib/caperoma/models/report.rb, line 43 def send_email @smtp.start('gmail.com', @account.email, @account.password, :login, &send_email_method) end
send_email_method()
click to toggle source
# File lib/caperoma/models/report.rb, line 47 def send_email_method proc { @smtp.send_message(report_msg, @account.email, to_addresses) } end
set_variables()
click to toggle source
# File lib/caperoma/models/report.rb, line 31 def set_variables @smtp = Net::SMTP.new 'smtp.gmail.com', 587 @smtp.enable_starttls @account = Account.gmail end
subject_timeframe()
click to toggle source
# File lib/caperoma/models/report.rb, line 119 def subject_timeframe "(#{timeframe})" end
table_row(task)
click to toggle source
# File lib/caperoma/models/report.rb, line 145 def table_row(task) '<tr>' + task_row_data(task).collect { |task| '<td>' + task + '</td>' }.join("\n") + '</tr>' end
task_row_data(task)
click to toggle source
# File lib/caperoma/models/report.rb, line 149 def task_row_data(task) [ jira_url_or_blank(task), pivotal_url_or_blank(task), formatted_title(task), task.time_spent ] end
timeframe()
click to toggle source
# File lib/caperoma/models/report.rb, line 111 def timeframe [formatted_start_day, formatted_end_day].join(' - ') end
to_addresses()
click to toggle source
# File lib/caperoma/models/report.rb, line 87 def to_addresses ReportRecipient.all.collect(&:email) end
total_time_spent()
click to toggle source
# File lib/caperoma/models/report.rb, line 67 def total_time_spent "#{hours_spent}h #{remaining_minutes_spent}m" end
total_time_spent_in_minutes()
click to toggle source
# File lib/caperoma/models/report.rb, line 79 def total_time_spent_in_minutes reported_tasks.all.collect(&:time_spent_in_minutes).sum end
unreported_tasks()
click to toggle source
# File lib/caperoma/models/report.rb, line 51 def unreported_tasks Task.finished.where(report_sti_key => nil) end
update_content()
click to toggle source
# File lib/caperoma/models/report.rb, line 59 def update_content update content: report_msg end