-
Notifications
You must be signed in to change notification settings - Fork 120
/
Copy pathmarriage-abroad.rb
322 lines (270 loc) · 12.5 KB
/
marriage-abroad.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
# Abbreviations used in this smart answer:
# CNI - Certificate of No Impediment
# CI - Channel Islands
# CP - Civil Partnership
# FCO - Foreign & Commonwealth Office
# IOM - Isle Of Man
# OS - Opposite Sex
# SS - Same Sex
module SmartAnswer
class MarriageAbroadFlow < Flow
def define
content_id "d0a95767-f6ab-432a-aebc-096e37fb3039"
name 'marriage-abroad'
status :published
satisfies_need "101000"
exclude_countries = %w(holy-see british-antarctic-territory the-occupied-palestinian-territories)
# Q1
country_select :country_of_ceremony?, exclude_countries: exclude_countries do
next_node_calculation :calculator do
Calculators::MarriageAbroadCalculator.new
end
next_node do |response|
calculator.ceremony_country = response
if calculator.ceremony_country == 'ireland'
question :partner_opposite_or_same_sex?
elsif %w(france monaco new-caledonia wallis-and-futuna).include?(calculator.ceremony_country)
question :marriage_or_pacs?
elsif calculator.ceremony_country_is_french_overseas_territory?
outcome :outcome_os_france_or_fot
else
question :legal_residency?
end
end
end
# Q2
multiple_choice :legal_residency? do
option :uk
option :ceremony_country
option :third_country
next_node do |response|
calculator.resident_of = response
if calculator.ceremony_country == 'switzerland'
question :partner_opposite_or_same_sex?
else
question :what_is_your_partners_nationality?
end
end
end
# Q3a
multiple_choice :marriage_or_pacs? do
option :marriage
option :pacs
next_node do |response|
calculator.marriage_or_pacs = response
if calculator.ceremony_country == 'monaco'
outcome :outcome_monaco
elsif calculator.want_to_get_married?
outcome :outcome_os_france_or_fot
else
outcome :outcome_cp_france_pacs
end
end
end
# Q4
multiple_choice :what_is_your_partners_nationality? do
option :partner_british
option :partner_local
option :partner_other
next_node do |response|
calculator.partner_nationality = response
question :partner_opposite_or_same_sex?
end
end
# Q5
multiple_choice :partner_opposite_or_same_sex? do
option :opposite_sex
option :same_sex
next_node do |response|
calculator.sex_of_your_partner = response
if calculator.ceremony_country == 'brazil' && calculator.resident_outside_of_uk?
outcome :outcome_brazil_not_living_in_the_uk
elsif calculator.ceremony_country == "netherlands"
outcome :outcome_marriage_via_local_authorities
elsif calculator.ceremony_country == "portugal"
outcome :outcome_portugal
elsif calculator.ceremony_country == "ireland"
outcome :outcome_ireland
elsif calculator.ceremony_country == "switzerland"
outcome :outcome_switzerland
elsif calculator.ceremony_country == "spain"
outcome :outcome_spain
elsif calculator.partner_is_opposite_sex?
if calculator.ceremony_country == 'hong-kong'
outcome :outcome_os_hong_kong
elsif calculator.ceremony_country == 'germany'
outcome :outcome_os_germany
elsif calculator.ceremony_country == 'oman'
outcome :outcome_os_oman
elsif calculator.ceremony_country == 'belarus'
outcome :outcome_os_belarus
elsif calculator.ceremony_country == 'kuwait'
outcome :outcome_os_kuwait
elsif calculator.ceremony_country == 'japan'
outcome :outcome_os_japan
elsif calculator.resident_of_third_country? &&
(
calculator.opposite_sex_consular_cni_country? ||
%w(kosovo).include?(calculator.ceremony_country) ||
calculator.opposite_sex_consular_cni_in_nearby_country?
)
outcome :outcome_consular_cni_os_residing_in_third_country
elsif calculator.ceremony_country == 'norway' && calculator.resident_of_third_country?
outcome :outcome_consular_cni_os_residing_in_third_country
elsif calculator.ceremony_country == 'italy'
outcome :outcome_os_italy
elsif calculator.ceremony_country == 'cambodia'
outcome :outcome_os_cambodia
elsif calculator.ceremony_country == "colombia"
outcome :outcome_os_colombia
elsif calculator.ceremony_country == 'germany'
outcome :outcome_os_germany
elsif calculator.ceremony_country == "kosovo"
outcome :outcome_os_kosovo
elsif calculator.ceremony_country == "indonesia"
outcome :outcome_os_indonesia
elsif calculator.ceremony_country == "laos" && calculator.partner_is_not_national_of_ceremony_country?
outcome :outcome_os_marriage_impossible_no_laos_locals
elsif calculator.ceremony_country == "laos"
outcome :outcome_os_laos
elsif calculator.ceremony_country == 'poland'
outcome :outcome_os_poland
elsif calculator.ceremony_country == 'slovenia'
outcome :outcome_os_slovenia
elsif calculator.opposite_sex_consular_cni_country? ||
(
calculator.resident_of_uk? &&
calculator.opposite_sex_no_marriage_related_consular_services_in_ceremony_country?
) ||
calculator.opposite_sex_consular_cni_in_nearby_country?
outcome :outcome_os_consular_cni
elsif calculator.ceremony_country == "finland" && calculator.resident_of_uk?
outcome :outcome_os_consular_cni
elsif calculator.ceremony_country == "norway" && calculator.resident_of_uk?
outcome :outcome_os_consular_cni
elsif calculator.opposite_sex_affirmation_country?
outcome :outcome_os_affirmation
elsif calculator.ceremony_country_in_the_commonwealth? ||
calculator.ceremony_country == 'zimbabwe'
outcome :outcome_os_commonwealth
elsif calculator.ceremony_country_is_british_overseas_territory?
outcome :outcome_os_bot
elsif calculator.opposite_sex_no_consular_cni_country? ||
(
calculator.resident_outside_of_uk? &&
calculator.opposite_sex_no_marriage_related_consular_services_in_ceremony_country?
)
outcome :outcome_os_no_cni
elsif calculator.opposite_sex_marriage_via_local_authorities?
outcome :outcome_marriage_via_local_authorities
elsif calculator.opposite_sex_in_other_countries?
outcome :outcome_os_other_countries
end
elsif calculator.partner_is_same_sex?
if %w(belgium norway).include?(calculator.ceremony_country)
outcome :outcome_ss_affirmation
elsif calculator.same_sex_ceremony_country_unknown_or_has_no_embassies?
outcome :outcome_os_no_cni
elsif calculator.ceremony_country == "malta"
outcome :outcome_ss_marriage_malta
elsif calculator.same_sex_marriage_not_possible?
outcome :outcome_ss_marriage_not_possible
elsif calculator.ceremony_country == "germany" && calculator.partner_is_national_of_ceremony_country?
outcome :outcome_cp_or_equivalent
elsif calculator.same_sex_marriage_country? ||
(
calculator.same_sex_marriage_country_when_couple_british? &&
calculator.partner_british?
) ||
calculator.same_sex_marriage_and_civil_partnership?
outcome :outcome_ss_marriage
elsif calculator.civil_partnership_equivalent_country?
outcome :outcome_cp_or_equivalent
elsif calculator.civil_partnership_cni_not_required_country?
outcome :outcome_cp_no_cni
elsif %w(canada south-africa).include?(calculator.ceremony_country)
outcome :outcome_cp_commonwealth_countries
elsif calculator.civil_partnership_consular_country?
outcome :outcome_cp_consular
else
outcome :outcome_cp_all_other_countries
end
end
end
end
outcome :outcome_ireland
outcome :outcome_switzerland
outcome :outcome_marriage_via_local_authorities
outcome :outcome_portugal
outcome :outcome_os_germany
outcome :outcome_os_kuwait
outcome :outcome_os_indonesia
outcome :outcome_os_laos
outcome :outcome_os_japan
outcome :outcome_os_hong_kong
outcome :outcome_os_kosovo
outcome :outcome_brazil_not_living_in_the_uk
outcome :outcome_os_cambodia
outcome :outcome_os_colombia
outcome :outcome_os_oman
outcome :outcome_os_poland
outcome :outcome_os_slovenia
outcome :outcome_monaco
outcome :outcome_spain
outcome :outcome_os_commonwealth
outcome :outcome_os_bot
outcome :outcome_os_belarus
outcome :outcome_os_italy
outcome :outcome_consular_cni_os_residing_in_third_country
outcome :outcome_os_consular_cni do
precalculate :three_day_residency_requirement_applies do
%w(albania algeria angola armenia austria azerbaijan bahrain bolivia bosnia-and-herzegovina bulgaria chile croatia cuba democratic-republic-of-congo denmark dominican-republic el-salvador estonia ethiopia georgia greece guatemala honduras hungary iceland italy kazakhstan kosovo kuwait kyrgyzstan latvia lithuania luxembourg macedonia mexico moldova montenegro nepal panama romania russia serbia slovenia sudan sweden tajikistan tunisia turkmenistan ukraine uzbekistan venezuela)
end
precalculate :three_day_residency_handled_by_exception do
%w(croatia italy russia)
end
precalculate :no_birth_cert_requirement do
three_day_residency_requirement_applies - ['italy']
end
precalculate :cni_notary_public_countries do
%w(albania algeria angola armenia austria azerbaijan bahrain bolivia bosnia-and-herzegovina bulgaria croatia cuba estonia georgia greece iceland kazakhstan kuwait kyrgyzstan libya lithuania luxembourg mexico moldova montenegro russia serbia sweden tajikistan tunisia turkmenistan ukraine uzbekistan venezuela)
end
precalculate :no_document_download_link_if_os_resident_of_uk_countries do
%w(albania algeria angola armenia austria azerbaijan bahrain bolivia bosnia-and-herzegovina bulgaria croatia cuba estonia georgia greece iceland italy japan kazakhstan kuwait kyrgyzstan libya lithuania luxembourg macedonia mexico moldova montenegro nicaragua russia serbia sweden tajikistan tunisia turkmenistan ukraine uzbekistan venezuela)
end
precalculate :cni_posted_after_14_days_countries do
%w(jordan qatar saudi-arabia united-arab-emirates yemen)
end
precalculate :ceremony_and_residency_in_croatia do
(calculator.ceremony_country == 'croatia' && calculator.resident_of_ceremony_country?)
end
precalculate :birth_cert_inclusion do
if no_birth_cert_requirement.exclude?(calculator.ceremony_country)
'_incl_birth_cert'
end
end
precalculate :notary_public_inclusion do
if cni_notary_public_countries.include?(calculator.ceremony_country) || %w(japan macedonia).include?(calculator.ceremony_country)
'_notary_public'
end
end
end
outcome :outcome_os_france_or_fot
outcome :outcome_os_affirmation
outcome :outcome_os_no_cni
outcome :outcome_os_other_countries
#CP outcomes
outcome :outcome_cp_or_equivalent
outcome :outcome_cp_france_pacs
outcome :outcome_cp_no_cni
outcome :outcome_cp_commonwealth_countries
outcome :outcome_cp_consular
outcome :outcome_cp_all_other_countries
outcome :outcome_ss_marriage
outcome :outcome_ss_marriage_not_possible
outcome :outcome_ss_marriage_malta
outcome :outcome_ss_affirmation
outcome :outcome_os_marriage_impossible_no_laos_locals
end
end
end