class City < ApplicationRecord
  extend FriendlyId
  friendly_id :name, use: :slugged
  belongs_to :country

  has_many :weather_arts, dependent: :destroy

  validates :name, presence: true
  validates :latitude, presence: true
  validates :longitude, presence: true

  delegate :region, to: :country

  def to_s
    name
  end

  def localized_name
    I18n.t("cities.#{name.parameterize.underscore}")
  end

  def full_name
    "#{name}, #{country}"
  end

  def should_generate_new_friendly_id?
    name_changed? || super
  end

  def self.ransackable_associations(auth_object = nil)
    [ "weather_arts" ]
  end

  def self.ransackable_attributes(auth_object = nil)
    [ "active", "country", "created_at", "id", "id_value", "last_image_generation", "last_weather_fetch", "latitude", "longitude", "name", "priority", "region", "slug", "timezone", "updated_at" ]
  end

  def latest_weather_art
    weather_arts.order(weather_date: :desc).first
  end
end
