for user new interface, member role is working.
This commit is contained in:
1 parent
b301f6522a
commit
bd0d975014
15 files changed
+312
-90
No files matched your search
+63
-29
@@ -34,27 +34,60 @@ class User
|
||||
accepts_nested_attributes_for :attribute_values, :allow_destroy => true
|
||||
|
||||
before_create :initialize_desktop
|
||||
before_save :check_status_record
|
||||
before_save :rebuild_status_record
|
||||
before_save :save_roles
|
||||
|
||||
scope :remote_account, where(:nccu_id.ne => nil)
|
||||
|
||||
validates_uniqueness_of :email,:message=> I18n.t("devise.registrations.email_not_unique")
|
||||
|
||||
# def new_attribute_values=(vars)
|
||||
# binding.pry
|
||||
# end
|
||||
# def new_attribute_values(vars)
|
||||
# binding.pry
|
||||
# end
|
||||
def rebuild_sub_roles_from_attribute_values!(attribute_values)
|
||||
# attribute_fields = AttributeField.find attribute_values.collect{|t| t[1][:attribute_field_id]}
|
||||
# self.sub_roles = attribute_fields.collect{|t| t.attribute if t.attribute.is_a? SubRole}.compact.uniq
|
||||
|
||||
## # class << self
|
||||
## def initialize
|
||||
## self.define_method("asd"){ p "hi"}
|
||||
## sub_roles.each do |sr|
|
||||
## sr_ids = sr.attribute_fields.collect{|t| t.id.to_s}
|
||||
## self.define_method("attribute_values_for_"+sr.key.to_s) {
|
||||
## AttributeValue.where(user_id: id ).in(attribute_field_id: sr_ids)
|
||||
## }
|
||||
## end
|
||||
## yield self
|
||||
## end
|
||||
|
||||
# end
|
||||
|
||||
# def initialize
|
||||
# binding.pry
|
||||
# # yield self
|
||||
# end
|
||||
|
||||
def get_attribute_value(attribute_field)
|
||||
attribute_values.where(attribute_field_id: attribute_field.id).first
|
||||
end
|
||||
|
||||
def get_sub_roles_by_role(role)
|
||||
sub_roles.where(role_id: role.id)
|
||||
end
|
||||
|
||||
def disable_sub_role=(var)
|
||||
var[:id].each do |id,val|
|
||||
# binding.pry if id == '5052c5b22b5c49ab02000004'
|
||||
if (val=="true")
|
||||
self.sub_roles = self.sub_roles.reject{|t| t.id.to_s==id}
|
||||
elsif(val=="false")
|
||||
self.sub_roles << SubRole.find(id)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
|
||||
def set_sub_role(sub_role_id,status_id)
|
||||
self.sub_roles << SubRole.find(sub_role_id)
|
||||
self.status_record.store(sub_role_id,status_id)
|
||||
self.status_record.merge!(Hash[sub_role_id,status_id])
|
||||
end
|
||||
|
||||
# def get_status(*params)
|
||||
@@ -80,11 +113,18 @@ class User
|
||||
def self.find_by_status_and_sub_role_key(sub_role_key,status_key) #Query for users by using specific sub_role and status key
|
||||
sr = ::SubRole.first({conditions: { key: sub_role_key }})
|
||||
status = ::Status.first({conditions:{role_id: sr.role.id,key: status_key}})
|
||||
find_by_status(sr.id,status.id)
|
||||
find_by_subrole_and_status(sr.id,status.id)
|
||||
end
|
||||
|
||||
def self.find_by_status(sub_role_id,status_id) #Query for users by using specific sub_role and status key buy within ID
|
||||
User.where("status_record.#{sub_role_id}" => status_id)
|
||||
def self.find_by_subrole_and_status(sub_role_id,status_id) #Query for users by using specific sub_role and status key by within ID
|
||||
User.where("status_record.#{sub_role_id}" => status_id,:sub_role_ids.in => [ sub_role_id ])
|
||||
end
|
||||
|
||||
def self.find_by_status(status_id)
|
||||
status = ::Status.find status_id
|
||||
::SubRole.where({role_id: status.role.id.to_s,disabled: false}).collect{|sr|
|
||||
find_by_subrole_and_status(sr.id.to_s,status_id)
|
||||
}.uniq!
|
||||
end
|
||||
|
||||
def create_dept_cache
|
||||
@@ -143,23 +183,17 @@ class User
|
||||
end
|
||||
|
||||
protected
|
||||
def save_roles
|
||||
self.roles = self.sub_roles.collect{|t| t.role}.uniq
|
||||
def save_roles
|
||||
self.roles = self.sub_roles.collect{|t| t.role}.uniq
|
||||
end
|
||||
|
||||
|
||||
def rebuild_status_record
|
||||
self.status_record = {}
|
||||
self.attribute_values.reject{|t| t.key!='status'}.each do |status|
|
||||
# binding.pry
|
||||
set_sub_role(status.attribute_field.attribute.id.to_s,status[:value]) rescue nil
|
||||
end
|
||||
end
|
||||
|
||||
def check_status_record
|
||||
roles = sub_roles.collect{|t| t.role}.uniq #get all role from sub_roles
|
||||
sub_roles_ary = sub_roles.collect{|t| t.id.to_s}
|
||||
self.status_record = status_record.keep_if{|sub_role_id, status_id|
|
||||
includeing = sub_roles_ary.include?(sub_role_id)
|
||||
valide = false
|
||||
if includeing
|
||||
sub_role = SubRole.find sub_role_id
|
||||
valide = sub_role.role.statuses.include? (Status.find status_id)
|
||||
end
|
||||
|
||||
(includeing and valide)
|
||||
} rescue {}
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
Reference in new issue
Block a user