require 'json'
require 'rest_client'

class ProviderForSearchStat < ActiveRecord::Base

  belongs_to :search_stat
  validates :search_stat_id, presence: true

  serialize :provs

  def self.envoi_user_searches
    server_url = "http://#{Server.find_by_name('Pixadmin').host}:#{Server.find_by_name('Pixadmin').api_port}/"
    cs_name = Server.find_by_is_self(true).name
    api_res = ''
    url_key = 'cs_request'
    safeurl = URI.encode("#{server_url}#{url_key}".strip)
    s_k = []
    Provider.all.each{|p| s_k[p.id]=p.string_key}
    ProviderForSearchStat.all.each do |ps|
      ssid = ps.search_stat_id
      ps.provs.each do |k,v|
        message = {'cs_demand' => 'prov_search_stat', 'cs_name' => cs_name, 'user_login' => s_k[k], 'var_id' => ssid, 'parameters' => {:result => v } }
        begin
          res = RestClient.post( safeurl, message.to_json, content_type: :json, accept: :json)
        rescue => e
          if res.blank?
            "Erreur Rest : #{e.inspect}"
          else
            retour = JSON.parse(res.body)
            api_res = retour['result']
          end
          newjob = CommunicationOutJob.new
          newjob.params = message
          newjob.result = api_res
          newjob.done = 0
          newjob.save
        end
      end
    end
    SearchStat.all.collect{ |s| s.destroy }
  end

end
