class ApplicationController < ActionController::Base
  # Prevent CSRF attacks by raising an exception.
  # For APIs, you may want to use :null_session instead.
  protect_from_forgery with: :exception


  before_filter :set_image_var
  before_filter :set_order
  
  before_filter :set_locale

  def set_locale
    # if params[:locale] is nil then I18n.default_locale will be used
    #I18n.locale = params[:locale]#"fr" #
    
    I18n.locale = params[:locale] || "fr"
    
    @lang = LangSite.find_by_slug I18n.locale.to_s
  end
  
  def default_url_options(options={})
    { :locale => I18n.locale }  #
  end

  def set_image_var
    @page_images_credits = []
  end

  def auth_inscrit
    if !current_inscrit
      redirect_to new_inscrits_auth_path
    end
  end

  def payplug_init_payement(options)

    api_key = CONFIG_PAYPLUG['api_key']

    host = "http://#{HOSTNAME}"

    @data = {
    :amount => (options[:amount]*100),
    :currency => "EUR",
    :customer =>{
      :email => options[:email],
      :first_name => options[:first_name],
      :last_name =>  options[:last_name]
    },
    :hosted_payment =>{
      :return_url => options[:return_url],
      :cancel_url => options[:cancel_url]
    },
    :notification_url =>  options[:notification_url],
    :metadata => {
      :product_order_id => options[:product_order_id],
      :product_order_payment_id => options[:product_order_payment_id]
     },
     :save_card => options[:save_card],
     :force_3ds => true
  }

    @c = Curl::Easy.new("https://api.payplug.com/v1/payments") do |curl|
      curl.headers["Authorization"] = "Bearer "+api_key
      curl.headers["Content-Type"] = "application/json"
      
      curl.verbose = true
    end


    @c.http_post(@data.to_json)

    @new_payplug_payment = JSON.parse(@c.body_str)

  end

  def payplug_retrieve_payement(id)
    api_key = CONFIG_PAYPLUG['api_key']
    host = "http://#{HOSTNAME}"

    @c = Curl::Easy.new("https://api.payplug.com/v1/payments/#{id}") do |curl|
      curl.headers["Authorization"] = "Bearer "+api_key
      curl.headers["Content-Type"] = "application/json"


      curl.verbose = true
    end



    @c.http_get()

    @response = JSON.parse(@c.body_str)
  end


  private



  def auth_admin
    if !current_admin
      redirect_to new_admin_admin_auth_path
    end


  end
  
  
  def auth_product_customer
    
    session[:devise_id] = params[:d] if params[:d] 
    if !current_product_customer
      
      session[:before_auth_url] = request.url 
      redirect_to new_public_product_customers_auth_path(:p => params[:p], :for_annonce => (true if params[:controller] == "public/annonces"), :for_mail => (true if params[:controller] == "public/product_customers" and params[:action] == "mail"))
    end
      
    
  end


  private
  
  def current_product_customer
    if cookies[:product_customer_auth_token] and ProductCustomer.exists?(:token => cookies[:product_customer_auth_token])
      a_c = ProductCustomer.find_by_token(cookies[:product_customer_auth_token])
      if !a_c.lock
        @current_product_customer = a_c
      else
        cookies[:product_customer_auth_token] = nil
        
        nil
      end
    else
      nil
    end
   
  end

    def current_admin

      if cookies[:admin_remember_token]
        if @current_admin = Admin.find_by_remember_token(cookies[:admin_remember_token])
          @current_admin = Admin.find_by_remember_token(cookies[:admin_remember_token])
        else
            cookies[:admin_remember_token] =nil
        end

      end



    end

    def current_inscrit
      if session[:inscrit_id] and Inscrit.exists?(session[:inscrit_id])
        @current_inscrit = Inscrit.find(session[:inscrit_id])
      else
        nil
      end
    end

    def set_order
      if session[:product_order_id] && @product_order = ProductOrder.where(id: session[:product_order_id]).first
        
      else
        @product_order = ProductOrder.new
        
        @product_order.save
        
        session[:product_order_id] = @product_order.id
      end
    end

    helper_method :current_admin, :current_inscrit, :current_product_customer
end
