Class: Mailing

Inherits:
ApplicationRecord show all
Includes:
Models::Auditable
Defined in:
app/models/mailing.rb

Overview

== Schema Information

Table name: mailings
Database name: primary

id :integer not null, primary key
cover_file_size :integer
cover_letter_file_name :string(255)
cover_letter_type :string(255)
date_completed :datetime
description :text
label_content_type :string(255)
label_file_name :string(255)
label_file_size :integer
state :string(255)
created_at :datetime
updated_at :datetime
creator_id :integer
job_id :string(255)
store_id :integer
updater_id :integer

Indexes

index_mailings_on_store_id (store_id)

Foreign Keys

fk_rails_... (store_id => stores.id)

Constant Summary

Constants included from Models::Auditable

Models::Auditable::ALWAYS_IGNORED

Belongs to collapse

Methods included from Models::Auditable

#creator, #updater

Has many collapse

Instance Method Summary collapse

Methods included from Models::Auditable

#all_skipped_columns, #audit_reference_data, #should_not_save_version, #stamp_record

Methods inherited from ApplicationRecord

ransackable_associations, ransackable_attributes, ransackable_scopes, ransortable_attributes, #to_relation

Methods included from Models::EventPublishable

#publish_event

Instance Method Details

#activitiesActiveRecord::Relation<Activity>

Returns:

See Also:



37
# File 'app/models/mailing.rb', line 37

has_many :activities, through: :mail_activities

#activity_idsObject



68
69
70
# File 'app/models/mailing.rb', line 68

def activity_ids
  mail_activities.pluck(:activity_id)
end

#activity_ids=(act_ids) ⇒ Object



62
63
64
65
66
# File 'app/models/mailing.rb', line 62

def activity_ids=(act_ids)
  act_ids.each do |act_id|
    self.mail_activities << MailActivity.create(mailing_id: id, activity_id: act_id)
  end
end

#addressesObject



81
82
83
# File 'app/models/mailing.rb', line 81

def addresses
  mail_activities.map(&:mailing_address)
end

#background_jobObject



72
73
74
75
# File 'app/models/mailing.rb', line 72

def background_job
  return unless job_id
  BackgroundJobStatus.find(job_id)
end

#generate_all_postage_labels_pdfObject



93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
# File 'app/models/mailing.rb', line 93

def generate_all_postage_labels_pdf
  upload = nil
  files_to_combine = []
  msg = nil
  msg_arr = []
  mail_activities_to_print = mail_activities.complete.select{|ma| ma.ready_to_print_labels?}
  t = mail_activities_to_print.length
  p = 0
  mail_activities_to_print.each do |ma|
    pdf = (ma.all_labels_pdf.attachment.path)
    if pdf
      files_to_combine << pdf
      p += 1
    else
      msg_arr << "#{ma.name}"
    end
  end
  unless files_to_combine.empty?
    file_name = "all_postage_labels_mailing_#{id}_#{Time.current.strftime("%m_%d_%Y_%I_%M%p")}.pdf".downcase
    output_file_path = Upload.temp_location(file_name)
    all_postage_labels_path = PdfTools.combine(files_to_combine, output_file_path: output_file_path)
    upload = Upload.uploadify(all_postage_labels_path, "all_postage_labels_path_pdf")
  end
  msg = "Processed #{p} of #{t} mail activities. "
  msg += "Postage Labels could not generate for #{msg_arr.join(', ')}." unless msg_arr.empty?
  return upload, msg
end

#has_active_background_job?Boolean

Returns:

  • (Boolean)


77
78
79
# File 'app/models/mailing.rb', line 77

def has_active_background_job?
  background_job&.active?
end

#mail_activitiesActiveRecord::Relation<MailActivity>

Returns:

See Also:



36
# File 'app/models/mailing.rb', line 36

has_many :mail_activities, dependent: :destroy

#ok_to_delete?Boolean

Returns:

  • (Boolean)


89
90
91
# File 'app/models/mailing.rb', line 89

def ok_to_delete?
  !complete? && mail_activities.all?(&:ok_to_delete?)
end

#ready_to_complete?Boolean

Returns:

  • (Boolean)


85
86
87
# File 'app/models/mailing.rb', line 85

def ready_to_complete?
  mail_activities.all?(&:complete?)
end

#storeStore

Returns:

See Also:



35
# File 'app/models/mailing.rb', line 35

belongs_to :store, optional: true

#to_sObject



58
59
60
# File 'app/models/mailing.rb', line 58

def to_s
  "Mailing #{id}"
end