28 lines
1 KiB
Ruby
28 lines
1 KiB
Ruby
|
|
class KudoMailer < ApplicationMailer
|
||
|
|
# send a batched-up notification
|
||
|
|
# user_kudos is a hash of arrays converted to JSON string format
|
||
|
|
# [commentable_type]_[commentable_id] =>
|
||
|
|
# names: [array of users who left kudos with the last entry being "# guests" if any]
|
||
|
|
# guest_count: number of guest kudos
|
||
|
|
def batch_kudo_notification(user_id, user_kudos)
|
||
|
|
@commentables = []
|
||
|
|
@user_kudos = JSON.parse(user_kudos)
|
||
|
|
user = User.find(user_id)
|
||
|
|
kudos_hash = JSON.parse(user_kudos)
|
||
|
|
|
||
|
|
kudos_hash.each_pair do |commentable_info, _kudo_givers_hash|
|
||
|
|
# Parse the key to extract the type and id of the commentable so we can
|
||
|
|
# weed out any commentables that no longer exist.
|
||
|
|
commentable_type, commentable_id = commentable_info.split("_")
|
||
|
|
commentable = commentable_type.constantize.find_by(id: commentable_id)
|
||
|
|
next unless commentable
|
||
|
|
|
||
|
|
@commentables << commentable
|
||
|
|
end
|
||
|
|
mail(
|
||
|
|
to: user.email,
|
||
|
|
subject: default_i18n_subject(app_name: ArchiveConfig.APP_SHORT_NAME)
|
||
|
|
)
|
||
|
|
end
|
||
|
|
end
|