class Admin::SiteCustomizationsController < Admin::AdminController

  before_filter :enable_customization

  def index
    @site_customizations = SiteCustomization.all

    respond_to do |format|
      format.json { render json: @site_customizations }
    end
  end

  def create
    @site_customization = SiteCustomization.new(site_customization_params)
    @site_customization.user_id = current_user.id

    respond_to do |format|
      if @site_customization.save
        log_site_customization_change(nil, site_customization_params)
        format.json { render json: @site_customization, status: :created}
      else
        format.json { render json: @site_customization.errors, status: :unprocessable_entity }
      end
    end
  end

  def update
    @site_customization = SiteCustomization.find(params[:id])
    log_record = log_site_customization_change(@site_customization, site_customization_params)

    respond_to do |format|
      if @site_customization.update_attributes(site_customization_params)
        format.json { head :no_content }
      else
        log_record.destroy if log_record
        format.json { render json: @site_customization.errors, status: :unprocessable_entity }
      end
    end
  end

  def destroy
    @site_customization = SiteCustomization.find(params[:id])
    StaffActionLogger.new(current_user).log_site_customization_destroy(@site_customization)
    @site_customization.destroy

    respond_to do |format|
      format.json { head :no_content }
    end
  end

  private

    def site_customization_params
      params.require(:site_customization).permit(:name, :stylesheet, :header, :mobile_stylesheet, :mobile_header, :position, :enabled, :key, :override_default_style, :stylesheet_baked)
    end

    def log_site_customization_change(old_record, new_params)
      StaffActionLogger.new(current_user).log_site_customization_change(old_record, new_params)
    end

    def enable_customization
      session[:disable_customization] = false
    end

end