# frozen_string_literal: true

# HighlightThemes Controller
class HighlightThemesController < ApplicationController
  def create_theme
    highlight_theme = HighlightTheme.new(
      theme: params["themeName"],
      respondent_category_id: params["respondentCategoryId"]
    )

    if highlight_theme.save!
      render json: {
        status: "ok",
        highlight_theme:
      }
    else
      render json: { status: "error" }
    end
  end

  def edit_theme
    highlight_theme = HighlightTheme.find(params["id"])
    highlight_theme.theme = params["themeName"]

    if highlight_theme.save!
      render json: {
        status: "ok",
        updated_highlight_theme: highlight_theme
      }
    else
      render json: { status: "error" }
    end
  end

  def delete_theme
    highlight_theme = HighlightTheme.find(params["id"])
    highlight_theme.destroy!
    render json: { status: "ok" }
  end

  def update_order
    respondent_category = RespondentCategory.find(params[:respondent_category_id])
    return render json: { status: "error" } if respondent_category.nil?

    highlight_theme = respondent_category.highlight_themes.find(params[:id])
    return render json: { status: "error" } if highlight_theme.nil?

    # Get new position from params
    new_position = params[:new_position].to_i

    # Update the position
    highlight_theme.insert_at(new_position)

    # Return updated themes
    render json: {
      status: "ok",
      updated_themes: respondent_category.highlight_themes.order(:position)
    }
  end

  def get_themes # rubocop:disable Naming/AccessorMethodName
    respondent_category = RespondentCategory.find(params[:respondent_category_id])
    return render json: { status: "error" } if respondent_category.nil?

    render json: {
      status: "ok",
      themes: respondent_category.highlight_themes.order(:position)
    }
  end
end
