lib/notifiable/notification.rb in notifiable-rails-0.16.0 vs lib/notifiable/notification.rb in notifiable-rails-0.17.0
- old
+ new
@@ -5,7 +5,58 @@
has_many :notification_statuses, :class_name => 'Notifiable::NotificationStatus', :dependent => :destroy
belongs_to :app, :class_name => 'Notifiable::App'
validates_presence_of :app
+
+ def batch
+ yield(self)
+ close
+ end
+
+ def add_notifiable(notifiable)
+ notifiable.device_tokens.each do |d|
+ self.add_device_token(d)
+ end
+ end
+
+ def add_device_token(d)
+ provider = d.provider.to_sym
+
+ unless notifiers[provider]
+ clazz = Notifiable.notifier_classes[provider]
+ raise "Notifier #{provider} not configured" unless clazz
+
+ notifier = clazz.new(Rails.env, self)
+ self.app.configure provider, notifier
+
+ notifiers[provider] = notifier
+ end
+
+ notifier = @notifiers[provider]
+ if d.is_valid? && !notifier.nil?
+ notifier.send_notification(d)
+ end
+ end
+
+ def send_params
+ @send_params ||= (self.params ? self.params : {}).merge({:notification_id => self.id})
+ end
+
+ private
+ def notifiers
+ @notifiers ||= {}
+ end
+
+ def close
+ notifiers.each_value {|n| n.close}
+ @notifiers = nil
+ summarise
+ end
+
+ def summarise
+ self.sent_count = self.notification_statuses.count
+ self.gateway_accepted_count = self.notification_statuses.where(:status => 0).count
+ self.save
+ end
end
end
\ No newline at end of file