Skip to content

Commit eeb2b09

Browse files
authored
Merge pull request #356 from zigzagdev/feat/create-enum-for-studyregion
Create Enum StudyRegion
2 parents a19f7c7 + 4036cdf commit eeb2b09

3 files changed

Lines changed: 549 additions & 0 deletions

File tree

src/app/Enums/StudyRegion.php

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
<?php
2+
3+
namespace App\Enums;
4+
5+
enum StudyRegion: string
6+
{
7+
case AFRICA = 'Africa';
8+
case ASIA = 'Asia';
9+
case EUROPE = 'Europe';
10+
case NORTH_AMERICA = 'North America';
11+
case SOUTH_AMERICA = 'South America';
12+
case OCEANIA = 'Oceania';
13+
case UNKNOWN = 'Unknown';
14+
}
Lines changed: 280 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,280 @@
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

Comments
 (0)