# frozen_string_literal: true

class CustomWizard::WizardSerializer < CustomWizard::BasicWizardSerializer

  attributes :start,
             :background,
             :submission_last_updated_at,
             :theme_id,
             :completed,
             :required,
             :permitted,
             :uncategorized_category_id,
             :categories,
             :subscribed,
             :resume_on_revisit

  has_many :steps, serializer: ::CustomWizard::StepSerializer, embed: :objects
  has_one :user, serializer: ::BasicUserSerializer, embed: :objects
  has_many :groups, serializer: ::BasicGroupSerializer, embed: :objects

  def completed
    object.completed?
  end

  def include_completed?
    object.completed? &&
    (!object.respond_to?(:multiple_submissions) || !object.multiple_submissions) &&
    !scope.is_admin?
  end

  def permitted
    object.permitted?
  end

  def start
    object.start
  end

  def include_start?
    include_steps? && object.start.present?
  end

  def submission_last_updated_at
    object.current_submission.updated_at
  end

  def include_steps?
    !include_completed?
  end

  def include_categories?
    object.needs_categories
  end

  def include_groups?
    object.needs_groups
  end

  def uncategorized_category_id
    SiteSetting.uncategorized_category_id
  end

  def include_uncategorized_category_id?
    object.needs_categories
  end

  def categories
    object.categories.map { |c| c.to_h }
  end

  def subscribed
    CustomWizard::Subscription.subscribed?
  end
end
