class Admin::SitesController < Admin::ApplicationController
  before_action :set_site, only: %i[update]

  # GET /admin/sites/:section
  def section
    @active_menu = "settings"
    @section = params[:section]
    @site = Site.where(selected: true).first_or_create
    @fields = Site.fields(section: @section)
  end

  # PATCH/PUT /admin/sites/1 or /admin/sites/1.json
  def update
    respond_to do |format|
      if @site.update(site_params)
        notice_message = t("common.operation_success")
        format.html { redirect_to admin_settings_path(section: params[:section]), notice: notice_message }
        format.turbo_stream do
          flash.now[:notice] = notice_message
        end
      else
        format.html { render :edit, status: :unprocessable_entity }
        format.json { render json: @site.errors, status: :unprocessable_entity }
      end
    end
  end

  private

  # Use callbacks to share common setup or constraints between actions.
  def set_site
    @site = Site.find(params[:id])
  end

  # Only allow a list of trusted parameters through.
  def site_params
    # params.require(:site).permit(:name, :selected, :actived, :notice, :preferences)
    @fields = Site.fields(section: params[:section])
    fields = @fields.collect { |field| field[:key] }
    params.require(:site).permit(fields)
  end
end
