# -*- encoding : utf-8 -*-
class ImageFile < ActiveRecord::Base
	mount_uploader :file, ImageUploader

	before_save do
		if !self.name?
			self.name = File.basename(self.file.filename, File.extname(self.file.filename)).to_s if self.file?
		end
			
	end
	
	before_validation do 
	 	if self.tags?
			self.tags = self.tags.gsub(/ +?,/, ',')
			self.tags = self.tags.gsub(/, +?/, ',')
			self.tags = self.tags.gsub(/,/, ', ')
		end

	end
	
	after_save do 
		tags_to_save = self.tags.to_s.split(',')
		tags_to_save.each do |t|
			name = t.to_s.strip
			
			Tag.find_or_create_by_name(t.to_s.strip) if name.size > 0
		end
	end
	
	
	
	def rotate(degrees=90)
		versions = [self.file.path, self.file.large.path, self.file.large.medium.path, self.file.large.medium.small.path, self.file.large.medium.small.thumb.path, self.file.square.path]
		
		versions.each do |v|
			image = Magick::ImageList.new(v)
			image = image.rotate(degrees)
			image.write(v)
		end
		self.updated_at = Time.now
		self.save
	end
end