|  |  | @ -38,6 +38,7 @@ module Submitters | 
			
		
	
		
		
			
				
					
					|  |  |  |         submitter.ua = request.user_agent |  |  |  |         submitter.ua = request.user_agent | 
			
		
	
		
		
			
				
					
					|  |  |  |         submitter.values = merge_default_values(submitter) |  |  |  |         submitter.values = merge_default_values(submitter) | 
			
		
	
		
		
			
				
					
					|  |  |  |         submitter.values = merge_formula_values(submitter) |  |  |  |         submitter.values = merge_formula_values(submitter) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         submitter.values = maybe_remove_condition_values(submitter) | 
			
		
	
		
		
			
				
					
					|  |  |  |         submitter.values = submitter.values.transform_values do |v| |  |  |  |         submitter.values = submitter.values.transform_values do |v| | 
			
		
	
		
		
			
				
					
					|  |  |  |           v == '{{date}}' ? Time.current.in_time_zone(submitter.account.timezone).to_date.to_s : v |  |  |  |           v == '{{date}}' ? Time.current.in_time_zone(submitter.account.timezone).to_date.to_s : v | 
			
		
	
		
		
			
				
					
					|  |  |  |         end |  |  |  |         end | 
			
		
	
	
		
		
			
				
					|  |  | @ -128,6 +129,47 @@ module Submitters | 
			
		
	
		
		
			
				
					
					|  |  |  |                                 with_time:) |  |  |  |                                 with_time:) | 
			
		
	
		
		
			
				
					
					|  |  |  |     end |  |  |  |     end | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     def maybe_remove_condition_values(submitter) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |       fields_uuid_index = submitter.submission.template_fields.index_by { |e| e['uuid'] } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |       submitter.submission.template_fields.each do |field| | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         next if field['submitter_uuid'] != submitter.uuid | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         submitter.values.delete(field['uuid']) unless check_field_condition(submitter, field, fields_uuid_index) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |       end | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |       submitter.values | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     end | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     def check_field_condition(submitter, field, fields_uuid_index) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |       return true if field['conditions'].blank? | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |       submitter_values = submitter.values | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |       field['conditions'].reduce(true) do |acc, c| | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         case c['action'] | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         when 'empty', 'unchecked' | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |           acc && submitter_values[c['field_uuid']].blank? | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         when 'not_empty', 'checked' | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |           acc && submitter_values[c['field_uuid']].present? | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         when 'equal', 'contains' | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |           field = fields_uuid_index[c['field_uuid']] | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |           option = field['options'].find { |o| o['uuid'] == c['value'] } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |           values = Array.wrap(submitter_values[c['field_uuid']]) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |           acc && values.include?(option['value'].presence || "Option #{field['options'].index(option)}") | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         when 'not_equal', 'does_not_contain' | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |           field = fields_uuid_index[c['field_uuid']] | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |           option = field['options'].find { |o| o['uuid'] == c['value'] } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |           values = Array.wrap(submitter_values[c['field_uuid']]) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |           acc && values.exclude?(option['value'].presence || "Option #{field['options'].index(option)}") | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         else | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |           acc | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         end | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |       end | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     end | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     def replace_default_variables(value, attrs, submission, with_time: false) |  |  |  |     def replace_default_variables(value, attrs, submission, with_time: false) | 
			
		
	
		
		
			
				
					
					|  |  |  |       return value if value.in?([true, false]) |  |  |  |       return value if value.in?([true, false]) | 
			
		
	
		
		
			
				
					
					|  |  |  |       return if value.blank? |  |  |  |       return if value.blank? | 
			
		
	
	
		
		
			
				
					|  |  | 
 |