require 'pixways'

class ResultsPpController < ApplicationController

  skip_before_filter :login_required

  def create
    message = {}
    prov_hash = {}
    pp_params = params[:pp2_params]
    provs = params[:provs]
    ulog = params[:ulog]
    current_user = User.find_by_login(ulog)
    if current_user.nil?
      message["result"] = 0
    else
      with = {}
      authorized_providers = []
      authorized_providers = current_user.providers.collect{|e| e.id}
      if provs.blank?
        prov_hash = { :provider_id => authorized_providers }
      else
        prov_keys = []
        prov_ids = []
        prov_keys = provs.split(",")
        prov_keys.each do |psk|
          j = Provider.where(string_key: psk).first
          unless j.nil?
            prov_ids << j.id if authorized_providers.include?(j.id)
          end
        end
        message['result'] = 0 if prov_ids.blank?
        prov_hash = {:provider_id => prov_ids}
      end
      unless message["result"]
        cearch = {}
        sort = 'reception_date'
        sort = pp_params["sort"] if pp_params["sort"]
        sort = "by_#{sort}"

        cearch[:per_page] = 2
        cearch[:conditions] = Image.params_to_conditions(pp_params)
        cearch[:with] = Image.params_to_with(pp_params, 1)
        cearch[:with].merge!(prov_hash) unless prov_hash.blank?
        # cearch[:retry_stale] = true

        if pp_params['paris2024'] == '1'
          paris2024_search = t('paris2024_search').join('" | "')
          paris2024_search = '"' + paris2024_search + '"'
          if pp_params['translation'] == '1'
            translated_paris2024 = session[:locale]=='fr' ? t('paris2024_search',locale: :en).join('" | "') : t('paris2024_search',locale: :fr).join('" | "')
            translated_paris2024 = '"' + translated_paris2024 + '"'
          end
        end
        if pp_params['translation'] == '1' && pp_params['paris2024'] == '1'
          keywords_unfiltered = pp_params["key_words"].blank? ? "(#{paris2024_search}) | (#{translated_paris2024})" : "(#{pp_params[:key_words]}) and ((#{paris2024_search}) | (#{translated_paris2024}))"
        elsif pp_params['paris2024'] == '1'
          keywords_unfiltered = pp_params["key_words"].blank? ? paris2024_search : "(#{pp_params[:key_words]}) and (#{paris2024_search})"
        else
          keywords_unfiltered = pp_params["key_words"].blank? ? '' : pp_params[:key_words]
        end
        # keywords = pp_params["key_words"] ? Pixways::SearchesHelper.filter_keywords(pp_params["key_words"]) : ''
        keywords = Pixways::SearchesHelper.filter_keywords(keywords_unfiltered)
        cearch[:excerpts] = {:limit => 1024}
        medias = Image.instance_eval(sort).search(keywords, cearch)
        message["result"] = medias.total_entries
      end
    end
    json_message = message.to_json
    respond_to do |format|
      format.json { render json: json_message }
    end
  end

  def pictures_count
    message = {}
    if params[:prov].blank?
      message["result"] = Image.search_count with:{content_error: false}
    else
      prov_id = Provider.find_by(string_key: params[:prov]).id rescue nil
      message["result"] = prov_id.nil? ? 'provider not found' : (Image.search_count with: {provider_id: prov_id, content_error: false})
    end
    json_message = message.to_json
    respond_to do |format|
      format.json { render json: json_message }
    end
  end

end