54 lines
1.4 KiB
Ruby
54 lines
1.4 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
# En mantenimiento
|
|
class Maintenance < ApplicationRecord
|
|
extend Mobility
|
|
|
|
translates :message, type: :string, locale_accessors: true
|
|
|
|
# Renderiza el mensaje una sola vez
|
|
#
|
|
# @return [String]
|
|
def to_html
|
|
@renderized_message ||= {}
|
|
@renderized_message[message.hash.to_s] ||= CommonMarker.render_doc(message, %i[FOOTNOTES SMART], %i[table strikethrough autolink]).to_html.html_safe
|
|
end
|
|
|
|
# Como no sabemos en qué zona horaria están les usuaries, generamos la
|
|
# URL para convertir el tiempo estimado a la zona local, visitando
|
|
# otro servicio.
|
|
#
|
|
# @return [String]
|
|
def estimated_from_time_is
|
|
@estimated_from_time_is ||= {}
|
|
@estimated_from_time_is[cache_key_for_attr(estimated_from)] ||= time_is(estimated_from)
|
|
end
|
|
|
|
# @see estimated_from_time_is
|
|
# @return [String]
|
|
def estimated_to_time_is
|
|
@estimated_to_time_is ||= {}
|
|
@estimated_to_time_is[cache_key_for_attr(estimated_to)] ||= time_is(estimated_to)
|
|
end
|
|
|
|
# @see estimated_from_time_is
|
|
# @return [String]
|
|
def updated_at_time_is
|
|
@updated_at_time_is ||= {}
|
|
@updated_at_time_is[cache_key_for_attr(updated_at)] ||= time_is(updated_at)
|
|
end
|
|
|
|
private
|
|
|
|
def cache_key_for_attr(attr)
|
|
attr.hash.to_s + I18n.locale.to_s
|
|
end
|
|
|
|
# Devuelve la URL
|
|
#
|
|
# @param [Time]
|
|
# @return [String]
|
|
def time_is(time)
|
|
"https://time.is/#{I18n.locale}/compare/#{time.utc.strftime('%H%M_%d_%B_%Y_in_%Z')}"
|
|
end
|
|
end
|