2014-05-01 07:14:16 +00:00
|
|
|
class MemberProfile
|
|
|
|
include Mongoid::Document
|
2014-05-26 01:45:46 +00:00
|
|
|
include Mongoid::Timestamps
|
2014-05-30 10:36:29 +00:00
|
|
|
include Mongoid::Tree
|
|
|
|
include Mongoid::Tree::Ordering
|
2014-05-26 01:45:46 +00:00
|
|
|
|
2014-05-01 07:14:16 +00:00
|
|
|
field :first_name, type: String, localize: true
|
|
|
|
field :last_name, type: String, localize: true
|
2014-05-26 08:43:51 +00:00
|
|
|
field :sex
|
2014-05-09 06:03:55 +00:00
|
|
|
field :sid
|
|
|
|
field :office_tel
|
2014-05-26 01:45:46 +00:00
|
|
|
field :birthday, type: DateTime
|
2014-06-17 13:49:41 +00:00
|
|
|
field :address, type: String, localize: true
|
2014-05-26 01:45:46 +00:00
|
|
|
field :personal_website
|
|
|
|
field :autobiography, type: String, localize: true
|
|
|
|
field :email, type: String
|
2014-05-30 10:36:29 +00:00
|
|
|
field :position, type: Integer
|
2014-05-26 01:45:46 +00:00
|
|
|
|
|
|
|
VALID_EMAIL_FORMAT = /\A[^@\s]+@([^@.\s]+\.)+[^@.\s]+\z/
|
2014-06-03 03:01:03 +00:00
|
|
|
validates :email, uniqueness: true, format: { with: VALID_EMAIL_FORMAT }, if: :email_present?
|
2014-05-30 10:36:29 +00:00
|
|
|
validates :position, uniqueness: true
|
2014-05-01 07:14:16 +00:00
|
|
|
|
|
|
|
has_one :user
|
|
|
|
has_and_belongs_to_many :roles
|
2014-05-27 10:37:59 +00:00
|
|
|
has_and_belongs_to_many :role_statuses
|
2014-05-01 07:14:16 +00:00
|
|
|
|
2014-05-30 10:36:29 +00:00
|
|
|
has_many :member_profile_field_values
|
|
|
|
accepts_nested_attributes_for :member_profile_field_values
|
|
|
|
|
|
|
|
before_save :assign_default_position, :if => :assign_default_position?
|
|
|
|
|
2014-05-01 07:14:16 +00:00
|
|
|
mount_uploader :avatar, AvatarUploader
|
2014-05-09 06:03:55 +00:00
|
|
|
paginates_per 10
|
2014-05-01 07:14:16 +00:00
|
|
|
|
|
|
|
def name
|
2014-05-26 08:48:06 +00:00
|
|
|
if self.first_name || self.last_name
|
|
|
|
"#{self.first_name} #{self.last_name}"
|
|
|
|
end
|
2014-05-01 07:14:16 +00:00
|
|
|
end
|
2014-05-26 10:52:15 +00:00
|
|
|
|
|
|
|
def disable_role=(var)
|
|
|
|
var[:id].each do |id,val|
|
|
|
|
if (val=="true")
|
|
|
|
self.role_ids.reject!{|t| t.to_s == id}
|
|
|
|
elsif(val=="false")
|
|
|
|
self.role_ids += Array(id)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
2014-05-30 10:36:29 +00:00
|
|
|
|
2014-06-04 08:46:29 +00:00
|
|
|
def new_attribute_values=(fields)
|
|
|
|
fields.each do |key,field|
|
|
|
|
self.member_profile_field_values.build(field)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2014-06-03 03:01:03 +00:00
|
|
|
def get_attribute_value(attribute_field)
|
2014-06-04 08:46:29 +00:00
|
|
|
MemberProfileFieldValue.find_by(member_profile_field_id: attribute_field.id.to_s)
|
2014-06-03 03:01:03 +00:00
|
|
|
end
|
|
|
|
|
2014-05-30 10:36:29 +00:00
|
|
|
def get_attribute_values
|
|
|
|
@attribute_values ||= self.member_profile_field_values rescue nil
|
|
|
|
end
|
|
|
|
|
|
|
|
def get_value_from_field_id(field_id)
|
|
|
|
values = get_attribute_values
|
2014-06-03 03:01:03 +00:00
|
|
|
value = values.detect {|value| value.member_profile_field_id == field_id} rescue nil
|
2014-05-30 10:36:29 +00:00
|
|
|
value ? value : nil
|
|
|
|
end
|
|
|
|
|
2014-06-03 03:01:03 +00:00
|
|
|
def self.get_member_list_attribute_field(field_key)
|
|
|
|
MemberProfileField.find_by(key: field_key)
|
|
|
|
end
|
|
|
|
|
|
|
|
def self.get_member_list_attribute_value(member_profile_id,field_id)
|
|
|
|
MemberProfileFieldValue.find_by(member_profile_id: member_profile_id, member_profile_field_id: field_id)
|
|
|
|
end
|
|
|
|
|
|
|
|
def self.get_role_member_data_by_sort(field_key, role_status_id)
|
|
|
|
a = Array.new
|
|
|
|
attribute_field_data = get_member_list_attribute_field(field_key)
|
|
|
|
self.where(role_status_ids: role_status_id).desc(:_id).collect{|t| a << [ get_member_list_attribute_value(t.id,attribute_field_data.id)['val'].to_i, t ] }
|
|
|
|
member_data = a.sort
|
|
|
|
member_data_tmp = member_data.collect {|v| v[1] }
|
|
|
|
end
|
|
|
|
|
2014-05-30 10:36:29 +00:00
|
|
|
def assign_default_position?
|
|
|
|
self.position.nil? || self.parent_id_changed?
|
|
|
|
end
|
|
|
|
|
2014-06-03 03:01:03 +00:00
|
|
|
def email_present?
|
|
|
|
self.email.present?
|
|
|
|
end
|
2014-05-01 07:14:16 +00:00
|
|
|
end
|