mirror of
https://github.com/System-End/theseus.git
synced 2026-04-19 19:55:10 +00:00
39 lines
1 KiB
Ruby
39 lines
1 KiB
Ruby
module AddressParameterParsing
|
|
extend ActiveSupport::Concern
|
|
|
|
private
|
|
|
|
def parse_address_from_params(address_params)
|
|
return nil if address_params.blank?
|
|
|
|
|
|
# Normalize country name using FrickinCountryNames
|
|
country = FrickinCountryNames.find_country(address_params[:country])
|
|
if country.nil?
|
|
render json: { error: "couldn't figure out country name #{address_params[:country]}" }, status: :unprocessable_entity
|
|
return nil
|
|
end
|
|
|
|
# Create address with normalized country
|
|
normalized_address_params = address_params.merge(country: country.alpha2)
|
|
# Normalize state name to abbreviation
|
|
normalized_address_params[:state] = FrickinCountryNames.normalize_state(country, normalized_address_params[:state])
|
|
|
|
addy = Address.new(normalized_address_params)
|
|
addy.validate!
|
|
addy
|
|
end
|
|
|
|
def permit_address_params
|
|
params.require(:address).permit(
|
|
:first_name,
|
|
:last_name,
|
|
:line_1,
|
|
:line_2,
|
|
:city,
|
|
:state,
|
|
:postal_code,
|
|
:country
|
|
)
|
|
end
|
|
end
|