require 'pixways'

class PicturesControlController < ApplicationController

  layout "adm_agency"

  before_action :load_cached_search_params

  def index

    @tri = params[:tri] ? params[:tri].to_i : 0
    @errtyp = params[:errtyp] ? params[:errtyp] : 'cl0'
    req_tri = ["order by mtpa_created_at DESC", "order by mtpa_param4"]
    l_providers = []
    @providers = @current_params[:group_id] ? SearchProviderGroupName.find(@current_params[:group_id]).providers : current_user.providers

    tpg = Authorization.where(permission_label_id: PermissionLabel.find_by(label: 'HD').id, title_provider_group_id: TitleProviderGroup.where(title_provider_group_name_id: Title.find(current_user.title_id).title_provider_group_name_id ) )
    tpg.each do |tpg_id|
      l_prov = Provider.find(TitleProviderGroup.find(tpg_id.title_provider_group_id).provider_id)
      unless l_prov.nil?
        l_providers << l_prov.id unless (Server.itself?(VINGTMINUTES_SERVER_NAME) && (!(l_prov.string_key.start_with?('20min_')) || l_prov.string_key=='20min_Afp') && current_user.is_provider_admin?)
      end
    end
    @pw_providers = Provider.where(id: l_providers.each{|x| x}, provider_type_id: 1, local: false).order(:name)
    @local_providers = Provider.where(id: l_providers.each{|x| x}, provider_type_id: 1, local: true).order(:name)
    @photographer_providers = Provider.where(id: l_providers.each{|x| x}, provider_type_id: 2).order(:pixtech_id, :pp_string_key, :name)

    @err_id = []
    @err_code = {}
    @err_prov = {}
    @err_date = {}
    @err_file = {}
    @err_vig = {}
    @err_meta_missing = {}
    @err_im_id = {}
    @taberr = {"err1"=>0, "err2"=>0, "err3"=>0, "err4"=>0, "err5"=>0, "err6"=>0, "err7"=>0, "err8"=>0, "err9"=>0, "err10"=>0, "err11"=>0, "err12"=>0, "err13"=>0, "err14"=>0, "err15"=>0, "err16"=>0, "err17"=>0, "err18"=>0, "err19"=>0, "err20"=>0, "err21"=>0}
    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"])

    liste_prov = "( "
    if @current_params[:providers].blank?
      unless current_user.is_superadmin?
        @pw_providers.collect{|p| liste_prov << "'#{p.string_key}',"}
        @local_providers.collect{|p| liste_prov << "'#{p.string_key}',"} unless @local_providers.blank?
        @photographer_providers.collect{|p| liste_prov << "'#{p.string_key}',"} unless @photographer_providers.blank?
      end
    else
      @current_params[:providers].keys.collect{|p| liste_prov << "'#{Provider.find(p).string_key}',"}
    end
    liste_prov.chop! << ")"

    unless liste_prov.gsub(/^\(+|\)+$/, '').blank?
      client.query("SELECT distinct mtpa_id, mtpa_param3, mtpa_param1, mtpa_created_at, mtpa_param2, mtpa_param4, mtpa_param6 FROM MessageToPA
                    WHERE mtpa_done = 0 AND mtpa_param1 in #{liste_prov} AND mtpa_message='1' #{req_tri[@tri]}").each do |row|
        id = row["mtpa_id"]
        @err_id << id
        @err_prov[id] = row["mtpa_param1"]
        @err_im_id[id] = row["mtpa_param2"].to_i
        @err_code[id] = row["mtpa_param3"].to_i
        @err_file[id] = row["mtpa_param4"]
        #@err_date[id] = row["mtpa_created_at"]
        dec = row["mtpa_created_at"].formatted_offset.to_i
        @err_date[id] = I18n.l(row["mtpa_created_at"]+dec.hour)
        img_thumb = Image.find_by(ms_image_id: @err_im_id[id]).thumb_location rescue nil unless @err_im_id[id]==-1
        @err_vig[id] = img_thumb.nil? ? "" : img_thumb
        if @err_code[id] == 6 || @err_code[id] == 18
          @err_meta_missing[id] = row["mtpa_param6"].to_i
        end
        @taberr["err#{@err_code[id]}"] += 1 unless @err_code[id].nil? || @err_code[id] < 0
      end

      client.close
    end

    render 'adm_agency/pictures_control'

  end

  def edit
    @tri = params[:tri]
    @errtyp = params[:errtyp] ? params[:errtyp] : 'cl0'
    if params[:record_id]
      remove_ms_control(params[:record_id].to_i)
    else
      params[:del_id].each do |id|
        tab = id.split('@@')
        remove_ms_control(tab[0].to_i)
      end
    end
    redirect_to action: :index, tri: params[:tri], errtyp: params[:errtyp]
  end

  private

  def remove_ms_control(id)
    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"])
    client.query("update MessageToPA set mtpa_done=1 where mtpa_id = #{id}")
    client.close
  end
end

