class IndexationController < ApplicationController

  layout 'indexation'

  def index
    @close = false
    @ids = ''
    @imgs = ''
    if params[:tri]
      @tri = params[:tri]
      @errtyp = params[:errtyp] ? params[:errtyp] : 'cl0'
      ids = []
      params[:del_id].each do |i|
        tab = i.split('@@')
        img_id = Image.exists?(ms_image_id: tab[1].to_i) ? Image.find_by(ms_image_id: tab[1].to_i).id : ''
        ids << img_id unless img_id.blank?
      end
    else
      params[:ids].uniq! unless params[:ids].blank?
      ids = params[:ids]
    end
    if ids.blank?
      @alert = I18n.t(:indexing_no_picture)
      @close = true
      render 'update', layout: 'simple'
    else
      ids.each{ |i| @ids += "#{i.to_s}&" }
      @ids.chop!
      my_provs = []
      session[:provhd].each_index{|i| my_provs << i if session[:provhd][i] == 1}
      my_images = []
      ids.collect do |i|
        prov_id = Image.find(i).provider_id rescue nil
        unless prov_id.nil?
          my_images << i if my_provs.include?(prov_id)
        end
      end
      my_images.each{ |i| @imgs += "#{i.to_s}&" }
      @imgs.chop!
      @images = my_images.collect{ |i| Image.find(i) }
      if my_images.count < 1
        @alert = I18n.t(:indexing_no_picture)
        @close = true
        render 'update', layout: 'simple'
      elsif my_images.count == 1
        @image = Image.find(ids[0].to_i)
      else
        @image = Image.new
      end
    end
  end

  def update
    @close = false
    @alert = I18n.t('indexation_updated')
    @alert = I18n.t('indexation_pixtech_updated', serveur: 'PixPalace') if params['pixtech_pp']
    @alert = I18n.t('indexation_pixtech_updated', serveur: 'PixPalace2') if params['pixtech_pp2']
    ids = []
    ids = params[:imgs].split('&')
    ids.map!{|i| i.to_i}
    if params[:csv_file].blank?
      @alert = I18n.t('no_indexation')
    else
      tab = params[:csv_file].partition("\r\n")
      tab[2].squish!
      config_db_ms = Rails.configuration.database_configuration['ms_db']
      client = Mysql2::Client.new(host: config_db_ms['host'], database: config_db_ms['database'], username: config_db_ms['username'], password: config_db_ms['password'])
      ids.each do |i|
        img = Image.find(i)
        if params['pixtech_pp']
          csv = "#{tab[0]},3:238\r\n#{tab[2]},\"PP\""
          img.update(flow: 1)
        elsif params['pixtech_pp2']
          csv = "#{tab[0]},3:238\r\n#{tab[2]},\"PP2\""
          img.update(flow: 2)
        else
          csv = "#{tab[0]}\r\n#{tab[2]}"
        end
        client.query("insert into MetadataFromPA set mdfpa_pic_id=#{img.ms_image_id}, mdfpa_csv='#{Mysql2::Client.escape(csv)}', mdfpa_created_at=now()")
        # @alert = I18n.t('indexation_failed') if #manage error
      end
      client.close
    end
    render layout: 'simple'
  end

  private

  def permitted_params
    params.require(:image).permit(:date_created, :headline, :description,
                                  :country, :city, :source, :creator, :rights,
                                  :credit, :subject, :instructions, :category, :supplemental_category, :state,
                                  :transmission_reference)
  end

end