Sha256: 62f802f1553a5a59e7d5b64cf122f702210c82758599aade60dd448c8c6db6d5

Contents?: true

Size: 1.78 KB

Versions: 4

Compression:

Stored size: 1.78 KB

Contents

module ActionSmser
  class DeliveryReport < ActiveRecord::Base

    has_many :re_deliveries, :class_name => self.to_s, :foreign_key => :re_delivery_of_delivery_report_id
    belongs_to :re_delivery_of, :class_name => self.to_s, :foreign_key => :re_delivery_of_delivery_report_id

    def self.build_from_sms(sms, to, msg_id)
      @delivery_report = self.new

      [:from, :body, :sms_type, :re_delivery_of_delivery_report_id].each do |var|
        @delivery_report.send("#{var}=", sms.send(var))
      end
      @delivery_report.to = to
      @delivery_report.msg_id = msg_id
      @delivery_report.status = "LOCAL_SENT"
      @delivery_report.gateway = sms.delivery_options[:delivery_method].to_s
      @delivery_report
    end

    def self.create_from_sms(sms, to, sms_id)
      @delivery_report = self.build_from_sms(sms, to, sms_id)
      @delivery_report.save
      @delivery_report
    end

    def status=(stat, skip_log = false)
      self[:status] = stat
      self.status_updated_at = Time.now
      add_log("#{Time.now.to_s(:db)}: #{stat}") unless skip_log
    end

    def add_log(str)
      self.log = "" if self.log.nil?
      self.log += "#{str}\n"
    end

    # Copy this delivery_report information to a new sms object
    def to_sms
      sms_new = ActionSmser::Base.new()
      [:sms_type, :to, :from, :body, :sms_type].each do |var|
        sms_new.send("#{var}=", self.send(var))
      end
      sms_new
    end

    # This updates re_delivered attribute for itself
    def re_delivarable_sms()
      ActionSmser::Logger.info("Re_delivering: #{self.inspect}")
      self.update_attribute(:re_delivered, true)
      
      sms_new = self.to_sms
      sms_new.sms_type = "#{sms_new.sms_type}.re_delivery"
      sms_new.re_delivery_of_delivery_report_id = self.id

      sms_new
    end

  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
action_smser-2.0.2 app/models/action_smser/delivery_report.rb
action_smser-2.0.1 app/models/action_smser/delivery_report.rb
action_smser-2.0.0 app/models/action_smser/delivery_report.rb
action_smser-1.2.1 app/models/action_smser/delivery_report.rb