|  |  |  | @ -104,20 +104,41 @@ module Api | 
			
		
	
		
			
				
					|  |  |  |  |     end | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     def assign_submitter_attrs(submitter, attrs) | 
			
		
	
		
			
				
					|  |  |  |  |       values = attrs[:values]&.to_unsafe_h || {} | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |       assign_submission_fields(submitter.submission) | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |       phone_field_uuid = submitter.submission.template_fields.find do |f| | 
			
		
	
		
			
				
					|  |  |  |  |         values[f['uuid']].present? && f['type'] == 'phone' | 
			
		
	
		
			
				
					|  |  |  |  |       end&.dig('uuid') | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |       submitter.email = Submissions.normalize_email(attrs[:email]) if attrs.key?(:email) | 
			
		
	
		
			
				
					|  |  |  |  |       submitter.phone = attrs[:phone].to_s.gsub(/[^0-9+]/, '') if attrs.key?(:phone) | 
			
		
	
		
			
				
					|  |  |  |  |       submitter.values = submitter.values.merge(attrs[:values].to_unsafe_h) if attrs[:values].present? | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |       if attrs.key?(:phone) | 
			
		
	
		
			
				
					|  |  |  |  |         submitter.phone = attrs[:phone].to_s.gsub(/[^0-9+]/, '') | 
			
		
	
		
			
				
					|  |  |  |  |       elsif values[phone_field_uuid].present? | 
			
		
	
		
			
				
					|  |  |  |  |         submitter.phone = values[phone_field_uuid].to_s.gsub(/[^0-9+]/, '') | 
			
		
	
		
			
				
					|  |  |  |  |       end | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |       values = values.except(phone_field_uuid) | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |       submitter.values = submitter.values.merge(values) if values.present? | 
			
		
	
		
			
				
					|  |  |  |  |       submitter.completed_at = attrs[:completed] ? Time.current : submitter.completed_at | 
			
		
	
		
			
				
					|  |  |  |  |       submitter.external_id = attrs[:application_key] if attrs.key?(:application_key) | 
			
		
	
		
			
				
					|  |  |  |  |       submitter.external_id = attrs[:external_id] if attrs.key?(:external_id) | 
			
		
	
		
			
				
					|  |  |  |  |       submitter.metadata = attrs[:metadata] if attrs.key?(:metadata) | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |       assign_submission_fields(submitter.submission) | 
			
		
	
		
			
				
					|  |  |  |  |       assign_external_id(submitter, attrs) | 
			
		
	
		
			
				
					|  |  |  |  |       assign_preferences(submitter, attrs) | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |       submitter | 
			
		
	
		
			
				
					|  |  |  |  |     end | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     def assign_external_id(submitter, attrs) | 
			
		
	
		
			
				
					|  |  |  |  |       submitter.external_id = attrs[:application_key] if attrs.key?(:application_key) | 
			
		
	
		
			
				
					|  |  |  |  |       submitter.external_id = attrs[:external_id] if attrs.key?(:external_id) | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |       submitter | 
			
		
	
		
			
				
					|  |  |  |  |     end | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     def assign_submission_fields(submission) | 
			
		
	
		
			
				
					|  |  |  |  |       submission.template_fields ||= submission.template.fields | 
			
		
	
		
			
				
					|  |  |  |  |       submission.template_schema ||= submission.template.schema | 
			
		
	
	
		
			
				
					|  |  |  | 
 |