<?php

namespace App\Contribution\Enums;

enum Country: string {
    case AD = 'Andorra';
    case AE = 'Vereinigte Arabische Emirate';
    case AF = 'Afghanistan';
    case AG = 'Antigua und Barbuda';
    case AI = 'Anguilla';
    case AL = 'Albanien';
    case AM = 'Armenien';
    case AN = 'Niederländische Antillen';
    case AO = 'Angola';
    case AQ = 'Antarktis';
    case AR = 'Argentinien';
    case AS = 'Amerikanisch-Samoa';
    case AT = 'Österreich (Austria)';
    case AU = 'Australien';
    case AW = 'Aruba';
    case AZ = 'Azerbaijan';
    case BA = 'Bosnien-Herzegovina';
    case BB = 'Barbados';
    case BD = 'Bangladesh';
    case BE = 'Belgien';
    case BF = 'Burkina Faso';
    case BG = 'Bulgarien';
    case BH = 'Bahrain';
    case BI = 'Burundi';
    case BJ = 'Benin';
    case BM = 'Bermudas';
    case BN = 'Brunei Darussalam';
    case BO = 'Bolivien';
    case BR = 'Brasilien';
    case BS = 'Bahamas';
    case BT = 'Bhutan';
    case BV = 'Bouvet Island';
    case BW = 'Botswana';
    case BY = 'Weißrußland (Belarus)';
    case BZ = 'Belize';
    case CA = 'Canada';
    case CC = 'Cocos (Keeling) Islands';
    case CD = 'Demokratische Republik Kongo';
    case CF = 'Zentralafrikanische Republik';
    case CG = 'Kongo';
    case CH = 'Schweiz';
    case CI = 'Elfenbeinküste (Cote D’Ivoire)';
    case CK = 'Cook Islands';
    case CL = 'Chile';
    case CM = 'Kamerun';
    case CN = 'China';
    case CO = 'Kolumbien';
    case CR = 'Costa Rica';
    case CS = 'Tschechoslowakei (ehemalige)';
    case CU = 'Kuba';
    case CV = 'Kap Verde';
    case CX = 'Christmas Island';
    case CY = 'Zypern';
    case CZ = 'Tschechische Republik';
    case DE = 'Deutschland';
    case DJ = 'Djibouti';
    case DK = 'Dänemark';
    case DM = 'Dominica';
    case DO = 'Dominikanische Republik';
    case DZ = 'Algerien';
    case EC = 'Ecuador';
    case EE = 'Estland';
    case EG = 'Ägypten';
    case EH = 'Westsahara';
    case ER = 'Eritrea';
    case ES = 'Spanien';
    case ET = 'Äthiopien';
    case FI = 'Finnland';
    case FJ = 'Fiji';
    case FK = 'Falkland-Inseln (Malvinas)';
    case FM = 'Micronesien';
    case FO = 'Faröer-Inseln';
    case FR = 'Frankreich';
    case FX = 'France, Metropolitan';
    case GA = 'Gabon';
    case GD = 'Grenada';
    case GE = 'Georgien';
    case GF = 'Französisch Guiana';
    case GH = 'Ghana';
    case GI = 'Gibraltar';
    case GL = 'Grönland';
    case GM = 'Gambia';
    case GN = 'Guinea';
    case GP = 'Guadeloupe';
    case GQ = 'Äquatorialguinea';
    case GR = 'Griechenland';
    case GS = 'Südgeorgien und Südliche Sandwich-Inseln';
    case GT = 'Guatemala';
    case GU = 'Guam';
    case GW = 'Guinea-Bissau';
    case GY = 'Guyana';
    case HK = 'Kong Hong';
    case HM = 'Heard und Mc Donald Islands';
    case HN = 'Honduras';
    case HT = 'Haiti';
    case HU = 'Ungarn';
    case ID = 'Indonesien';
    case IE = 'Irland';
    case IL = 'Israel';
    case IN = 'Indien';
    case IO = 'British Indian Ocean Territory';
    case IQ = 'Irak';
    case IR = 'Iran (Islamische Republik)';
    case IS = 'Island';
    case IT = 'Italien';
    case JM = 'Jamaica';
    case JO = 'Jordanien';
    case JP = 'Japan';
    case KE = 'Kenya';
    case KG = 'Kirgisien';
    case KH = 'Königreich Kambodscha';
    case KI = 'Kiribati';
    case KM = 'Komoren';
    case KN = 'Saint Kitts und Nevis';
    case KP = 'Korea, Volksrepublik';
    case KR = 'Korea';
    case KW = 'Kuwait';
    case KY = 'Kayman Islands';
    case KZ = 'Kasachstan';
    case LA = 'Laos';
    case LB = 'Libanon';
    case LC = 'Saint Lucia';
    case LI = 'Liechtenstein';
    case LK = 'Sri Lanka';
    case LR = 'Liberia';
    case LS = 'Lesotho';
    case LT = 'Littauen';
    case LU = 'Luxemburg';
    case LV = 'Lettland';
    case LY = 'Libyen';
    case MA = 'Marokko';
    case MC = 'Monaco';
    case MD = 'Moldavien';
    case MG = 'Madagaskar';
    case MH = 'Marshall-Inseln';
    case MK = 'Mazedonien, ehem. Jugoslawische Republik';
    case ML = 'Mali';
    case MM = 'Myanmar';
    case MN = 'Mongolei';
    case MO = 'Macao';
    case MP = 'Nördliche Marianneninseln';
    case MQ = 'Martinique';
    case MR = 'Mauretanien';
    case MS = 'Montserrat';
    case MT = 'Malta';
    case MU = 'Mauritius';
    case MV = 'Malediven';
    case MW = 'Malawi';
    case MX = 'Mexico';
    case MY = 'Malaysien';
    case MZ = 'Mozambique';
    case NA = 'Namibia';
    case NC = 'Neu Kaledonien';
    case NE = 'Niger';
    case NF = 'Norfolk Island';
    case NG = 'Nigeria';
    case NI = 'Nicaragua';
    case NL = 'Niederlande';
    case NO = 'Norwegen';
    case NP = 'Nepal';
    case NR = 'Nauru';
    case NU = 'Niue';
    case NZ = 'Neuseeland';
    case OM = 'Oman';
    case PA = 'Panama';
    case PE = 'Peru';
    case PF = 'Französisch Polynesien';
    case PG = 'Papua Neuguinea';
    case PH = 'Philippinen';
    case PK = 'Pakistan';
    case PL = 'Polen';
    case PM = 'St. Pierre und Miquelon';
    case PN = 'Pitcairn';
    case PR = 'Puerto Rico';
    case PT = 'Portugal';
    case PW = 'Palau';
    case PY = 'Paraguay';
    case QA = 'Katar';
    case RE = 'Reunion';
    case RO = 'Rumänien';
    case RU = 'Russische Föderation';
    case RW = 'Ruanda';
    case SA = 'Saudi Arabien';
    case SB = 'Salomonen';
    case SC = 'Seychellen';
    case SD = 'Sudan';
    case SE = 'Schweden';
    case SG = 'Singapur';
    case SH = 'St. Helena';
    case SI = 'Slovenien';
    case SJ = 'Svalbard und Jan Mayen Islands';
    case SK = 'Slowakei';
    case SL = 'Sierra Leone';
    case SM = 'San Marino';
    case SN = 'Senegal';
    case SO = 'Somalia';
    case SR = 'Surinam';
    case ST = 'Sao Tome und Principe';
    case SV = 'El Salvador';
    case SY = 'Syrien, Arabische Republik';
    case SZ = 'Swaziland';
    case TC = 'Turk und Caicos-Inseln';
    case TD = 'Tschad';
    case TF = 'Französisches Südl.Territorium';
    case TG = 'Togo';
    case TH = 'Thailand';
    case TJ = 'Tadschikistan';
    case TK = 'Tokelau';
    case TM = 'Turkmenistan';
    case TN = 'Tunesien';
    case TO = 'Tonga';
    case TP = 'Ost-Timor';
    case TR = 'Türkei';
    case TT = 'Trinidad und Tobago';
    case TV = 'Tuvalu';
    case TW = 'Taiwan';
    case TZ = 'Tansania, United Republic of';
    case UA = 'Ukraine';
    case UG = 'Uganda';
    case GB = 'Großbritannien';
    case US = 'Vereinigte Staaten';
    case UM = 'Vereinigte Staaten, Minor Outlying Islands';
    case UY = 'Uruguay';
    case UZ = 'Usbekistan';
    case VA = 'Vatikanstaat';
    case VC = 'Saint Vincent und Grenadines';
    case VE = 'Venezuela';
    case VG = 'Virgin Islands (Britisch)';
    case VI = 'Virgin Islands (U.S.)';
    case VN = 'Vietnam';
    case VU = 'Vanuatu';
    case WF = 'Wallis und Futuna Islands';
    case WS = 'Samoa';
    case YE = 'Jemen';
    case YT = 'Mayotte';
    case YU = 'Jugoslawien';
    case ZA = 'Südafrika';
    case ZM = 'Sambia';
    case ZW = 'Zimbabw';

    /**
     * @return array<int, array{name: string, id: string}>
     */
    public static function forSelect(): array
    {
        return collect(static::cases())
            ->map(fn ($case) => ['id' => $case->value, 'name' => $case->value])
            ->toArray();
    }
}

