class CsRequestController < ApplicationController
  require 'json'

  def create
    ApiCs::site = ApiCs::DEFAULT_SERVER
    demande = params[:cs_demand]
    retVal = "OK"
    case demande
    when "bnf_form"
      begin
        error = ApiCs.find(:all, :from => :bnf_mail, :params => { :parameters => params[:parameters],
                                                                  :login => params[:user_login] })
      rescue => e
        logger.info"**** rescue #{e.inspect}"
        retVal = e
      end
    when "showcase_form_mail"
      begin
        error = ApiCs.find(:all, :from => :showcase_form_mail, :params => { :parameters => params[:parameters] })
      rescue => e
        logger.info"**** rescue #{e.inspect}"
        retVal = e
      end
    when "feedback_mail"
      begin
        error = ApiCs.find(:all, :from => :feedback_mail, :params => { :cs_name => params[:cs_name],
                                                                       :login => params[:user_login],
                                                                       :text => params[:parameters][:text], #ToDo remove separate parameters variables when updated code deployed on all servers
                                                                       :file_path => params[:attached_file] ? params[:attached_file].path : '',
                                                                       :original_file_name => params[:parameters][:original_file_name],
                                                                       :file_url => params[:parameters][:file_url],
                                                                       :pixtech_name => params[:parameters][:pixtech_name],
                                                                       :parameters => params[:parameters]
        })
      rescue => e
        logger.info"**** rescue #{e.inspect}"
        retVal = e
      end
    when "lr_stat"
      begin
        stat = ApiCs.find(:all, :from => :stat_lr, :params => { :operation_id => 1,
                                                                :login => params[:user_login],
                                                                :ms_id => params[:var_id] })
      rescue => e
        logger.info"**** rescue #{e.inspect}"
        retVal = e
      end
    when "hr_stat"
      begin
        stat = ApiCs.find(:all, :from => :stat_hr, :params => { :operation_id => 2,
                                                                :login => params[:user_login],
                                                                :ms_id => params[:var_id].to_i })
      rescue => e
        logger.info"**** rescue #{e.inspect}"
        retVal = e
      end
    when "stat"
      begin
        stat = ApiCs.find(:all, :from => :stat, :params => { :operation_id => params[:parameters][:type_op],
                                                             :operation_date => params[:parameters][:date_op],
                                                             :login => params[:user_login],
                                                             :ms_id => params[:var_id].to_i })
      rescue => e
        logger.info"**** rescue #{e.inspect}"
        retVal = e
      end
    when "img_demand"
      begin
        error = ApiCs.find(:all, :from => :user_demand, :params => { :ms_id => params[:var_id],
                                                                     :login => params[:user_login],
                                                                     :operation => params[:parameters]['type_op'], #ToDo to remove when update user_demand code deployed on all servers
                                                                     :parameters => params[:parameters]
        })
      rescue => e
        logger.info"**** rescue #{e.inspect}"
        retVal = e
      end
    when "user_request"
      begin
        error = ApiCs.find(:all, :from => :cs_request, :params => { :text => params[:parameters][:user_text],
                                                                    :login => params[:user_login],
                                                                    :serial => params[:parameters][:serial],
                                                                    :stringkey => params[:parameters][:string_key],
                                                                    :file_path => params[:attached_file] ? params[:attached_file].path : '',
                                                                    :original_file_name => params[:parameters][:original_file_name],
                                                                    :file_url => params[:parameters][:file_url] })
      rescue => e
        logger.info"**** rescue #{e.inspect}"
        retVal = e
      end
    when "prov_search_stat"
      begin
        ret_stat = ApiCs.find(:all, :from => :pfs_create, :params => { :cs_name => params[:cs_name],
                                                                       :search_stat_id => params[:var_id],
                                                                       :string_key => params[:user_login],
                                                                       :result => params[:parameters][:result] })
      rescue => e
        logger.info"**** rescue #{e.inspect}"
        retVal = e
      end
    when "image_field"
      begin
        ret_stat = ApiCs.find(:all, :from => :sif_create, :params => { :cs_name => params[:cs_name],
                                                                       :search_stat_id => params[:var_id],
                                                                       :field_name => params[:user_login],
                                                                       :field_content => params[:parameters][:result] })
      rescue => e
        logger.info"**** rescue #{e.inspect}"
        retVal = e
      end
    when "search_stat"
      begin
        ApiCs::SEARCH_STATS_SERVERS.each do |site|
          ApiCs::site = site
          ret_stat = ApiCs.find(:all, :from => :sst_create, :params => { :cs_name => params[:cs_name], :login => params[:user_login],
                                                                         :parameters => params[:parameters] })
        end
        ApiCs::site = ApiCs::DEFAULT_SERVER
      rescue => e
        logger.info"**** rescue #{e.inspect}"
        retVal = e
      end
    end
    if retVal != "OK"
      logger.info "*** #{retVal}"
      remJob = CommunicationInJob.new
      remJob.job_source = params[:cs_name]
      remJob.params = params
      remJob.typop = demande
      remJob.done = 0
      remJob.result = retVal
      remJob.save
    end
    message = {}
    message["result"] = retVal
    json_message = message.to_json
    respond_to do |format|
      format.json { render json: json_message }
    end

  end

end
