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