class CongressForms::CwcForm

Attributes

office_code[RW]

Public Class Methods

new(office_code) click to toggle source
# File lib/congress_forms/cwc_form.rb, line 5
def initialize(office_code)
  self.office_code = office_code
end

Public Instance Methods

fill(values, campaign_tag: nil, organization: nil, browser: nil, validate_only: false) click to toggle source
# File lib/congress_forms/cwc_form.rb, line 17
def fill(values, campaign_tag: nil, organization: nil, browser: nil, validate_only: false)
  params = {
    campaign_id: campaign_tag || SecureRandom.hex(16),

    recipient: { member_office: office_code },

    constituent: {
      prefix:             values["$NAME_PREFIX"],
      first_name:         values["$NAME_FIRST"],
      last_name:          values["$NAME_LAST"],
      address:            Array(values["$ADDRESS_STREET"]),
      city:               values["$ADDRESS_CITY"],
      state_abbreviation: values["$ADDRESS_STATE_POSTAL_ABBREV"],
      zip:                values["$ADDRESS_ZIP5"],
      email:              values["$EMAIL"]
    },

    message: {
      subject:                    values["$SUBJECT"],
      library_of_congress_topics: Array(values["$TOPIC"])
    }
  }

  if organization
    params[:organization] = organization
  end

  if values["$STATEMENT"]
    params[:message][:organization_statement] = values["$STATEMENT"]
  end

  if values["$MESSAGE"] && values["$MESSAGE"] != values["$STATEMENT"]
    params[:message][:constituent_message] = values["$MESSAGE"]
  end

  cwc_client = Cwc::Client.new
  message = cwc_client.create_message(params)

  if validate_only
    cwc_client.validate(message)
  else
    cwc_client.deliver(message)
  end
end
required_params() click to toggle source
# File lib/congress_forms/cwc_form.rb, line 13
def required_params
  Cwc::RequiredJson.fetch("required_actions").map(&:dup)
end
updated_at() click to toggle source
# File lib/congress_forms/cwc_form.rb, line 9
def updated_at
  Time.at(0)
end