Class: IshManager::OfficeMailer

Inherits:
ApplicationMailer show all
Defined in:
app/mailers/ish_manager/office_mailer.rb

Instance Method Summary collapse

Methods inherited from ApplicationMailer

#option_alert, #shared_galleries, #stock_alert, #test_email

Instance Method Details

#send_context_email(ctx_id) ⇒ Object

2023-04-02 vp Continue. 2023-09-24 vp Continue : )



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'app/mailers/ish_manager/office_mailer.rb', line 6

def send_context_email ctx_id
  @ctx         = Ctx.find ctx_id
  @lead        = Lead.find @ctx.lead_id
  @tmpl_config = OpenStruct.new JSON.parse( @ctx.tmpl[:config_json] )

  @utm_tracking_str = {
    'cid'          => @ctx.lead_id,
    'utm_campaign' => @ctx.tmpl.slug,
    'utm_medium'   => 'email',
    'utm_source'   => @ctx.tmpl.slug,
  }.map { |k, v| "#{k}=#{v}" }.join("&")

  # @origin         = "https://#{Rails.application.config.action_mailer.default_url_options[:host]}"

  @unsubscribe_url = Ishapi::Engine.routes.url_helpers.email_unsubscribes_url({
    template_id: @ctx.tmpl.id,
    lead_id:     @lead.id,
    token:       @lead.unsubscribe_token,
  })
  # renderer = Tmp6Ctl.new
  # renderer = IshManager::ApplicationController.new
  # renderer.send( :include, ::IshManager::ApplicationHelper )
  # renderer.send( :request, { host: 'test-host' } )
  renderer = IshManager::ApplicationMailer.new

  renderer.instance_variable_set( :@ctx,              @ctx )
  renderer.instance_variable_set( :@lead,             @ctx.lead )
  renderer.instance_variable_set( :@utm_tracking_str, @utm_tracking_str )
  renderer.instance_variable_set( :@unsubscribe_url,  @unsubscribe_url )
  renderer.instance_variable_set( :@tmpl_config,      @tmpl_config )

  # eval( @ctx.tmpl.config_exe )

  if 'plain' == @ctx.tmpl.layout
    rendered_str = ERB.new( @ctx.body ).result( @ctx.get_binding )
  else
    rendered_str = renderer.render_to_string("ish_manager/email_templates/_#{@ctx.tmpl.layout}")
  end
  @ctx.update({
    rendered_str: rendered_str,
    sent_at: Time.now.to_s,
  })

  mail( from:    @ctx.from_email,
        to:      @ctx.to_email,
        cc:      @ctx.cc,
        subject: ERB.new( @ctx.subject ).result( @ctx.get_binding ),
        body:    rendered_str,
        content_type: "text/html" )
end