From: Benjamin LAN-SUN-LUK <benjamin.lan-sun-luk(a)supinfo.com>
Signed-off-by: Benjamin <benjamin.lan-sun-luk(a)supinfo.com>
---
app/models/user_mailer.rb | 10 +++++
.../user_mailer/no_activity_recorded.html.erb | 6 +++
config/environment.rb | 5 ++-
config/initializers/schedules.rb | 37 ++++++++++++++++++++
4 files changed, 57 insertions(+), 1 deletions(-)
create mode 100644 app/views/user_mailer/no_activity_recorded.html.erb
create mode 100644 config/initializers/schedules.rb
diff --git a/app/models/user_mailer.rb b/app/models/user_mailer.rb
index 73308af..8d60671 100644
--- a/app/models/user_mailer.rb
+++ b/app/models/user_mailer.rb
@@ -7,4 +7,14 @@ class UserMailer < ActionMailer::Base
subject "Your password"
body :user => user, :new_password => new_password
end
+
+ # Send an e-mail to an user an notify him that no-activity has been detected
+ # for some backlog items.
+ #
+ def no_activity_recorded(user, backlog_items)
+ recipients user.email
+ from "no_reply(a)projxp.org" # TODO Email must be edit
+ subject "No activity has been detected"
+ body :user => user, :backlog_items => backlog_items
+ end
end
diff --git a/app/views/user_mailer/no_activity_recorded.html.erb
b/app/views/user_mailer/no_activity_recorded.html.erb
new file mode 100644
index 0000000..e4acd3c
--- /dev/null
+++ b/app/views/user_mailer/no_activity_recorded.html.erb
@@ -0,0 +1,6 @@
+Dear <%= @user.display_name %>,
+
+No activities was detected on this backlogs:
+<% @backlog_items.each do |backlog_item|%>
+<%= backlog_item.user_story.title %>
+<% end %>
diff --git a/config/environment.rb b/config/environment.rb
index af8a593..1687102 100644
--- a/config/environment.rb
+++ b/config/environment.rb
@@ -72,6 +72,9 @@ Rails::Initializer.run do |config|
# Make Active Record use UTC-base instead of local time
# config.active_record.default_timezone = :utc
+
+ # Gems
+ config.gem 'openwferu-scheduler', :lib => 'openwfe/util/scheduler'
end
ActiveSupport::CoreExtensions::Time::Conversions::DATE_FORMATS.merge!(
@@ -82,7 +85,7 @@ ActiveSupport::CoreExtensions::Time::Conversions::DATE_FORMATS.merge!(
# Mail configuration.
# Please complete the config file are locate at /config/mailer.yml
-#
+#
require "smtp_tls"
mailer_config = File.open("#{RAILS_ROOT}/config/mailer.yml")
diff --git a/config/initializers/schedules.rb b/config/initializers/schedules.rb
new file mode 100644
index 0000000..287756c
--- /dev/null
+++ b/config/initializers/schedules.rb
@@ -0,0 +1,37 @@
+require 'fastthread'
+require 'openwfe/util/scheduler'
+include OpenWFE
+
+# Initialize a threads array
+threads = []
+
+threads << Thread.new do
+ scheduler = Scheduler.new
+ scheduler.start
+
+ # Do this everyday at 10:00 am
+ scheduler.schedule('0 8 * * *') do
+
+ user_no_activity_on_backlog_items = {}
+ BacklogItem.find_all_by_state(BacklogItem::STATE_ASSIGNED).each do |backlog_item|
+ backlog_item.tasks.each do |task|
+ if task.created_at.to_date < Date.yesterday
+ backlog_item_owner = backlog_item.owner
+ user_no_activity_on_backlog_items[backlog_item_owner] ||= []
+ user_no_activity_on_backlog_items[backlog_item_owner] << backlog_item
+ end
+ end
+ end
+
+ # Send the e-mail
+ user_no_activity_on_backlog_items.each do |owner, backlog_items|
+ UserMailer.deliver_no_activity_recorded(owner, backlog_items)
+ end
+
+ end
+
+ scheduler.join
+end
+
+# Run all threads
+threads.each { |thread| thread.run }
\ No newline at end of file
--
1.5.2.4