|  |  | @ -11,6 +11,9 @@ module Submitters | 
			
		
	
		
		
			
				
					
					|  |  |  |     UnknownSubmitterName = Class.new(BaseError) |  |  |  |     UnknownSubmitterName = Class.new(BaseError) | 
			
		
	
		
		
			
				
					
					|  |  |  |     UnableToDownload = Class.new(BaseError) |  |  |  |     UnableToDownload = Class.new(BaseError) | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     TRUE_VALUES = ['1', 'true', true, 'TRUE', 'True', 'yes', 'YES', 'Yes'].freeze | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     FALSE_VALUES = ['0', 'false', false, 'FALSE', 'False', 'no', 'NO', 'No'].freeze | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     module_function |  |  |  |     module_function | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     def call(template, values, submitter_name: nil, for_submitter: nil, throw_errors: false) |  |  |  |     def call(template, values, submitter_name: nil, for_submitter: nil, throw_errors: false) | 
			
		
	
	
		
		
			
				
					|  |  | @ -50,11 +53,25 @@ module Submitters | 
			
		
	
		
		
			
				
					
					|  |  |  |     end |  |  |  |     end | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     def normalize_value(field, value) |  |  |  |     def normalize_value(field, value) | 
			
		
	
		
		
			
				
					
					|  |  |  |       if field['type'] == 'text' && value.present? |  |  |  |       if field['type'] == 'checkbox' | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         return true if TRUE_VALUES.include?(value) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         return false if FALSE_VALUES.include?(value) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |       end | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |       return nil if value.blank? | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |       if field['type'] == 'text' | 
			
		
	
		
		
			
				
					
					|  |  |  |         value.to_s |  |  |  |         value.to_s | 
			
		
	
		
		
			
				
					
					|  |  |  |       elsif field['type'] == 'number' && value.present? |  |  |  |       elsif field['type'] == 'number' | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |         (value.to_f % 1).zero? ? value.to_i : value.to_f |  |  |  |         (value.to_f % 1).zero? ? value.to_i : value.to_f | 
			
		
	
		
		
			
				
					
					|  |  |  |       elsif field['type'] == 'date' && value.present? && value != '{{date}}' |  |  |  |       elsif field['type'] == 'date' && value != '{{date}}' | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         normalize_date(field, value) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |       else | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         value | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |       end | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     end | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     def normalize_date(field, value) | 
			
		
	
		
		
			
				
					
					|  |  |  |       if value.is_a?(Integer) |  |  |  |       if value.is_a?(Integer) | 
			
		
	
		
		
			
				
					
					|  |  |  |         Time.zone.at(value.to_s.first(10).to_i).to_date.to_s |  |  |  |         Time.zone.at(value.to_s.first(10).to_i).to_date.to_s | 
			
		
	
		
		
			
				
					
					|  |  |  |       elsif value.gsub(/\w/, '0') == field.dig('preferences', 'format').to_s.gsub(/\w/, '0') |  |  |  |       elsif value.gsub(/\w/, '0') == field.dig('preferences', 'format').to_s.gsub(/\w/, '0') | 
			
		
	
	
		
		
			
				
					|  |  | @ -62,9 +79,6 @@ module Submitters | 
			
		
	
		
		
			
				
					
					|  |  |  |       else |  |  |  |       else | 
			
		
	
		
		
			
				
					
					|  |  |  |         Date.parse(value).to_s |  |  |  |         Date.parse(value).to_s | 
			
		
	
		
		
			
				
					
					|  |  |  |       end |  |  |  |       end | 
			
		
	
		
		
			
				
					
					|  |  |  |       else |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |         value |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |       end |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |     rescue Date::Error => e |  |  |  |     rescue Date::Error => e | 
			
		
	
		
		
			
				
					
					|  |  |  |       Rollbar.warning(e) if defined?(Rollbar) |  |  |  |       Rollbar.warning(e) if defined?(Rollbar) | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
	
		
		
			
				
					|  |  | 
 |