Class: Achievements::AwardService
- Inherits:
-
Object
- Object
- Achievements::AwardService
- Defined in:
- app/services/achievements/award_service.rb
Instance Attribute Summary collapse
-
#achievement_id ⇒ Object
readonly
Returns the value of attribute achievement_id.
-
#current_user ⇒ Object
readonly
Returns the value of attribute current_user.
-
#recipient_id ⇒ Object
readonly
Returns the value of attribute recipient_id.
Instance Method Summary collapse
- #execute ⇒ Object
-
#initialize(current_user, achievement_id, recipient_id) ⇒ AwardService
constructor
A new instance of AwardService.
Constructor Details
#initialize(current_user, achievement_id, recipient_id) ⇒ AwardService
Returns a new instance of AwardService.
7 8 9 10 11 |
# File 'app/services/achievements/award_service.rb', line 7 def initialize(current_user, achievement_id, recipient_id) @current_user = current_user @achievement_id = achievement_id @recipient_id = recipient_id end |
Instance Attribute Details
#achievement_id ⇒ Object (readonly)
Returns the value of attribute achievement_id.
5 6 7 |
# File 'app/services/achievements/award_service.rb', line 5 def achievement_id @achievement_id end |
#current_user ⇒ Object (readonly)
Returns the value of attribute current_user.
5 6 7 |
# File 'app/services/achievements/award_service.rb', line 5 def current_user @current_user end |
#recipient_id ⇒ Object (readonly)
Returns the value of attribute recipient_id.
5 6 7 |
# File 'app/services/achievements/award_service.rb', line 5 def recipient_id @recipient_id end |
Instance Method Details
#execute ⇒ Object
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
# File 'app/services/achievements/award_service.rb', line 13 def execute achievement = Achievements::Achievement.find(achievement_id) return unless allowed?(achievement) recipient = User.find(recipient_id) user_achievement = Achievements::UserAchievement.create( achievement: achievement, user: recipient, awarded_by_user: current_user) return error_awarding(user_achievement) unless user_achievement.persisted? NotificationService.new.new_achievement_email(recipient, achievement).deliver_later ServiceResponse.success(payload: user_achievement) rescue ActiveRecord::RecordNotFound => e error(e.) end |