mirror of https://github.com/docusealco/docuseal
				
				
				
			
							parent
							
								
									1ad3e45519
								
							
						
					
					
						commit
						990e4020e9
					
				| @ -0,0 +1,61 @@ | |||||||
|  | # frozen_string_literal: true | ||||||
|  | 
 | ||||||
|  | module Submissions | ||||||
|  |   module NormalizeParamUtils | ||||||
|  |     module_function | ||||||
|  | 
 | ||||||
|  |     def normalize_submissions_params!(submissions_params, template) | ||||||
|  |       attachments = [] | ||||||
|  | 
 | ||||||
|  |       Array.wrap(submissions_params).each do |submission| | ||||||
|  |         submission[:submitters].each_with_index do |submitter, index| | ||||||
|  |           _, new_attachments = normalize_submitter_params!(submitter, template, index) | ||||||
|  | 
 | ||||||
|  |           attachments.push(*new_attachments) | ||||||
|  |         end | ||||||
|  |       end | ||||||
|  | 
 | ||||||
|  |       [submissions_params, attachments] | ||||||
|  |     end | ||||||
|  | 
 | ||||||
|  |     def normalize_submitter_params!(submitter_params, template, index = nil, for_submitter: nil) | ||||||
|  |       default_values = submitter_params[:values] || {} | ||||||
|  | 
 | ||||||
|  |       submitter_params[:fields]&.each do |f| | ||||||
|  |         default_values[f[:name]] = f[:default_value] if f[:default_value].present? | ||||||
|  |       end | ||||||
|  | 
 | ||||||
|  |       return submitter_params if default_values.blank? | ||||||
|  | 
 | ||||||
|  |       values, new_attachments = | ||||||
|  |         Submitters::NormalizeValues.call(template, | ||||||
|  |                                          default_values, | ||||||
|  |                                          submitter_name: submitter_params[:role] || | ||||||
|  |                                                          template.submitters.dig(index, 'name'), | ||||||
|  |                                          for_submitter:, | ||||||
|  |                                          throw_errors: true) | ||||||
|  | 
 | ||||||
|  |       submitter_params[:values] = values | ||||||
|  | 
 | ||||||
|  |       [submitter_params, new_attachments] | ||||||
|  |     end | ||||||
|  | 
 | ||||||
|  |     def save_default_value_attachments!(attachments, submitters) | ||||||
|  |       return if attachments.blank? | ||||||
|  | 
 | ||||||
|  |       attachments_index = attachments.index_by(&:uuid) | ||||||
|  | 
 | ||||||
|  |       submitters.each do |submitter| | ||||||
|  |         submitter.values.to_a.each do |_, value| | ||||||
|  |           attachment = attachments_index[value] | ||||||
|  | 
 | ||||||
|  |           next unless attachment | ||||||
|  | 
 | ||||||
|  |           attachment.record = submitter | ||||||
|  | 
 | ||||||
|  |           attachment.save! | ||||||
|  |         end | ||||||
|  |       end | ||||||
|  |     end | ||||||
|  |   end | ||||||
|  | end | ||||||
					Loading…
					
					
				
		Reference in new issue