stevedowney/ucb_rails

View on GitHub
app/models/ucb_rails/ldap_person/entry.rb

Summary

Maintainability
A
0 mins
Test Coverage
module UcbRails::LdapPerson
  class Entry
    
    # include ActiveAttr::Model  <--- doesn't work with 4.0 (mass assign. security)
    include ::ActiveAttr::Attributes
    include ::ActiveAttr::BasicModel
    include ::ActiveAttr::BlockInitialization
    include ::ActiveAttr::MassAssignment
  
    attribute :uid
    attribute :calnet_id
    attribute :first_name
    attribute :last_name
    attribute :email
    attribute :phone
    attribute :departments
    attribute :affiliations
  
    def full_name
      "#{first_name()} #{last_name()}"
    end
  
    def last_first
      "#{last_name}, #{first_name}"
    end
    
    def last_first_downcase
      last_first.downcase
    end
    
    # Currently only used in rspec
    def ==(other)
      uid == other.uid
    end
    
    class << self
      
      def new_from_ldap_entry(ldap_entry)
        new(
          :uid => ldap_entry.uid,
          :calnet_id => ldap_entry.berkeleyedukerberosprincipalstring.first,
          :first_name => ldap_entry.givenname.first,
          :last_name => ldap_entry.sn.first,
          :email => ldap_entry.mail.first,
          :phone => ldap_entry.phone,  
          :departments => ldap_entry.berkeleyeduunithrdeptname,
          :affiliations => ldap_entry.berkeleyeduaffiliations
        )
      end
      
    end
    
  end
end