class User < ActiveRecord::Base

  acts_as_authorization_subject  :association_name => :roles, :join_table_name => :roles_users
  
  has_many :placemarks

  acts_as_authentic do |c|
    c.logged_in_timeout = 120.minutes
  end

  has_and_belongs_to_many :roles

  default_scope :conditions => { :deleted_at => nil }
  
  self.per_page = (Rails.env == 'development') ? 3 : 20
    
  
  def email_address_with_name
     "#{self.firstname} #{self.lastname} <#{self.email}>"
  end

  def destroy
    self.update_attributes(
      :deleted_at => Time.now,
      :active => false,
      :login => "User #{self.id}",
      :email => "user#{self.id}@ewnw.de",
      :firstname => "",
      :lastname=> "",
      :organization=> "",
      :my_skills=> "",
      :my_contributions=> "",
      :my_requests=> "" )
    self.save!
  end

  def self.find_with_destroyed *args
    self.with_exclusive_scope { find(*args) }
  end
  
  
  def active?
    active
  end
  
  def activate!
    self.active = true
    save
  end
  
  def deactivate!
    self.active = false
    save
  end
  
  def send_activation_instructions!
    reset_perishable_token!
    Notifier.activation_instructions(self).deliver
  end
  
  def send_activation_confirmation!
    reset_perishable_token!
    Notifier.activation_confirmation(self).deliver
    Notifier.admin_activation_information(self).deliver
  end  
  
  def send_reset_password_link!
    reset_perishable_token!
    Notifier.reset_password_link(self).deliver
  end  

end

