# -*- encoding : utf-8 -*-

class ImageUploader < CarrierWave::Uploader::Base

  # Include RMagick or ImageScience support:
  include CarrierWave::RMagick
  # include CarrierWave::ImageScience

  # Choose what kind of storage to use for this uploader:
  storage :file
  # storage :s3

  # Override the directory where uploaded files will be stored.
  # This is a sensible default for uploaders that are meant to be mounted:
  def store_dir
    "public_medias/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
  end

  # Provide a default URL as a default if there hasn't been a file uploaded:
  # def default_url
  #   "/images/fallback/" + [version_name, "default.png"].compact.join('_')
  # end

  # Process files as they are uploaded:
  process :resize_to_limit => [1200, 1200]
  #
  # def scale(width, height)
  #   # do something
  # end






  # Create different versions of your uploaded files:
  version :large do
    process :resize_to_limit => [1200, 1200]
    
    
    version :medium do
      process :resize_to_limit => [800, 700]
      
      version :small do
        process :resize_to_limit => [300, 400]
      
        version :thumb do
          process :resize_to_limit => [250, 250]
        end
      
      end
      
      
    end
    
    
    
    
    
  end

  version :square do
    process :resize_to_fill => [250, 250]
  end
  

  

  # Add a white list of extensions which are allowed to be uploaded.
  # For images you might use something like this:
  def extension_white_list
     %w(jpg jpeg gif png bmp)
  end

  # Override the filename of the uploaded files:
  def filename
      "#{secure_token}.#{file.extension}" if original_filename.present?
    end
  
  
  before :cache, :save_original_filename
  def save_original_filename(file)
    if !model.origin_name?
      puts file.original_filename
      model.origin_name = file.original_filename if file.original_filename.present?
    end
  end
  
  protected
    def secure_token
      var = :"@#{mounted_as}_secure_token"
      model.instance_variable_get(var) or model.instance_variable_set(var, SecureRandom.hex(4))
    end

end
