kaize/mail_sandbox_web

View on GitHub
app/models/user.rb

Summary

Maintainability
A
0 mins
Test Coverage
class User < ActiveRecord::Base
  include UserRepository
  has_one :facebook, :dependent => :destroy, :autosave => true
  has_one :github, :dependent => :destroy, :autosave => true

  has_many :mail_applications, :inverse_of => :owner, :foreign_key => :owner_id

  has_many :mail_application_users, :dependent => :destroy
  has_many :membered_applications, :through => :mail_application_users, :source => :mail_application

  def available_applications
    return MailApplication.web if admin?
    MailApplication.web.available_for self
  end

  def owned_applications
    return MailApplication.web if admin?
    mail_applications.web
  end

  def available_applications_messages
    return MailMessage.web if admin?
    MailMessage.web.where(:mail_application_id => available_applications)
  end


  def guest?
    false
  end

  def providers
    [self.facebook,
     self.github].compact
  end

  def email
    providers.first.email
  end

  def nickname
    providers.first.nickname
  end

  def can_delete_app?(app)
    #TODO: app maybe decorator
    (self.id == app.owner.id) || admin?
  end

end