You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							60 lines
						
					
					
						
							2.1 KiB
						
					
					
				
			
		
		
	
	
							60 lines
						
					
					
						
							2.1 KiB
						
					
					
				| class Form::Lettings::Questions::SchemeId < ::Form::Question | |
|   def initialize(_id, hsh, page) | |
|     super("scheme_id", hsh, page) | |
|     @type = "select" | |
|     @answer_options = answer_options | |
|     @top_guidance_partial = "finding_scheme" | |
|     @bottom_guidance_partial = "scheme_selection" | |
|     @question_number = QUESTION_NUMBER_FROM_YEAR[form.start_date.year] || QUESTION_NUMBER_FROM_YEAR[QUESTION_NUMBER_FROM_YEAR.keys.max] if form.start_date.present? | |
|     @inferred_answers = { | |
|       "location.name": { | |
|         "scheme_has_multiple_locations?": false, | |
|       }, | |
|     } | |
|   end | |
|  | |
|   def answer_options | |
|     answer_opts = { "" => "Select an option" } | |
|     return answer_opts unless ActiveRecord::Base.connected? | |
|  | |
|     Scheme.visible.select(:id, :service_name, :primary_client_group, | |
|                           :secondary_client_group).each_with_object(answer_opts) do |scheme, hsh| | |
|       hsh[scheme.id.to_s] = scheme | |
|       hsh | |
|     end | |
|   end | |
|  | |
|   def displayed_answer_options(lettings_log, _user = nil) | |
|     organisation = lettings_log.owning_organisation || lettings_log.assigned_to&.organisation | |
|     schemes = if organisation | |
|                 Scheme.visible.includes(:locations).select(:id).where(owning_organisation_id: organisation.id, | |
|                                                                       confirmed: true) | |
|               else | |
|                 Scheme.visible.includes(:locations).select(:id).where(confirmed: true) | |
|               end | |
|     filtered_scheme_ids = schemes.joins(:locations).merge(Location.started_in_2_weeks).map(&:id) | |
|     answer_options.select do |k, _v| | |
|       filtered_scheme_ids.include?(k.to_i) || k.blank? | |
|     end | |
|   end | |
|  | |
|   def hidden_in_check_answers?(lettings_log, _current_user = nil) | |
|     !supported_housing_selected?(lettings_log) | |
|   end | |
|  | |
|   def get_extra_check_answer_value(lettings_log) | |
|     lettings_log.form.get_question("postcode_full", nil).label_from_value(lettings_log.postcode_full) unless lettings_log.scheme_has_multiple_locations? | |
|   end | |
|  | |
| private | |
|  | |
|   def supported_housing_selected?(lettings_log) | |
|     lettings_log.needstype == 2 | |
|   end | |
|  | |
|   def selected_answer_option_is_derived?(_lettings_log) | |
|     false | |
|   end | |
|  | |
|   QUESTION_NUMBER_FROM_YEAR = { 2023 => 9, 2024 => 4 }.freeze | |
| end
 | |
| 
 |