# frozen_string_literal: true

class CustomWizard::StepSerializer < ::ApplicationSerializer
  attributes :id,
             :index,
             :next,
             :previous,
             :description,
             :title,
             :banner,
             :permitted,
             :permitted_message,
             :final

  has_many :fields, serializer: ::CustomWizard::FieldSerializer, embed: :objects

  def id
    object.id
  end

  def index
    object.index
  end

  def next
    object.next.id if object.next.present?
  end

  def include_next?
    object.next.present?
  end

  def previous
    object.previous.id if object.previous.present?
  end

  def include_previous?
    object.previous.present?
  end

  def title
    I18n.t("#{i18n_key}.title", default: object.title, base_url: Discourse.base_url)
  end

  def include_title?
    title.present?
  end

  def description
    I18n.t("#{i18n_key}.description", default: object.description, base_url: Discourse.base_url)
  end

  def include_description?
    description.present?
  end

  def banner
    object.banner
  end

  def include_banner?
    object.banner.present?
  end

  def permitted
    object.permitted
  end

  def permitted_message
    object.permitted_message
  end

  def final
    object.final?
  end

  protected

  def i18n_key
    @i18n_key ||= "#{object.wizard.id}.#{object.id}".underscore
  end
end
