|  |  | @ -9,11 +9,10 @@ module Submissions | 
			
		
	
		
		
			
				
					
					|  |  |  |         submission = template.submissions.new(created_by_user: user, source:, |  |  |  |         submission = template.submissions.new(created_by_user: user, source:, | 
			
		
	
		
		
			
				
					
					|  |  |  |                                               template_submitters: template.submitters, submitters_order:) |  |  |  |                                               template_submitters: template.submitters, submitters_order:) | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         maybe_set_template_fields(submission, attrs[:submitters]) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         attrs[:submitters].each_with_index do |submitter_attrs, index| |  |  |  |         attrs[:submitters].each_with_index do |submitter_attrs, index| | 
			
		
	
		
		
			
				
					
					|  |  |  |           uuid = |  |  |  |           uuid = find_submitter_uuid(template, submitter_attrs, index) | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |             submitter_attrs[:uuid].presence || |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |             template.submitters.find { |e| e['name'] == submitter_attrs[:role] }&.dig('uuid') || |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |             template.submitters[index]&.dig('uuid') |  |  |  |  | 
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |           next if uuid.blank? |  |  |  |           next if uuid.blank? | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
	
		
		
			
				
					|  |  | @ -26,6 +25,37 @@ module Submissions | 
			
		
	
		
		
			
				
					
					|  |  |  |       end |  |  |  |       end | 
			
		
	
		
		
			
				
					
					|  |  |  |     end |  |  |  |     end | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     def maybe_set_template_fields(submission, submitters_attrs) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |       template_fields = submission.template.fields.deep_dup | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |       submitters_attrs.each_with_index do |submitter_attrs, index| | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         next if submitter_attrs[:readonly_fields].blank? | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         uuid = find_submitter_uuid(submission.template, submitter_attrs, index) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         template_fields.each do |f| | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |           next if f['submitter_uuid'] != uuid || | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                   (!f['name'].in?(submitter_attrs[:readonly_fields]) && | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                    !f['name'].parameterize.underscore.in?(submitter_attrs[:readonly_fields])) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |           f['readonly'] = true | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         end | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |       end | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |       if template_fields != submission.template.fields | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         submission.template_fields = template_fields | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         submission.template_schema = submission.template.schema | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |       end | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |       submission | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     end | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     def find_submitter_uuid(template, attrs, index) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |       attrs[:uuid].presence || | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         template.submitters.find { |e| e['name'] == attrs[:role] }&.dig('uuid') || | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         template.submitters[index]&.dig('uuid') | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     end | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     def build_submitter(submission:, attrs:, uuid:, is_order_sent:, mark_as_sent:) |  |  |  |     def build_submitter(submission:, attrs:, uuid:, is_order_sent:, mark_as_sent:) | 
			
		
	
		
		
			
				
					
					|  |  |  |       email = Submissions.normalize_email(attrs[:email]) |  |  |  |       email = Submissions.normalize_email(attrs[:email]) | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
	
		
		
			
				
					|  |  | 
 |