Sha256: 5c7d1b2dd576786e178998d78089bb772be38a7b84fd474e68dc0aac9816d8ed

Contents?: true

Size: 781 Bytes

Versions: 17

Compression:

Stored size: 781 Bytes

Contents

# frozen_string_literal: true

# This validator takes care of ensuring the validated content is
# an existing address and computes its coordinates.
class GeocodingValidator < ActiveModel::EachValidator
  def validate_each(record, attribute, value)
    if Decidim::Map.available?(:geocoding) && record.component.present?
      geocoder = geocoder_for(record.component.organization)
      coordinates = geocoder.coordinates(value)

      if coordinates.present?
        record.latitude = coordinates.first
        record.longitude = coordinates.last
      else
        record.errors.add(attribute, :invalid)
      end
    else
      record.errors.add(attribute, :invalid)
    end
  end

  private

  def geocoder_for(organization)
    Decidim::Map.geocoding(organization:)
  end
end

Version data entries

17 entries across 17 versions & 1 rubygems

Version Path
decidim-core-0.30.0.rc2 app/validators/geocoding_validator.rb
decidim-core-0.30.0.rc1 app/validators/geocoding_validator.rb
decidim-core-0.29.2 app/validators/geocoding_validator.rb
decidim-core-0.28.5 app/validators/geocoding_validator.rb
decidim-core-0.29.1 app/validators/geocoding_validator.rb
decidim-core-0.28.4 app/validators/geocoding_validator.rb
decidim-core-0.29.0 app/validators/geocoding_validator.rb
decidim-core-0.28.3 app/validators/geocoding_validator.rb
decidim-core-0.29.0.rc4 app/validators/geocoding_validator.rb
decidim-core-0.29.0.rc3 app/validators/geocoding_validator.rb
decidim-core-0.29.0.rc2 app/validators/geocoding_validator.rb
decidim-core-0.29.0.rc1 app/validators/geocoding_validator.rb
decidim-core-0.28.2 app/validators/geocoding_validator.rb
decidim-core-0.28.1 app/validators/geocoding_validator.rb
decidim-core-0.28.0 app/validators/geocoding_validator.rb
decidim-core-0.28.0.rc5 app/validators/geocoding_validator.rb
decidim-core-0.28.0.rc4 app/validators/geocoding_validator.rb