64 lines
1.4 KiB
Ruby
64 lines
1.4 KiB
Ruby
class Champs::COJOChamp < Champ
|
||
store_accessor :value_json, :accreditation_number, :accreditation_birthdate
|
||
store_accessor :data, :accreditation_success, :accreditation_first_name, :accreditation_last_name
|
||
|
||
after_validation :update_external_id
|
||
|
||
def accreditation_birthdate
|
||
Date.parse(super)
|
||
rescue ArgumentError, TypeError
|
||
nil
|
||
end
|
||
|
||
def accreditation_success?
|
||
accreditation_success == true
|
||
end
|
||
|
||
def accreditation_error?
|
||
accreditation_success == false
|
||
end
|
||
|
||
def blank?
|
||
accreditation_success.nil?
|
||
end
|
||
|
||
def fetch_external_data?
|
||
true
|
||
end
|
||
|
||
def poll_external_data?
|
||
true
|
||
end
|
||
|
||
def fetch_external_data
|
||
COJOService.new.(accreditation_number:, accreditation_birthdate:)
|
||
end
|
||
|
||
def to_s
|
||
"#{accreditation_number} – #{accreditation_birthdate}"
|
||
end
|
||
|
||
def accreditation_number_input_id
|
||
"#{input_id}-accreditation_number"
|
||
end
|
||
|
||
def accreditation_birthdate_input_id
|
||
"#{input_id}-accreditation_birthdate"
|
||
end
|
||
|
||
def focusable_input_id
|
||
accreditation_number_input_id
|
||
end
|
||
|
||
private
|
||
|
||
def update_external_id
|
||
if accreditation_number_changed? || accreditation_birthdate_changed?
|
||
if accreditation_number.present? && accreditation_birthdate.present? && /\A\d+\z/.match?(accreditation_number)
|
||
self.external_id = { accreditation_number:, accreditation_birthdate: }.to_json
|
||
else
|
||
self.external_id = nil
|
||
end
|
||
end
|
||
end
|
||
end
|