1+ <?php
2+
3+ namespace App \Support ;
4+
5+ use App \Enums \StudyRegion ;
6+
7+ class StudyRegionResolver
8+ {
9+ private const COUNTRY_TO_REGION = [
10+ 'Japan ' => StudyRegion::ASIA ,
11+ 'China ' => StudyRegion::ASIA ,
12+ 'India ' => StudyRegion::ASIA ,
13+ 'Thailand ' => StudyRegion::ASIA ,
14+ 'Vietnam ' => StudyRegion::ASIA ,
15+ 'South Korea ' => StudyRegion::ASIA ,
16+
17+ 'France ' => StudyRegion::EUROPE ,
18+ 'Germany ' => StudyRegion::EUROPE ,
19+ 'Italy ' => StudyRegion::EUROPE ,
20+ 'Spain ' => StudyRegion::EUROPE ,
21+ 'United Kingdom ' => StudyRegion::EUROPE ,
22+
23+ 'Egypt ' => StudyRegion::AFRICA ,
24+ 'Kenya ' => StudyRegion::AFRICA ,
25+ 'South Africa ' => StudyRegion::AFRICA ,
26+ 'Morocco ' => StudyRegion::AFRICA ,
27+ 'Ethiopia ' => StudyRegion::AFRICA ,
28+
29+ 'Canada ' => StudyRegion::NORTH_AMERICA ,
30+ 'United States ' => StudyRegion::NORTH_AMERICA ,
31+ 'Mexico ' => StudyRegion::NORTH_AMERICA ,
32+ 'Guatemala ' => StudyRegion::NORTH_AMERICA ,
33+ 'Panama ' => StudyRegion::NORTH_AMERICA ,
34+
35+ 'Ecuador ' => StudyRegion::SOUTH_AMERICA ,
36+ 'Brazil ' => StudyRegion::SOUTH_AMERICA ,
37+ 'Argentina ' => StudyRegion::SOUTH_AMERICA ,
38+ 'Peru ' => StudyRegion::SOUTH_AMERICA ,
39+ 'Chile ' => StudyRegion::SOUTH_AMERICA ,
40+ 'Colombia ' => StudyRegion::SOUTH_AMERICA ,
41+
42+ 'Australia ' => StudyRegion::OCEANIA ,
43+ 'New Zealand ' => StudyRegion::OCEANIA ,
44+ 'Fiji ' => StudyRegion::OCEANIA ,
45+ 'Papua New Guinea ' => StudyRegion::OCEANIA ,
46+
47+ 'Andorra ' => StudyRegion::EUROPE ,
48+ 'United Arab Emirates ' => StudyRegion::ASIA ,
49+ 'Afghanistan ' => StudyRegion::ASIA ,
50+ 'Antigua and Barbuda ' => StudyRegion::NORTH_AMERICA ,
51+ 'Anguilla ' => StudyRegion::NORTH_AMERICA ,
52+ 'Albania ' => StudyRegion::EUROPE ,
53+ 'Armenia ' => StudyRegion::ASIA ,
54+ 'Angola ' => StudyRegion::AFRICA ,
55+ 'Antarctica ' => StudyRegion::UNKNOWN ,
56+ 'American Samoa ' => StudyRegion::OCEANIA ,
57+ 'Austria ' => StudyRegion::EUROPE ,
58+ 'Aruba ' => StudyRegion::NORTH_AMERICA ,
59+ 'Aland Islands ' => StudyRegion::EUROPE ,
60+ 'Azerbaijan ' => StudyRegion::ASIA ,
61+ 'Bosnia and Herzegovina ' => StudyRegion::EUROPE ,
62+ 'Barbados ' => StudyRegion::NORTH_AMERICA ,
63+ 'Bangladesh ' => StudyRegion::ASIA ,
64+ 'Belgium ' => StudyRegion::EUROPE ,
65+ 'Burkina Faso ' => StudyRegion::AFRICA ,
66+ 'Bulgaria ' => StudyRegion::EUROPE ,
67+ 'Bahrain ' => StudyRegion::ASIA ,
68+ 'Burundi ' => StudyRegion::AFRICA ,
69+ 'Benin ' => StudyRegion::AFRICA ,
70+ 'Saint Barthelemy ' => StudyRegion::NORTH_AMERICA ,
71+ 'Bermuda ' => StudyRegion::NORTH_AMERICA ,
72+ 'Brunei ' => StudyRegion::ASIA ,
73+ 'Bolivia ' => StudyRegion::SOUTH_AMERICA ,
74+ 'Caribbean Netherlands ' => StudyRegion::NORTH_AMERICA ,
75+ 'Bahamas ' => StudyRegion::NORTH_AMERICA ,
76+ 'Bhutan ' => StudyRegion::ASIA ,
77+ 'Bouvet Island ' => StudyRegion::UNKNOWN ,
78+ 'Botswana ' => StudyRegion::AFRICA ,
79+ 'Belarus ' => StudyRegion::EUROPE ,
80+ 'Belize ' => StudyRegion::NORTH_AMERICA ,
81+ 'Cocos (Keeling) Islands ' => StudyRegion::OCEANIA ,
82+ 'Democratic Republic of the Congo ' => StudyRegion::AFRICA ,
83+ 'Central African Republic ' => StudyRegion::AFRICA ,
84+ 'Republic of the Congo ' => StudyRegion::AFRICA ,
85+ 'Switzerland ' => StudyRegion::EUROPE ,
86+ "Cote d'Ivoire " => StudyRegion::AFRICA ,
87+ 'Cook Islands ' => StudyRegion::OCEANIA ,
88+ 'Cameroon ' => StudyRegion::AFRICA ,
89+ 'Costa Rica ' => StudyRegion::NORTH_AMERICA ,
90+ 'Cuba ' => StudyRegion::NORTH_AMERICA ,
91+ 'Cape Verde ' => StudyRegion::AFRICA ,
92+ 'Curacao ' => StudyRegion::NORTH_AMERICA ,
93+ 'Christmas Island ' => StudyRegion::OCEANIA ,
94+ 'Cyprus ' => StudyRegion::ASIA ,
95+ 'Czech Republic ' => StudyRegion::EUROPE ,
96+ 'Djibouti ' => StudyRegion::AFRICA ,
97+ 'Denmark ' => StudyRegion::EUROPE ,
98+ 'Dominica ' => StudyRegion::NORTH_AMERICA ,
99+ 'Dominican Republic ' => StudyRegion::NORTH_AMERICA ,
100+ 'Algeria ' => StudyRegion::AFRICA ,
101+ 'Estonia ' => StudyRegion::EUROPE ,
102+ 'Western Sahara ' => StudyRegion::AFRICA ,
103+ 'Eritrea ' => StudyRegion::AFRICA ,
104+ 'Finland ' => StudyRegion::EUROPE ,
105+ 'Falkland Islands ' => StudyRegion::SOUTH_AMERICA ,
106+ 'Federated States of Micronesia ' => StudyRegion::OCEANIA ,
107+ 'Faroe Islands ' => StudyRegion::EUROPE ,
108+ 'Gabon ' => StudyRegion::AFRICA ,
109+ 'Grenada ' => StudyRegion::NORTH_AMERICA ,
110+ 'Georgia ' => StudyRegion::ASIA ,
111+ 'French Guiana ' => StudyRegion::SOUTH_AMERICA ,
112+ 'Guernsey ' => StudyRegion::EUROPE ,
113+ 'Ghana ' => StudyRegion::AFRICA ,
114+ 'Gibraltar ' => StudyRegion::EUROPE ,
115+ 'Greenland ' => StudyRegion::NORTH_AMERICA ,
116+ 'Gambia ' => StudyRegion::AFRICA ,
117+ 'Guinea ' => StudyRegion::AFRICA ,
118+ 'Guadeloupe ' => StudyRegion::NORTH_AMERICA ,
119+ 'Equatorial Guinea ' => StudyRegion::AFRICA ,
120+ 'Greece ' => StudyRegion::EUROPE ,
121+ 'South Georgia and the South Sandwich Islands ' => StudyRegion::UNKNOWN ,
122+ 'Guam ' => StudyRegion::OCEANIA ,
123+ 'Guinea-Bissau ' => StudyRegion::AFRICA ,
124+ 'Guyana ' => StudyRegion::SOUTH_AMERICA ,
125+ 'Hong Kong ' => StudyRegion::ASIA ,
126+ 'Heard Island and McDonald Islands ' => StudyRegion::UNKNOWN ,
127+ 'Honduras ' => StudyRegion::NORTH_AMERICA ,
128+ 'Croatia ' => StudyRegion::EUROPE ,
129+ 'Haiti ' => StudyRegion::NORTH_AMERICA ,
130+ 'Hungary ' => StudyRegion::EUROPE ,
131+ 'Indonesia ' => StudyRegion::ASIA ,
132+ 'Ireland ' => StudyRegion::EUROPE ,
133+ 'Israel ' => StudyRegion::ASIA ,
134+ 'Isle of Man ' => StudyRegion::EUROPE ,
135+ 'British Indian Ocean Territory ' => StudyRegion::ASIA ,
136+ 'Iraq ' => StudyRegion::ASIA ,
137+ 'Iran ' => StudyRegion::ASIA ,
138+ 'Iceland ' => StudyRegion::EUROPE ,
139+ 'Jersey ' => StudyRegion::EUROPE ,
140+ 'Jamaica ' => StudyRegion::NORTH_AMERICA ,
141+ 'Jordan ' => StudyRegion::ASIA ,
142+ 'Kyrgyzstan ' => StudyRegion::ASIA ,
143+ 'Cambodia ' => StudyRegion::ASIA ,
144+ 'Kiribati ' => StudyRegion::OCEANIA ,
145+ 'Comoros ' => StudyRegion::AFRICA ,
146+ 'Saint Kitts and Nevis ' => StudyRegion::NORTH_AMERICA ,
147+ 'North Korea ' => StudyRegion::ASIA ,
148+ 'Kuwait ' => StudyRegion::ASIA ,
149+ 'Cayman Islands ' => StudyRegion::NORTH_AMERICA ,
150+ 'Kazakhstan ' => StudyRegion::ASIA ,
151+ 'Laos ' => StudyRegion::ASIA ,
152+ 'Lebanon ' => StudyRegion::ASIA ,
153+ 'Saint Lucia ' => StudyRegion::NORTH_AMERICA ,
154+ 'Liechtenstein ' => StudyRegion::EUROPE ,
155+ 'Sri Lanka ' => StudyRegion::ASIA ,
156+ 'Liberia ' => StudyRegion::AFRICA ,
157+ 'Lesotho ' => StudyRegion::AFRICA ,
158+ 'Lithuania ' => StudyRegion::EUROPE ,
159+ 'Luxembourg ' => StudyRegion::EUROPE ,
160+ 'Latvia ' => StudyRegion::EUROPE ,
161+ 'Libya ' => StudyRegion::AFRICA ,
162+ 'Monaco ' => StudyRegion::EUROPE ,
163+ 'Moldova ' => StudyRegion::EUROPE ,
164+ 'Montenegro ' => StudyRegion::EUROPE ,
165+ 'Saint Martin ' => StudyRegion::NORTH_AMERICA ,
166+ 'Madagascar ' => StudyRegion::AFRICA ,
167+ 'Marshall Islands ' => StudyRegion::OCEANIA ,
168+ 'North Macedonia ' => StudyRegion::EUROPE ,
169+ 'Mali ' => StudyRegion::AFRICA ,
170+ 'Myanmar ' => StudyRegion::ASIA ,
171+ 'Mongolia ' => StudyRegion::ASIA ,
172+ 'Macao ' => StudyRegion::ASIA ,
173+ 'Northern Mariana Islands ' => StudyRegion::OCEANIA ,
174+ 'Martinique ' => StudyRegion::NORTH_AMERICA ,
175+ 'Mauritania ' => StudyRegion::AFRICA ,
176+ 'Montserrat ' => StudyRegion::NORTH_AMERICA ,
177+ 'Malta ' => StudyRegion::EUROPE ,
178+ 'Mauritius ' => StudyRegion::AFRICA ,
179+ 'Maldives ' => StudyRegion::ASIA ,
180+ 'Malawi ' => StudyRegion::AFRICA ,
181+ 'Malaysia ' => StudyRegion::ASIA ,
182+ 'Mozambique ' => StudyRegion::AFRICA ,
183+ 'Namibia ' => StudyRegion::AFRICA ,
184+ 'New Caledonia ' => StudyRegion::OCEANIA ,
185+ 'Niger ' => StudyRegion::AFRICA ,
186+ 'Norfolk Island ' => StudyRegion::OCEANIA ,
187+ 'Nigeria ' => StudyRegion::AFRICA ,
188+ 'Nicaragua ' => StudyRegion::NORTH_AMERICA ,
189+ 'Netherlands ' => StudyRegion::EUROPE ,
190+ 'Norway ' => StudyRegion::EUROPE ,
191+ 'Nepal ' => StudyRegion::ASIA ,
192+ 'Nauru ' => StudyRegion::OCEANIA ,
193+ 'Niue ' => StudyRegion::OCEANIA ,
194+ 'Oman ' => StudyRegion::ASIA ,
195+ 'French Polynesia ' => StudyRegion::OCEANIA ,
196+ 'Philippines ' => StudyRegion::ASIA ,
197+ 'Pakistan ' => StudyRegion::ASIA ,
198+ 'Poland ' => StudyRegion::EUROPE ,
199+ 'Saint Pierre and Miquelon ' => StudyRegion::NORTH_AMERICA ,
200+ 'Pitcairn Islands ' => StudyRegion::OCEANIA ,
201+ 'Puerto Rico ' => StudyRegion::NORTH_AMERICA ,
202+ 'Palestine ' => StudyRegion::ASIA ,
203+ 'Portugal ' => StudyRegion::EUROPE ,
204+ 'Palau ' => StudyRegion::OCEANIA ,
205+ 'Paraguay ' => StudyRegion::SOUTH_AMERICA ,
206+ 'Qatar ' => StudyRegion::ASIA ,
207+ 'Reunion ' => StudyRegion::AFRICA ,
208+ 'Romania ' => StudyRegion::EUROPE ,
209+ 'Serbia ' => StudyRegion::EUROPE ,
210+ 'Russia ' => StudyRegion::EUROPE ,
211+ 'Rwanda ' => StudyRegion::AFRICA ,
212+ 'Saudi Arabia ' => StudyRegion::ASIA ,
213+ 'Solomon Islands ' => StudyRegion::OCEANIA ,
214+ 'Seychelles ' => StudyRegion::AFRICA ,
215+ 'Sudan ' => StudyRegion::AFRICA ,
216+ 'Sweden ' => StudyRegion::EUROPE ,
217+ 'Singapore ' => StudyRegion::ASIA ,
218+ 'Saint Helena ' => StudyRegion::AFRICA ,
219+ 'Slovenia ' => StudyRegion::EUROPE ,
220+ 'Svalbard and Jan Mayen ' => StudyRegion::EUROPE ,
221+ 'Slovakia ' => StudyRegion::EUROPE ,
222+ 'Sierra Leone ' => StudyRegion::AFRICA ,
223+ 'San Marino ' => StudyRegion::EUROPE ,
224+ 'Senegal ' => StudyRegion::AFRICA ,
225+ 'Somalia ' => StudyRegion::AFRICA ,
226+ 'Suriname ' => StudyRegion::SOUTH_AMERICA ,
227+ 'South Sudan ' => StudyRegion::AFRICA ,
228+ 'Sao Tome and Principe ' => StudyRegion::AFRICA ,
229+ 'El Salvador ' => StudyRegion::NORTH_AMERICA ,
230+ 'Sint Maarten ' => StudyRegion::NORTH_AMERICA ,
231+ 'Syria ' => StudyRegion::ASIA ,
232+ 'Eswatini ' => StudyRegion::AFRICA ,
233+ 'Turks and Caicos Islands ' => StudyRegion::NORTH_AMERICA ,
234+ 'Chad ' => StudyRegion::AFRICA ,
235+ 'French Southern Territories ' => StudyRegion::UNKNOWN ,
236+ 'Togo ' => StudyRegion::AFRICA ,
237+ 'Tajikistan ' => StudyRegion::ASIA ,
238+ 'Tokelau ' => StudyRegion::OCEANIA ,
239+ 'Timor-Leste ' => StudyRegion::ASIA ,
240+ 'Turkmenistan ' => StudyRegion::ASIA ,
241+ 'Tunisia ' => StudyRegion::AFRICA ,
242+ 'Tonga ' => StudyRegion::OCEANIA ,
243+ 'Turkey ' => StudyRegion::ASIA ,
244+ 'Trinidad and Tobago ' => StudyRegion::NORTH_AMERICA ,
245+ 'Tuvalu ' => StudyRegion::OCEANIA ,
246+ 'Taiwan ' => StudyRegion::ASIA ,
247+ 'Tanzania ' => StudyRegion::AFRICA ,
248+ 'Ukraine ' => StudyRegion::EUROPE ,
249+ 'Uganda ' => StudyRegion::AFRICA ,
250+ 'United States Minor Outlying Islands ' => StudyRegion::OCEANIA ,
251+ 'Uruguay ' => StudyRegion::SOUTH_AMERICA ,
252+ 'Uzbekistan ' => StudyRegion::ASIA ,
253+ 'Vatican City ' => StudyRegion::EUROPE ,
254+ 'Saint Vincent and the Grenadines ' => StudyRegion::NORTH_AMERICA ,
255+ 'Venezuela ' => StudyRegion::SOUTH_AMERICA ,
256+ 'British Virgin Islands ' => StudyRegion::NORTH_AMERICA ,
257+ 'United States Virgin Islands ' => StudyRegion::NORTH_AMERICA ,
258+ 'Vanuatu ' => StudyRegion::OCEANIA ,
259+ 'Wallis and Futuna ' => StudyRegion::OCEANIA ,
260+ 'Samoa ' => StudyRegion::OCEANIA ,
261+ 'Yemen ' => StudyRegion::ASIA ,
262+ 'Mayotte ' => StudyRegion::AFRICA ,
263+ 'Zambia ' => StudyRegion::AFRICA ,
264+ 'Zimbabwe ' => StudyRegion::AFRICA ,
265+ ];
266+
267+ public static function resolve (?string $ country ): StudyRegion
268+ {
269+ if ($ country === null ) {
270+ return StudyRegion::UNKNOWN ;
271+ }
272+
273+ $ normalized = trim ($ country );
274+ if ($ normalized === '' ) {
275+ return StudyRegion::UNKNOWN ;
276+ }
277+
278+ return self ::COUNTRY_TO_REGION [$ normalized ] ?? StudyRegion::UNKNOWN ;
279+ }
280+ }
0 commit comments