Module: Auth::Concerns::NotificationConcern
- Extended by:
- ActiveSupport::Concern
- Includes:
- ChiefModelConcern
- Defined in:
- app/models/auth/concerns/notification_concern.rb
Instance Method Summary collapse
-
#create_notification_response(response, type) ⇒ Object
@response : a response received after sending a notification.
-
#email_partial ⇒ Object
returns the name of a partial to be rendered.
- #format_for_android(resource) ⇒ Object
- #format_for_ios(resource) ⇒ Object
- #format_for_sms(resource) ⇒ Object
- #format_for_web(resource) ⇒ Object
-
#get_resources ⇒ Array
Of resource objects.
- #get_topics ⇒ Object
-
#max_retry_count ⇒ Object
default max retry count ###################.
- #resource_class_constantized ⇒ Object
-
#send_by_desktop?(resource) ⇒ Boolean
if the notification should be sent by desktop or not.
-
#send_by_email?(resource) ⇒ Boolean
if the notification should be sent by email or not.
-
#send_by_mobile?(resource) ⇒ Boolean
if the notification should be sent by mobile or not.
-
#send_by_sms?(resource) ⇒ Boolean
if the notification should be sent by sms or not.
-
#send_email(resource) ⇒ Object
Auth.configuration.mailer_class.constantize.notification(resource,notification).deliver_later if resource.email.
-
#send_email_background(resource) ⇒ Object
defaults to sending the email directly.
- #send_notification ⇒ Object
-
#send_sms(resource) ⇒ Object
creates a notification response object using the yield block from calling this method.
-
#send_sms_background(resource) ⇒ Object
defaults to just sending the sms direclty.
- #send_to ⇒ Object
Instance Method Details
#create_notification_response(response, type) ⇒ Object
@response : a response received after sending a notification. webhook identifier is called before_create by a callback.
202 203 204 205 206 207 |
# File 'app/models/auth/concerns/notification_concern.rb', line 202 def create_notification_response(response,type) notification_response = Auth.configuration.notification_response_class.constantize.new(notification_type: type, parent_notification_id: self.id.to_s) notification_response.add_response(response) notification_response.set_webhook_identifier(response) notification_response.save end |
#email_partial ⇒ Object
returns the name of a partial to be rendered.
85 86 87 |
# File 'app/models/auth/concerns/notification_concern.rb', line 85 def email_partial "auth/notifier/email.html.erb" end |
#format_for_android(resource) ⇒ Object
94 95 96 |
# File 'app/models/auth/concerns/notification_concern.rb', line 94 def format_for_android(resource) end |
#format_for_ios(resource) ⇒ Object
98 99 100 |
# File 'app/models/auth/concerns/notification_concern.rb', line 98 def format_for_ios(resource) end |
#format_for_sms(resource) ⇒ Object
90 91 92 |
# File 'app/models/auth/concerns/notification_concern.rb', line 90 def format_for_sms(resource) end |
#format_for_web(resource) ⇒ Object
102 103 104 |
# File 'app/models/auth/concerns/notification_concern.rb', line 102 def format_for_web(resource) end |
#get_resources ⇒ Array
Returns of resource objects.
212 213 214 215 216 217 218 219 220 221 222 223 224 |
# File 'app/models/auth/concerns/notification_concern.rb', line 212 def get_resources resources = [] JSON.parse(resource_ids).each do |class_name,ids| resources << ids.map{|c| class_name.capitalize.constantize.find(c) } end JSON.parse(resources_by_query).each do |class_name,query| resources << class_name.capitalize.constantize.where(query) end resources.flatten end |
#get_topics ⇒ Object
226 227 228 |
# File 'app/models/auth/concerns/notification_concern.rb', line 226 def get_topics topics || [] end |
#max_retry_count ⇒ Object
default max retry count ###################
108 109 110 |
# File 'app/models/auth/concerns/notification_concern.rb', line 108 def max_retry_count 2 end |
#resource_class_constantized ⇒ Object
234 235 236 |
# File 'app/models/auth/concerns/notification_concern.rb', line 234 def resource_class_constantized self.class.name.capitalize.constantize end |
#send_by_desktop?(resource) ⇒ Boolean
if the notification should be sent by desktop or not. override in the implementing model. default is true
141 142 143 |
# File 'app/models/auth/concerns/notification_concern.rb', line 141 def send_by_desktop?(resource) true end |
#send_by_email?(resource) ⇒ Boolean
if the notification should be sent by email or not. override in the implementing model. default is true
118 119 120 |
# File 'app/models/auth/concerns/notification_concern.rb', line 118 def send_by_email?(resource) true end |
#send_by_mobile?(resource) ⇒ Boolean
if the notification should be sent by mobile or not. override in the implementing model. default is true
133 134 135 |
# File 'app/models/auth/concerns/notification_concern.rb', line 133 def send_by_mobile?(resource) true end |
#send_by_sms?(resource) ⇒ Boolean
if the notification should be sent by sms or not. override in the implementing model. default is true
126 127 128 |
# File 'app/models/auth/concerns/notification_concern.rb', line 126 def send_by_sms?(resource) true end |
#send_email(resource) ⇒ Object
Auth.configuration.mailer_class.constantize.notification(resource,notification).deliver_later if resource.email
191 192 193 194 195 196 197 |
# File 'app/models/auth/concerns/notification_concern.rb', line 191 def send_email(resource) if self.email_send_count < max_retry_count self.email_send_count+=1 create_notification_response(yield,"email") self.save end end |
#send_email_background(resource) ⇒ Object
defaults to sending the email directly. override to send email in a background job.
185 186 187 |
# File 'app/models/auth/concerns/notification_concern.rb', line 185 def send_email_background(resource) send_email(resource) end |
#send_notification ⇒ Object
146 147 148 149 150 151 152 153 154 155 156 157 |
# File 'app/models/auth/concerns/notification_concern.rb', line 146 def send_notification recipients = send_to recipients[:resources].map{|r| send_email_background(r) if send_by_email?(r) send_sms_background(r) if send_by_sms?(r) ## so here i still need to implement aws for the notifications. ## that part is still pending. ## so i can override send_sms_background to use a handle_asynchronously with the specified delay. #r.send_mobile_notification(self) if send_by_mobile?(r) #r.send_desktop_notification(self) if send_by_desktop?(r) } end |
#send_sms(resource) ⇒ Object
creates a notification response object using the yield block from calling this method. block passed if any must return a string as the yield.
173 174 175 176 177 178 179 |
# File 'app/models/auth/concerns/notification_concern.rb', line 173 def send_sms(resource) if self.sms_send_count < max_retry_count self.sms_send_count+=1 create_notification_response(yield,"sms") self.save end end |
#send_sms_background(resource) ⇒ Object
defaults to just sending the sms direclty. override using a background job to actually call the send_sms method.
164 165 166 |
# File 'app/models/auth/concerns/notification_concern.rb', line 164 def send_sms_background(resource) send_sms(resource) end |
#send_to ⇒ Object
230 231 232 |
# File 'app/models/auth/concerns/notification_concern.rb', line 230 def send_to {:resources => get_resources, :topics => get_topics} end |