You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							30 lines
						
					
					
						
							854 B
						
					
					
				
			
		
		
	
	
							30 lines
						
					
					
						
							854 B
						
					
					
				| class CustomerQuery < ApplicationQuery
 | |
|   attr_reader :partner, :user, :params
 | |
| 
 | |
|   def initialize(partner, user, params)
 | |
|     @partner = partner
 | |
|     @user    = user
 | |
|     @params  = params
 | |
|   end
 | |
| 
 | |
|   def call
 | |
|     customers = manager_group_scope
 | |
| 
 | |
|     keyword = params[:keyword].to_s.strip.presence
 | |
|     customers = customers.joins(:school).where('schools.name LIKE ?', "%#{keyword}%") if keyword
 | |
| 
 | |
|     customers
 | |
|   end
 | |
| 
 | |
|   private
 | |
| 
 | |
|   def manager_group_scope
 | |
|     # 超级管理员 或者 管理员
 | |
|     if user.admin_or_business? || partner.admin_partner_manager_group.partner_managers.exists?(user: user)
 | |
|       partner.customers
 | |
|     else
 | |
|       manager_group_ids = user.partner_managers.where(partner: partner).joins(:partner_manager_group).pluck('partner_manager_groups.id')
 | |
|       partner.customers.where(partner_manager_group_id: manager_group_ids)
 | |
|     end
 | |
|   end
 | |
| end |