mirror of
https://github.com/internetee/registry.git
synced 2025-05-17 17:59:47 +02:00
68 lines
1.9 KiB
Ruby
68 lines
1.9 KiB
Ruby
class ContactDisclosure < ActiveRecord::Base
|
|
belongs_to :contact
|
|
|
|
def attributes_with_flag
|
|
attrs, policy = { name: name, email: email, phone: phone, address: address, org_name: org_name, fax: fax }, {}
|
|
policy[0] = attrs.map { |k, v| k if v == false }.compact
|
|
policy[1] = attrs.map { |k, v| k if v }.compact
|
|
policy
|
|
end
|
|
|
|
def as_hash
|
|
{
|
|
name: name,
|
|
org_name: org_name,
|
|
phone: phone,
|
|
fax: fax,
|
|
email: email,
|
|
address: address
|
|
}
|
|
end
|
|
|
|
# value is true or false depending on disclosure flag
|
|
# rules are the contents of disclose element
|
|
class << self
|
|
def default_values
|
|
@dc = {
|
|
name: Setting.disclosure_name,
|
|
org_name: Setting.disclosure_org_name,
|
|
phone: Setting.disclosure_phone,
|
|
fax: Setting.disclosure_fax,
|
|
email: Setting.disclosure_email,
|
|
address: Setting.disclosure_address
|
|
}
|
|
@dc
|
|
end
|
|
|
|
def extract_attributes(parsed_frame)
|
|
disclosure_hash = {}
|
|
rules = parsed_frame.css('disclose').first
|
|
return disclosure_hash unless rules.present?
|
|
value = rules.attributes['flag'].value
|
|
disclosure_hash = parse_disclose_xml(rules)
|
|
|
|
disclosure_hash.each do |k, _v| # provides a correct flag to disclosure elements
|
|
disclosure_hash[k] = value
|
|
end
|
|
disclosure_hash
|
|
end
|
|
|
|
private
|
|
|
|
# Returns list of disclosure elements present.
|
|
def parse_disclose_xml(rules)
|
|
{ name: parse_element_attributes_for('name', rules.children),
|
|
org_name: parse_element_attributes_for('org_name', rules.children),
|
|
address: parse_element_attributes_for('addr', rules.children),
|
|
phone: rules.css('voice').present?,
|
|
email: rules.css('email').present?,
|
|
fax: rules.css('fax').present?
|
|
}.delete_if { |_k, v| v.nil? || v == false }
|
|
end
|
|
|
|
def parse_element_attributes_for(el, rules)
|
|
return true if rules.css(el).present?
|
|
nil
|
|
end
|
|
end
|
|
end
|