mirror of https://github.com/docusealco/docuseal
				
				
				
			
			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.
		
		
		
		
		
			
		
			
				
					
					
						
							47 lines
						
					
					
						
							1.2 KiB
						
					
					
				
			
		
		
	
	
							47 lines
						
					
					
						
							1.2 KiB
						
					
					
				| # frozen_string_literal: true
 | |
| 
 | |
| module Submissions
 | |
|   module AssignDefinedSubmitters
 | |
|     module_function
 | |
| 
 | |
|     def call(submission)
 | |
|       submission.submitters_order = 'preserved'
 | |
| 
 | |
|       assign_defined_submitters(submission)
 | |
|       assign_linked_submitters(submission)
 | |
| 
 | |
|       submission
 | |
|     end
 | |
| 
 | |
|     def assign_defined_submitters(submission)
 | |
|       submission.template.submitters.to_a.select do |item|
 | |
|         next if item['email'].blank? && item['is_requester'].blank?
 | |
|         next if submission.submitters.any? { |e| e.uuid == item['uuid'] }
 | |
| 
 | |
|         submission.submitters.new(
 | |
|           account_id: submission.account_id,
 | |
|           uuid: item['uuid'],
 | |
|           email: item['is_requester'] ? submission.template.author.email : item['email']
 | |
|         )
 | |
|       end
 | |
|     end
 | |
| 
 | |
|     def assign_linked_submitters(submission)
 | |
|       submission.template.submitters.to_a.select do |item|
 | |
|         next if item['linked_to_uuid'].blank?
 | |
|         next if submission.submitters.any? { |e| e.uuid == item['uuid'] }
 | |
| 
 | |
|         email = submission.submitters.find { |s| s.uuid == item['linked_to_uuid'] }&.email
 | |
| 
 | |
|         next unless email
 | |
| 
 | |
|         submission.submitters.new(
 | |
|           account_id: submission.account_id,
 | |
|           uuid: item['uuid'],
 | |
|           email:
 | |
|         )
 | |
|       end
 | |
|     end
 | |
|   end
 | |
| end
 |