Class: Mailing
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
Models::Auditable::ALWAYS_IGNORED
#creator, #updater
Instance Method Summary
collapse
#all_skipped_columns, #audit_reference_data, #should_not_save_version, #stamp_record
ransackable_associations, ransackable_attributes, ransackable_scopes, ransortable_attributes, #to_relation
#publish_event
Instance Method Details
#activities ⇒ ActiveRecord::Relation<Activity>
37
|
# File 'app/models/mailing.rb', line 37
has_many :activities, through: :mail_activities
|
#activity_ids ⇒ Object
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
|
#addresses ⇒ Object
81
82
83
|
# File 'app/models/mailing.rb', line 81
def addresses
mail_activities.map(&:mailing_address)
end
|
#background_job ⇒ Object
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_pdf ⇒ Object
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
77
78
79
|
# File 'app/models/mailing.rb', line 77
def has_active_background_job?
background_job&.active?
end
|
#mail_activities ⇒ ActiveRecord::Relation<MailActivity>
36
|
# File 'app/models/mailing.rb', line 36
has_many :mail_activities, dependent: :destroy
|
#ok_to_delete? ⇒ 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
85
86
87
|
# File 'app/models/mailing.rb', line 85
def ready_to_complete?
mail_activities.all?(&:complete?)
end
|
35
|
# File 'app/models/mailing.rb', line 35
belongs_to :store, optional: true
|
#to_s ⇒ Object
58
59
60
|
# File 'app/models/mailing.rb', line 58
def to_s
"Mailing #{id}"
end
|