| 
						
					 | 
				
			
			 | 
			 | 
			
				@ -35,17 +35,30 @@ namespace :mid_site do
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    #remove delete user sho has been deleted at remote first
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    local_need_remove = User.all.collect{|t| t.nccu_id rescue nil}.uniq.delete_if {|x| x == nil} - remote_list
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    desc "Going to delete User with IDs: #{local_need_remove.inspect}"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    local_need_remove = User.excludes(nccu_id: test_account_ldap_id ).collect{|t| t.nccu_id rescue nil}.uniq.delete_if {|x| x == nil} - remote_list
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    local_need_remove = User.excludes(nccu_ldap_uid: test_account_ldap_id ).collect{|t| t.nccu_ldap_uid rescue nil}.uniq.delete_if {|x| x == nil} - remote_list
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    desc "Deletion completed! \n"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    #starting update user
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    desc "Updating and Newing Users"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    users_from_mid.each do |mid_user|      
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      ut_item = ut_data_from_mid.find{|ut_data| ut_data["ut_cod"] ==  mid_user["ut_cod"]}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      up_ut_item = ut_data_from_mid.find{|ut_data| ut_data["ut_cod"] == mid_user["up_ut_cod"] }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      local_user = User.find_or_initialize_by(:nccu_ldap_uid => mid_user["nccu_id"])
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      AttributeValue.find_or_create_by( :user_id => local_user.id, :attribute_field_id => info_profile.attribute_fields[0].id, :key => 'first_name', :en => '', :zh_tw => (mid_user["psn_nam"].size <= 3? mid_user["psn_nam"][1..2]:mid_user["psn_nam"][2..-1]) )
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      AttributeValue.find_or_create_by( :user_id => local_user.id, :attribute_field_id => info_profile.attribute_fields[1].id, :key => 'last_name', :en => '', :zh_tw => (mid_user["psn_nam"].size <= 3? mid_user["psn_nam"][0]:mid_user["psn_nam"][0..1]) )
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      users_name_from_mid = $mid_site_connection.query("SELECT eng_nam_l,eng_nam_f,chi_nam_l,chi_nam_f FROM rss_zzperson_view  WHERE nccu_id =#{mid_user["nccu_id"]}").first
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      first_name = AttributeValue.find_or_create_by( :user_id => local_user.id, :attribute_field_id => info_profile.attribute_fields[0].id, :key => 'first_name')
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      last_name = AttributeValue.find_or_create_by( :user_id => local_user.id, :attribute_field_id => info_profile.attribute_fields[1].id, :key => 'last_name')
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      first_name['en'] = users_name_from_mid["eng_nam_f"]
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      first_name['zh_tw'] = users_name_from_mid["chi_nam_f"]
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      first_name.save
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      last_name['en'] = users_name_from_mid["eng_nam_l"]
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      last_name['zh_tw'] = users_name_from_mid["chi_nam_l"]
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      last_name.save
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      user_model_mapper = Hash[:ut_cod => mid_user["ut_cod"] ,:up_ut_cod => mid_user["up_ut_cod"],:email => mid_user["eml_adr"],:off_tel_ext => mid_user["off_tel_ext"],:sta_num => mid_user["sta_num"]]
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      user_model_mapper[:admin] = false
 | 
			
		
		
	
	
		
			
				
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@ -66,27 +79,29 @@ namespace :mid_site do
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    end   
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  end
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  task :install_admin => :before_instll_admin do
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    admins_nccu_id = '2772'
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    info_profile = Info.first(conditions: {:key => 'profile'})
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				 
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    # admin_role = Role.find_or_create_by( key: 'administrator')
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    # sub_role = admin_role.sub_roles.find_or_create_by(:key => 'computer_center')
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    user_from_mid = $mid_site_connection.query("SELECT #{attr_from_mid.join(',')} FROM rss_pautlst_ut  WHERE posgrp_cod IN (#{officer_posgrp_code.join(',')}) AND nccu_id = '#{admins_nccu_id}' limit 1")    
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    admin_at_mid =  user_from_mid.first
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    user_first_name = admin_at_mid["psn_nam"].size > 3 ? admin_at_mid["psn_nam"][3..-1] : admin_at_mid["psn_nam"][1..-1]
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    user_last_name =  admin_at_mid["psn_nam"].size  > 3 ? admin_at_mid["psn_nam"][1..2] : admin_at_mid["psn_nam"][0]
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    local_user = User.find_or_initialize_by(:nccu_id => admin_at_mid["nccu_id"])
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    local_user.update_attributes(:email => admin_at_mid["eml_adr"], :admin => true, :role_id => admin_role.id, :sub_role_ids => [sub_role.id])
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    # local_user.role = admin_role
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    # local_user.sub_roles << 
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    AttributeValue.create( :user => local_user, :attribute_field => info_profile.attribute_fields[0], :key => 'first_name', :en => user_first_name, :zh_tw => user_first_name )
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    AttributeValue.create( :user_id => local_user.id, :attribute_field_id => info_profile.attribute_fields[1].id, :key => 'last_name', :en => user_last_name, :zh_tw => user_last_name )
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    #AttributeValue.create( :user_id => local_user.id, :attribute_field_id => sr_1_2.attribute_fields[0].id, :key => 'field', :en => 'Computer Architecture', :zh_tw => '計算機系統結構' )
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    #AttributeValue.create( :user_id => local_user.id, :attribute_field_id => sr_1_2.attribute_fields[1].id, :key => 'department', :en => user_from_mid["ut_chi_m"], :zh_tw => user_from_mid["ut_chi_m"] )
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    #AttributeValue.create( :user_id => local_user.id, :attribute_field_id => sr_1_2.attribute_fields[2].id, :key => 'speciality', :en => 'HSR', :zh_tw => '高鐵' )
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    local_user = User.find_or_initialize_by(:nccu_ldap_uid => admin_at_mid["nccu_id"])
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    local_user.update_attributes(:email => admin_at_mid["eml_adr"], :admin => true, :role_id => admin_role.id, :sub_role_ids => [sub_role.id])
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    users_name_from_mid = $mid_site_connection.query("SELECT eng_nam_l,eng_nam_f,chi_nam_l,chi_nam_f FROM rss_zzperson_view  WHERE nccu_id =#{admin_at_mid["nccu_id"]}").first
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    first_name = AttributeValue.find_or_create_by( :user_id => local_user.id, :attribute_field_id => info_profile.attribute_fields[0].id, :key => 'first_name')
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    last_name = AttributeValue.find_or_create_by( :user_id => local_user.id, :attribute_field_id => info_profile.attribute_fields[1].id, :key => 'last_name')
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    first_name['en'] = users_name_from_mid["eng_nam_f"]
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    first_name['zh_tw'] = users_name_from_mid["chi_nam_f"]
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    first_name.save
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    last_name['en'] = users_name_from_mid["eng_nam_l"]
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    last_name['zh_tw'] = users_name_from_mid["chi_nam_l"]
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    last_name.save
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  end
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  
 | 
			
		
		
	
	
		
			
				
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@ -100,7 +115,7 @@ namespace :mid_site do
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    admin_at_mid =  user_from_mid.first
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    user_first_name = admin_at_mid["psn_nam"].size > 3 ? admin_at_mid["psn_nam"][3..-1] : admin_at_mid["psn_nam"][1..-1]
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    user_last_name =  admin_at_mid["psn_nam"].size  > 3 ? admin_at_mid["psn_nam"][1..2] : admin_at_mid["psn_nam"][0]
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    local_user = User.find_or_initialize_by(:nccu_id => admin_at_mid["nccu_id"])
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    local_user = User.find_or_initialize_by(:nccu_ldap_uid => admin_at_mid["nccu_id"])
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    local_user.update_attributes(:email => admin_at_mid["eml_adr"], :admin => true, :role_id => admin_role.id, :sub_role_ids => [sub_role.id])
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    AttributeValue.create( :user_id => local_user.id, :attribute_field_id => info_profile.attribute_fields[0].id, :key => 'first_name', :en => user_first_name, :zh_tw => user_first_name )
 | 
			
		
		
	
	
		
			
				
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@ -141,7 +156,7 @@ namespace :mid_site do
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  end
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  task :clean_ldap_users => :environment do
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    User.where(:nccu_ldap_id.ne => nil ).each {|t| t.destroy}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    User.where(:nccu_ldap_uid.ne => nil ).each {|t| t.destroy}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  end
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  task :clean_admin_role_and_sub_role => :environment do
 | 
			
		
		
	
	
		
			
				
					| 
						
					 | 
				
			
			 | 
			 | 
			
				
 
 |