@@ -143,7 +143,7 @@ def define
143
143
next_node do
144
144
if calculator . passing_through_uk_border_control? && calculator . passport_country_is_taiwan?
145
145
outcome :outcome_transit_taiwan_through_border_control
146
- elsif calculator . passing_through_uk_border_control? && requires_a_visitor_in_transit_visa?
146
+ elsif calculator . passing_through_uk_border_control? && calculator . requires_a_visitor_in_transit_visa?
147
147
outcome :outcome_transit_leaving_airport
148
148
elsif calculator . passing_through_uk_border_control? && calculator . requires_a_direct_airside_transit_visa?
149
149
outcome :outcome_transit_leaving_airport_direct_airside_transit_visa
@@ -171,10 +171,14 @@ def define
171
171
end
172
172
173
173
next_node do
174
- if calculator . study_visit ?
175
- flow . outcome_study_visit
174
+ if calculator . work_visit? && calculator . staying_for_over_six_months ?
175
+ question :what_type_of_work?
176
176
elsif calculator . work_visit?
177
- flow . next_node_for_work_visit
177
+ work_outcome = flow . work_visit_outcome_lambda . call calculator
178
+ outcome work_outcome unless nil?
179
+ elsif calculator . study_visit?
180
+ study_outcome = flow . study_visit_lambda . call calculator
181
+ outcome study_outcome unless nil?
178
182
end
179
183
end
180
184
end
@@ -355,36 +359,47 @@ def travel_response_next_route(node)
355
359
end
356
360
end
357
361
358
- private
359
-
360
-
361
- def next_node_for_work_visit
362
- if calculator . staying_for_over_six_months?
363
- question :what_type_of_work?
364
- elsif calculator . staying_for_six_months_or_less? && calculator . has_passport_requiring_electronic_visa_waiver_list?
365
- outcome :outcome_work_waiver
366
- elsif calculator . staying_for_six_months_or_less? && calculator . short_work_visits_are_approved?
367
- # outcome 5.5 work N no visa needed
368
- outcome :outcome_work_n
369
- elsif calculator . staying_for_six_months_or_less?
370
- # outcome 5 work m visa needed short courses
371
- outcome :outcome_work_m
372
- end
362
+ def study_visit_lambda
363
+ lambda { |calculator |
364
+ if calculator . staying_for_over_six_months?
365
+ return :outcome_study_y # outcome 2 study y
366
+ elsif calculator . staying_for_six_months_or_less? && calculator . has_passport_requiring_electronic_visa_waiver_list?
367
+ outcome = :outcome_study_waiver
368
+ elsif calculator . staying_for_six_months_or_less? && calculator . passport_country_is_taiwan?
369
+ outcome = :outcome_study_waiver_taiwan
370
+ elsif calculator . staying_for_six_months_or_less? &&
371
+ ( calculator . requires_a_direct_airside_transit_visa? ||
372
+ calculator . passport_country_in_visa_national_list? ||
373
+ calculator . travel_document? )
374
+
375
+ outcome = :outcome_study_m # outcome 3 study m visa needed short courses
376
+ elsif calculator . staying_for_six_months_or_less? &&
377
+ ( calculator . passport_country_in_british_overseas_territories_list? ||
378
+ calculator . passport_country_in_non_visa_national_list? ||
379
+ calculator . passport_country_in_eea? )
380
+
381
+ outcome = :outcome_study_no_visa_needed # outcome 1 no visa needed
382
+ else
383
+ outcome = nil
384
+ end
385
+ return outcome
386
+ }
373
387
end
374
388
375
- def outcome_study_visit
376
- if calculator . staying_for_over_six_months?
377
- outcome :outcome_study_y # outcome 2 study y
378
- elsif calculator . staying_for_six_months_or_less? && calculator . has_passport_requiring_electronic_visa_waiver_list?
379
- outcome :outcome_study_waiver
380
- elsif calculator . staying_for_six_months_or_less? && calculator . passport_country_is_taiwan?
381
- outcome :outcome_study_waiver_taiwan
382
- elsif calculator . staying_for_six_months_or_less? && ( calculator . requires_a_direct_airside_transit_visa? ||
383
- calculator . passport_country_in_visa_national_list? ||
384
- calculator . travel_document? )
385
- outcome :outcome_study_m # outcome 3 study m visa needed short courses
386
- elsif calculator . staying_for_six_months_or_less? && ( calculator . passport_country_in_british_overseas_territories_list? || calculator . passport_country_in_non_visa_national_list? || calculator . passport_country_in_eea? )
387
- outcome :outcome_study_no_visa_needed # outcome 1 no visa needed
388
- end
389
+ def work_visit_outcome_lambda
390
+ lambda { |calculator |
391
+ if calculator . staying_for_six_months_or_less? && calculator . has_passport_requiring_electronic_visa_waiver_list?
392
+ outcome = :outcome_work_waiver
393
+ elsif calculator . staying_for_six_months_or_less? && calculator . short_work_visits_are_approved?
394
+ # outcome 5.5 work N no visa needed
395
+ outcome = :outcome_work_n
396
+ elsif calculator . staying_for_six_months_or_less?
397
+ # outcome 5 work m visa needed short courses
398
+ outcome = :outcome_work_m
399
+ else
400
+ outcome = nil
401
+ end
402
+ return outcome
403
+ }
389
404
end
390
405
end
0 commit comments