class SettingsController < ApplicationController

	skip_before_action :login_required, only: [:setting_pp]

  layout :false
  
  def edit
    @setting = current_user.setting
  end
  
  def update
    params[:setting][:display_params]['background_color'] = "##{("%02x" % params[:setting][:display_params]['background_color'])*3}"
    params[:setting][:display_params]['font_color'] = "##{("%02x" % params[:setting][:display_params]['font_color'])*3}"
    params[:setting][:display_params]['previsualisation'] = params[:setting][:display_params_previsualisation]
    params[:setting][:display_params]['display_text'] = params[:setting][:display_params_display_text]
    if current_user.setting.update_attributes(permitted_params)
      usetting = Setting.find_by_user_id(current_user.id)
      session[:locale] = usetting[:language]
      Time.zone = usetting[:time_zone] unless Time.zone == usetting[:time_zone]
      vars = {}
      vars["login"] = current_user.login
      vars["language"] = usetting[:language]
      vars["display_params"] = usetting[:display_params]
      vars["border_color_provider"] = usetting[:border_color_provider]
      vars["time_zone"] = usetting[:time_zone]
      vars["default_per_page"] = usetting[:default_per_page]
      vars["default_since"] = usetting[:default_since]
      vars["default_sort"] = usetting[:default_sort]
      vars["default_media"] = usetting[:default_media]
      vars["reload_pref"] = usetting[:reload_pref]
      vars["pagination"] = usetting[:pagination]
      vars["under_my_thumb"] = usetting[:under_my_thumb]
      json_vars = vars.to_json
      url_key = 'setting_pp'
      #secret_key = 'secret'

      #settings replication to PP2 server
      unless Server.itself?(PP2_SERVER_NAME)
      endpoint_url = PP2_URL
      begin
        res = RestClient.post( "#{endpoint_url}/#{url_key}", json_vars, content_type: :json, accept: :json)
      rescue => e
        logger.info"**** rescue #{e.inspect}"
        pp_res = "Erreur"
      end
      end

    else
      redirect_to action: "edit"
    end

  end

  def setting_pp
	  logger.info "params = #{params.inspect}"
	  message = {}
	  message["retour"] = "ok"
		u = User.find_by_login(params[:login])
	  if u.nil?
		  message["retour"] = "Erreur : login inconnu"
	  else
		  Setting.find_by_user_id(u.id).update_attributes(language: params[:language], display_params: params[:display_params],
		                                                  border_color_provider: params[:border_color_provider], time_zone: params[:time_zone],
		                                                  default_per_page: params[:default_per_page], default_since: params[:default_since],
		                                                  default_sort: params[:default_sort], default_media: params[:default_media],
		                                                  reload_pref: params[:reload_pref], pagination: params[:pagination], under_my_thumb: params[:under_my_thumb])
	  end
	  json_message = message.to_json
	  respond_to do |format|
		  format.json { render json: json_message }
	  end
  end

  private
  
  def permitted_params
    params.require(:setting).permit(:language, :display_params_display_text, :display_params_previsualisation, :default_sort, :reload_pref, :default_media,
    :pagination, :under_my_thumb, :time_zone, display_params: [:background_color, :font_color, :previsualisation, :display_text])
  end
end
