class ForumUser < ActiveRecord::Base
  #attr_accessible :bio, :email, :firstname, :name, :password, :password_confirmation, :avatar, :moderator
  
  
  has_many :followed_topics
  has_many :forum_topics, :through => :followed_topics do
    def enabled
      where(":followed_topic.enabled = ?", true)
    end
  end
  
  has_secure_password
  validates_presence_of :password, :on => :create
  validates :email, :presence => true, :uniqueness => true, :format => /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\z/i
  validates :name, :presence => true
  validates :firstname, :presence => true
  
  mount_uploader :avatar, AvatarUploader
  
  has_many :messages, :class_name => "ForumMessage"
  has_many :topics, :class_name => "ForumTopic"
  
  has_many :images, :class_name => "ForumUserImage", :order => "created_at DESC"
  belongs_to :sheet
  
  before_create { generate_token(:auth_token) }
  attr_accessor :skip_sheet_validation

  def generate_token(column)
    begin
      self[column] = SecureRandom.urlsafe_base64
    end while ForumUser.exists?(column => self[column])
  end
  
  before_validation do
    if !skip_sheet_validation
      if sheet_number?
        @sheet = Sheet.where(:sheet_number => sheet_number).first
        if !@sheet
          errors.add :sheet_number, "Votre numéro adhérent n'est pas valide."
        
        else
          self.sheet_id = @sheet.id
        
          if @sheet.last_year < Date.today.year
            errors.add :sheet_number, "Votre cotisation n'est pas à jour, merci de nous contacter."
          end
          
        
        
        end
      
      elsif self.id
      
      else
        errors.add :sheet_number, "Vous devez saisir votre numéro adhérent (présent en bas de chaque mails)."
      end
    end
  end
end