Sha256: 9144f7469edc2fdae5fdb8e06ae08e1e8e48e4b1cbc5ac593edc13cb0f4559a5

Contents?: true

Size: 1.54 KB

Versions: 4

Compression:

Stored size: 1.54 KB

Contents

module Enjoy::Mappable
  extend ActiveSupport::Concern

  included do

    if Enjoy.mongoid?
      include Geocoder::Model::Mongoid
      field :coordinates, type: Array
      field :address, type: String

      field :map_address, type: String
      field :map_hint, type: String

      field :lat, type: Float
      field :lon, type: Float
    end

    geocoded_by :geo_address
    after_validation :do_geocode
  end

  if Enjoy.active_record?
    def coordinates
      if latitude.nil? || longitude.nil?
        nil
      else
        [longitude, latitude]
      end
    end
  end

  def do_geocode
    if geo_address.blank?
      if Enjoy.mongoid?
        self.coordinates = nil
      else
        self.latitude = nil
        self.longitude = nil
      end
    else
      if (lat.nil? || lon.nil?) && (new_record? || address_changed? || coordinates.nil? || map_address_changed?)
        geocode
      end
    end
  end

  def get_lat
    if lat.blank?
      if coordinates.nil?
        nil
      else
        coordinates[1]
      end
    else
      lat
    end
  end
  def get_lon
    if lon.blank?
      if coordinates.nil?
        nil
      else
        coordinates[0]
      end
    else
      lon
    end
  end

  def has_map?
    (!lat.blank? && !lon.blank?) || !coordinates.nil?
  end

  def to_map
    {
      id: id.to_s,
      hint: map_hint,
      addr: address,
      lat: get_lat,
      lon: get_lon,
    }
  end

  def geo_address
    if map_address.blank?
      address
    else
      map_address
    end
  end

  def self.admin
    Enjoy.map_config
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
enjoy_cms-0.2.0.2 app/models/concerns/enjoy/mappable.rb
enjoy_cms-0.2.0.1.beta app/models/concerns/enjoy/mappable.rb
enjoy_cms-0.2.0.beta app/models/concerns/enjoy/mappable.rb
enjoy_cms-0.1.0.beta1 app/models/concerns/enjoy/mappable.rb