|  |  | @ -29,17 +29,11 @@ module Submissions | 
			
		
	
		
		
			
				
					
					|  |  |  |       template_fields = submission.template.fields.deep_dup |  |  |  |       template_fields = submission.template.fields.deep_dup | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |       submitters_attrs.each_with_index do |submitter_attrs, index| |  |  |  |       submitters_attrs.each_with_index do |submitter_attrs, index| | 
			
		
	
		
		
			
				
					
					|  |  |  |         next if submitter_attrs[:readonly_fields].blank? |  |  |  |         submitter_uuid = find_submitter_uuid(submission.template, submitter_attrs, index) | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         uuid = find_submitter_uuid(submission.template, submitter_attrs, index) |  |  |  |         process_readonly_fields_param(submitter_attrs[:readonly_fields], template_fields, submitter_uuid) | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         template_fields.each do |f| |  |  |  |         process_fields_param(submitter_attrs[:fields], template_fields, submitter_uuid) | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |           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 |  |  |  |       end | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |       if template_fields != submission.template.fields |  |  |  |       if template_fields != submission.template.fields | 
			
		
	
	
		
		
			
				
					|  |  | @ -50,6 +44,39 @@ module Submissions | 
			
		
	
		
		
			
				
					
					|  |  |  |       submission |  |  |  |       submission | 
			
		
	
		
		
			
				
					
					|  |  |  |     end |  |  |  |     end | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     def process_readonly_fields_param(readonly_fields, template_fields, submitter_uuid) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |       return if readonly_fields.blank? | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |       template_fields.each do |f| | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         next if f['submitter_uuid'] != submitter_uuid || | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 (!f['name'].in?(readonly_fields) && | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                  !f['name'].parameterize.underscore.in?(readonly_fields)) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         f['readonly'] = true | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |       end | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     end | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     def process_fields_param(fields, template_fields, submitter_uuid) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |       return if fields.blank? | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |       template_fields.each do |f| | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         next if f['submitter_uuid'] != submitter_uuid | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         field_configs = fields.find { |e| e['name'] == f['name'] || e['name'] == f['name'].parameterize.underscore } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         next if field_configs.blank? | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         f['readonly'] = field_configs['readonly'] if field_configs['readonly'].present? | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         next if field_configs['validation_pattern'].blank? | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         f['validation'] = { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |           'pattern' => field_configs['validation_pattern'], | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |           'message' => field_configs['invalid_message'] | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         }.compact_blank | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |       end | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     end | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     def find_submitter_uuid(template, attrs, index) |  |  |  |     def find_submitter_uuid(template, attrs, index) | 
			
		
	
		
		
			
				
					
					|  |  |  |       attrs[:uuid].presence || |  |  |  |       attrs[:uuid].presence || | 
			
		
	
		
		
			
				
					
					|  |  |  |         template.submitters.find { |e| e['name'] == attrs[:role] }&.dig('uuid') || |  |  |  |         template.submitters.find { |e| e['name'] == attrs[:role] }&.dig('uuid') || | 
			
		
	
	
		
		
			
				
					|  |  | 
 |