class WcoEmail::ApplicationMailer

def self.renderer ctx:

def self.renderer ctx:
  out = self.new
  out.instance_variable_set( :@ctx,              ctx )
  out.instance_variable_set( :@lead,             ctx.lead )
  out.instance_variable_set( :@utm_tracking_str, ctx.utm_tracking_str )
  out.instance_variable_set( :@unsubscribe_url,  ctx.unsubscribe_url )
  out.instance_variable_set( :@config,           ctx.config )
  out.instance_variable_set( :@renderer,         out )
  return out
end

def forwarder_notify msg_id

def forwarder_notify msg_id
  @msg = WcoEmail::Message.find msg_id
  mail( to:      "poxlovi@gmail.com",
        subject: "POX::#{@msg.subject}" )
end

def option_alert option

def option_alert option
  @option = option
  mail({
    :to => option.profile.email,
    :subject => "IshManager Option Alert :: #{option.ticker}",
  })
end

def send_context_email ctx_id

def send_context_email ctx_id
  @ctx         = Ctx.find ctx_id
  @renderer    = self.class.renderer ctx: @ctx
  rendered_str = @renderer.render_to_string("/wco_email/email_layouts/_#{@ctx.tmpl.layout}")
  rendered_subject = ERB.new( @ctx.subject ).result( @ctx.get_binding )
  if @ctx.lead.leadset.mangle_subject || @ctx.email_template.mangle_subject
    ## From: https://www.ascii-code.com/
    n1 = 33
    n2 = 64
    ch1 = ( rand(n2-n1)+n1 ).chr # ('UTF-8')
    ch2 = ( rand(n2-n1)+n1 ).chr
    if rendered_subject.last.ord >= n1 &&
       rendered_subject.last.ord <= n2
      space_idx = rendered_subject.rindex(/ /)
      rendered_subject = rendered_subject[0...space_idx]
    end
    rendered_subject = "#{rendered_subject} #{ ch1 }#{ ch2 }"
  end
  @ctx.update({
    rendered_str: rendered_str,
    sent_at:      Time.now,
    subject:      rendered_subject,
  })
  mail( from:    @ctx.from_email,
        to:      @ctx.to_email,
        cc:      @ctx.cc,
        ## 2024-07-30 I'm no longer sending these to google.
        # bcc:     "poxlovibb1@gmail.com",
        subject: rendered_subject,
        body:    rendered_str,
        content_type: "text/html" )
end

def shared_galleries profiles, gallery

def shared_galleries profiles, gallery
  return if profiles.count == 0
  @gallery        = gallery
  @domain         = Rails.application.config.action_mailer.default_url_options[:host]
  @galleries_path = IshManager::Engine.routes.url_helpers.galleries_path
  @gallery_path   = IshManager::Engine.routes.url_helpers.gallery_path(@gallery.slug)
  mail( :to => '314658@gmail.com',
        :bcc => profiles.map { |p| p.email },
        :subject => 'You got new shared galleries on pi manager' )
end

def stock_alert watch_id

def stock_alert watch_id
  @watch = Iro::OptionWatch.find watch_id
  mail({
    to: @watch.profile.email,
    subject: "Iro Watch Alert :: #{@watch.ticker} is #{@watch.direction} #{@watch.mark}."
  })
end

def test_email

def test_email
  mail( to: DEFAULT_RECIPIENT, subject: "Test email at #{Time.now}" )
end