140 lines
3.1 KiB
Ruby
140 lines
3.1 KiB
Ruby
class MailHist < ApplicationRecord
|
|
belongs_to :mail_content
|
|
belongs_to :mail_type
|
|
belongs_to :m_odr_rep
|
|
belongs_to :m_odr
|
|
belongs_to :lang_site
|
|
|
|
belongs_to :element, :polymorphic => true
|
|
|
|
QI_DYNAMICS = %w()
|
|
|
|
eval(QI_DYNAMICS_CORE)
|
|
|
|
|
|
|
|
def self.qi_table_order
|
|
{
|
|
|
|
:created_at => {:name => "Date", :reorder => true},
|
|
:from_email => {:name => "Email exp.", :reorder => true},
|
|
:to_email => {:name => "Email dest.", :reorder => true},
|
|
:subject => {:name => "Sujet.", :reorder => true},
|
|
:element => {:name => "Elément"},
|
|
:mail_type => {:name => "Elément"},
|
|
:m_odr => {:name => "ODR"},
|
|
:m_odr_rep => {:name => "Participation"},
|
|
:actions => "Actions",
|
|
}
|
|
end
|
|
|
|
|
|
def self.valid_sort
|
|
r = []
|
|
self.qi_table_order.each do |key, value|
|
|
if value.instance_of? Hash
|
|
if value[:reorder] and value[:reorder] == true
|
|
r << key.to_s if value[:reorder]
|
|
end
|
|
end
|
|
end
|
|
|
|
return r
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
def self.generate_mail(lang_slug, mail_type, email, options = {})
|
|
|
|
#(lang_slug, mail_type, @m_odr_rep.particulars.first.email, {:arguments => {:numero_avoir => ""}, :m_odr => @m_odr})
|
|
|
|
@options = options
|
|
|
|
@lang_site = LangSite.find_by_slug(lang_slug)
|
|
|
|
@mail_type = mail_type
|
|
|
|
@mail_content = @mail_type.mail_contents.where(:lang_site_id => @lang_site.id).first
|
|
|
|
@m_odr = options[:m_odr]
|
|
@m_odr_rep = options[:m_odr_rep]
|
|
|
|
@file_tunel = options[:file_tunel]
|
|
|
|
@arguments = @options[:arguments]
|
|
|
|
|
|
|
|
arguments = @arguments
|
|
|
|
|
|
s = @mail_content.subject.to_s
|
|
arguments.each_pair do |key, value|
|
|
s = s.gsub(/\[#{key.to_s}\]/, value.to_s)
|
|
|
|
end
|
|
@subject = s
|
|
|
|
r = @mail_content.message
|
|
arguments.each_pair do |key, value|
|
|
r = r.gsub(/\[#{key.to_s}\]/, value.to_s)
|
|
|
|
end
|
|
|
|
@body = r
|
|
|
|
|
|
if @options[:from]
|
|
@from = @options[:from]
|
|
elsif @m_odr and @m_odr.email_from?
|
|
@from = @m_odr.email_from
|
|
elsif @file_tunel and @file_tunel.from_email?
|
|
@file_tunel = @file_tunel.from_email
|
|
end
|
|
|
|
|
|
|
|
@to_email = email
|
|
|
|
mail_history = MailHist.create(:lang_site => @lang_site, :to_email => @to_email, :from_email => @from, :element => options[:element], :subject => @subject, :body => @body, :m_odr => @m_odr, :m_odr_rep => @m_odr_rep, :mail_content => @mail_content, :mail_type => @mail_type)
|
|
|
|
|
|
mail = GeneralMails.general2(@to_email, @subject, @body, mail_options = {:m_odr => @m_odr})
|
|
|
|
mail_history.subject_send = @subject
|
|
mail_history.body_send = mail.body.encoded
|
|
|
|
mail.deliver
|
|
|
|
|
|
mail_history.save
|
|
|
|
|
|
|
|
return mail_history
|
|
|
|
|
|
end
|
|
|
|
def deliver_mail
|
|
mail = GeneralMails.general(self.lang_site.slug, self.mail_type.slug, self.email , self.subject, self.content)
|
|
|
|
self.subject_cache = self.subject
|
|
self.content_cache = mail.body.encoded
|
|
|
|
mail.deliver
|
|
|
|
self.sended = true
|
|
self.sended_at = Time.now
|
|
|
|
self.save
|
|
|
|
|
|
|
|
|
|
end
|
|
|
|
end
|