Sha256: 23dc9b0440f9ce3ff5bcf8adc0c7db8c984e342d92311db4218d084399e979ac

Contents?: true

Size: 1.73 KB

Versions: 2

Compression:

Stored size: 1.73 KB

Contents

class Member < ActiveRecord::Base

  include Ext::DeviseConfiguration
  include Ext::Integrations::Member

  has_many    :memberships
  belongs_to  :organization
  belongs_to  :person

  validates :organization,  :presence => true
  validates :member_number,  :presence => true

  before_create :set_member_number

  #
  # devise_invitable needs this otherwise it can't set the :from param in an email
  #
  def headers_for(action)
    case action.to_s
    when "invitation_instructions"
      {:from => self.organization.email}
    else
      {}
    end
  end

  def self.generate_password
    Devise.friendly_token
  end

  def active_memberships
    memberships.select{ |m| m.starts_at < DateTime.now && m.ends_at > DateTime.now }
  end

  def set_member_number
    self.member_number = MemberNumberGenerator.next_number_for(self.organization)
  end

  # Setup accessible (or protected) attributes for your model
  attr_accessible :email, :password, :password_confirmation, :remember_me

  def active_for_authentication?
    super && !suspended?
  end

  def self.find_by_membership(membership)
    Member.find_by_email_and_organization_id(membership.item.order.person.email, membership.organization)    #TODO: Biggest join ever
  end

  #
  # * Creates (and invites) a member for this membership if one does not already exist
  # * Attaches that member to the applicable person
  #
  def self.for(membership)
    member = Member.find_by_membership(membership)
    if member.nil?
      member = Member.new({:email => membership.item.order.person.email})
      member.organization = membership.item.order.organization
      member.person = membership.item.order.person
      member.invite!
    end

    membership.member = member
    membership.save

    member
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
artfully_ose-1.2.0.pre.5 app/models/member.rb
artfully_ose-1.2.0.pre.4 app/models/member.rb