sutty/app/models/maintenance.rb
2020-09-11 14:26:19 -03:00

55 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