<?php
/**
 * Jingga
 *
 * PHP Version 8.2
 *
 * @package   phpOMS\Localization
 * @copyright Dennis Eichhorn
 * @license   OMS License 2.2
 * @version   1.0.0
 * @link      https://jingga.app
 */
declare(strict_types=1);

namespace phpOMS\Localization;

/**
 * ISO 4217 country -> currency trait.
 *
 * @package phpOMS\Localization
 * @license OMS License 2.2
 * @link    https://jingga.app
 * @since   1.0.0
 */
trait ISO4217Trait
{
    /**
     * Get currency from country.
     *
     * @param string $country Country 2 code
     *
     * @return string
     *
     * @since 1.0.0
     */
    public static function currencyFromCountry(string $country) : string
    {
        switch (\strtoupper($country)) {
            case ISO3166TwoEnum::_AFG:
                return self::_USD;
            case ISO3166TwoEnum::_ALA:
                return self::_EUR;
            case ISO3166TwoEnum::_ALB:
                return self::_EUR;
            case ISO3166TwoEnum::_DZA:
                return self::_DZD;
            case ISO3166TwoEnum::_ASM:
                return self::_USD;
            case ISO3166TwoEnum::_AND:
                return self::_EUR;
            case ISO3166TwoEnum::_AGO:
                return self::_AOA;
            case ISO3166TwoEnum::_AIA:
                return self::_XCD;
            case ISO3166TwoEnum::_ATG:
                return self::_XCD;
            case ISO3166TwoEnum::_ARG:
                return self::_ARS;
            case ISO3166TwoEnum::_ARM:
                return self::_AMD;
            case ISO3166TwoEnum::_ABW:
                return self::_AWG;
            case ISO3166TwoEnum::_AUS:
                return self::_AUD;
            case ISO3166TwoEnum::_AUT:
                return self::_EUR;
            case ISO3166TwoEnum::_AZE:
                return self::_AZN;
            case ISO3166TwoEnum::_PRT:
                return self::_EUR;
            case ISO3166TwoEnum::_BHS:
                return self::_BSD;
            case ISO3166TwoEnum::_BHR:
                return self::_BHD;
            case ISO3166TwoEnum::_BGD:
                return self::_BDT;
            case ISO3166TwoEnum::_BRB:
                return self::_BBD;
            case ISO3166TwoEnum::_BLR:
                return self::_BYR;
            case ISO3166TwoEnum::_BEL:
                return self::_EUR;
            case ISO3166TwoEnum::_BLZ:
                return self::_BZD;
            case ISO3166TwoEnum::_BEN:
                return self::_XOF;
            case ISO3166TwoEnum::_BMU:
                return self::_BMD;
            case ISO3166TwoEnum::_BTN:
                return self::_BTN;
            case ISO3166TwoEnum::_BOL:
                return self::_BOB;
            case ISO3166TwoEnum::_BES:
                return self::_ANG;
            case ISO3166TwoEnum::_BIH:
                return self::_BAM;
            case ISO3166TwoEnum::_BWA:
                return self::_BWP;
            case ISO3166TwoEnum::_BRA:
                return self::_BRL;
            case ISO3166TwoEnum::_VGB:
                return self::_USD;
            case ISO3166TwoEnum::_BRN:
                return self::_BND;
            case ISO3166TwoEnum::_BGR:
                return self::_EUR;
            case ISO3166TwoEnum::_BFA:
                return self::_XOF;
            case ISO3166TwoEnum::_BDI:
                return self::_BIF;
            case ISO3166TwoEnum::_KHM:
                return self::_KHR;
            case ISO3166TwoEnum::_CMR:
                return self::_XAF;
            case ISO3166TwoEnum::_CAN:
                return self::_CAD;
            case ISO3166TwoEnum::_ESP:
                return self::_EUR;
            case ISO3166TwoEnum::_CPV:
                return self::_CVE;
            case ISO3166TwoEnum::_CYM:
                return self::_KYD;
            case ISO3166TwoEnum::_CAF:
                return self::_XAF;
            case ISO3166TwoEnum::_TCD:
                return self::_XAF;
            case ISO3166TwoEnum::_CHL:
                return self::_CLP;
            case ISO3166TwoEnum::_CHN:
                return self::_CNY;
            case ISO3166TwoEnum::_COL:
                return self::_COP;
            case ISO3166TwoEnum::_COM:
                return self::_USD;
            case ISO3166TwoEnum::_COG:
                return self::_XAF;
            case ISO3166TwoEnum::_COD:
                return self::_CDF;
            case ISO3166TwoEnum::_COK:
                return self::_NZD;
            case ISO3166TwoEnum::_CRI:
                return self::_CRC;
            case ISO3166TwoEnum::_HRV:
                return self::_EUR;
            case ISO3166TwoEnum::_CUW:
                return self::_USD;
            case ISO3166TwoEnum::_CYP:
                return self::_EUR;
            case ISO3166TwoEnum::_CZE:
                return self::_CZK;
            case ISO3166TwoEnum::_DNK:
                return self::_DKK;
            case ISO3166TwoEnum::_DJI:
                return self::_DJF;
            case ISO3166TwoEnum::_DMA:
                return self::_XCD;
            case ISO3166TwoEnum::_DOM:
                return self::_DOP;
            case ISO3166TwoEnum::_TLS:
                return self::_USD;
            case ISO3166TwoEnum::_ECU:
                return self::_USD;
            case ISO3166TwoEnum::_EGY:
                return self::_EGP;
            case ISO3166TwoEnum::_SLV:
                return self::_USD;
            case ISO3166TwoEnum::_GBR:
                return self::_GBP;
            case ISO3166TwoEnum::_GNQ:
                return self::_XAF;
            case ISO3166TwoEnum::_ERI:
                return self::_ERN;
            case ISO3166TwoEnum::_EST:
                return self::_EUR;
            case ISO3166TwoEnum::_ETH:
                return self::_ETB;
            case ISO3166TwoEnum::_FRO:
                return self::_DKK;
            case ISO3166TwoEnum::_FJI:
                return self::_FJD;
            case ISO3166TwoEnum::_FIN:
                return self::_EUR;
            case ISO3166TwoEnum::_FRA:
                return self::_EUR;
            case ISO3166TwoEnum::_GUF:
                return self::_EUR;
            case ISO3166TwoEnum::_PYF:
                return self::_XPF;
            case ISO3166TwoEnum::_GAB:
                return self::_XAF;
            case ISO3166TwoEnum::_GMB:
                return self::_GMD;
            case ISO3166TwoEnum::_GEO:
                return self::_GEL;
            case ISO3166TwoEnum::_DEU:
                return self::_EUR;
            case ISO3166TwoEnum::_GHA:
                return self::_GHS;
            case ISO3166TwoEnum::_GIB:
                return self::_GIP;
            case ISO3166TwoEnum::_GRC:
                return self::_EUR;
            case ISO3166TwoEnum::_GRL:
                return self::_DKK;
            case ISO3166TwoEnum::_GRD:
                return self::_XCD;
            case ISO3166TwoEnum::_GLP:
                return self::_EUR;
            case ISO3166TwoEnum::_GUM:
                return self::_USD;
            case ISO3166TwoEnum::_GTM:
                return self::_GTQ;
            case ISO3166TwoEnum::_GGY:
                return self::_GBP;
            case ISO3166TwoEnum::_GIN:
                return self::_GNF;
            case ISO3166TwoEnum::_GNB:
                return self::_XOF;
            case ISO3166TwoEnum::_GUY:
                return self::_GYD;
            case ISO3166TwoEnum::_HTI:
                return self::_HTG;
            case ISO3166TwoEnum::_NLD:
                return self::_EUR;
            case ISO3166TwoEnum::_HND:
                return self::_HNL;
            case ISO3166TwoEnum::_HKG:
                return self::_HKD;
            case ISO3166TwoEnum::_HUN:
                return self::_HUF;
            case ISO3166TwoEnum::_ISL:
                return self::_ISK;
            case ISO3166TwoEnum::_IND:
                return self::_INR;
            case ISO3166TwoEnum::_IDN:
                return self::_IDR;
            case ISO3166TwoEnum::_IRQ:
                return self::_IQD;
            case ISO3166TwoEnum::_IRL:
                return self::_EUR;
            case ISO3166TwoEnum::_ISR:
                return self::_ILS;
            case ISO3166TwoEnum::_ITA:
                return self::_EUR;
            case ISO3166TwoEnum::_CIV:
                return self::_XOF;
            case ISO3166TwoEnum::_JAM:
                return self::_JMD;
            case ISO3166TwoEnum::_JPN:
                return self::_JPY;
            case ISO3166TwoEnum::_JEY:
                return self::_GBP;
            case ISO3166TwoEnum::_JOR:
                return self::_JOD;
            case ISO3166TwoEnum::_KAZ:
                return self::_KZT;
            case ISO3166TwoEnum::_KEN:
                return self::_KES;
            case ISO3166TwoEnum::_KIR:
                return self::_AUD;
            case ISO3166TwoEnum::_KOR:
                return self::_KRW;
            case ISO3166TwoEnum::_FSM:
                return self::_USD;
            case ISO3166TwoEnum::_KWT:
                return self::_KWD;
            case ISO3166TwoEnum::_KGZ:
                return self::_KGS;
            case ISO3166TwoEnum::_LAO:
                return self::_LAK;
            case ISO3166TwoEnum::_LVA:
                return self::_EUR;
            case ISO3166TwoEnum::_LBN:
                return self::_LBP;
            case ISO3166TwoEnum::_LSO:
                return self::_LSL;
            case ISO3166TwoEnum::_LBR:
                return self::_LRD;
            case ISO3166TwoEnum::_LBY:
                return self::_LYD;
            case ISO3166TwoEnum::_LIE:
                return self::_CHF;
            case ISO3166TwoEnum::_LTU:
                return self::_EUR;
            case ISO3166TwoEnum::_LUX:
                return self::_EUR;
            case ISO3166TwoEnum::_MAC:
                return self::_MOP;
            case ISO3166TwoEnum::_MKD:
                return self::_EUR;
            case ISO3166TwoEnum::_MDG:
                return self::_MGA;
            case ISO3166TwoEnum::_MWI:
                return self::_MWK;
            case ISO3166TwoEnum::_MYS:
                return self::_MYR;
            case ISO3166TwoEnum::_MDV:
                return self::_MVR;
            case ISO3166TwoEnum::_MLI:
                return self::_XOF;
            case ISO3166TwoEnum::_MLT:
                return self::_EUR;
            case ISO3166TwoEnum::_MHL:
                return self::_USD;
            case ISO3166TwoEnum::_MTQ:
                return self::_EUR;
            case ISO3166TwoEnum::_MRT:
                return self::_MRO;
            case ISO3166TwoEnum::_MUS:
                return self::_MUR;
            case ISO3166TwoEnum::_MYT:
                return self::_EUR;
            case ISO3166TwoEnum::_MEX:
                return self::_MXN;
            case ISO3166TwoEnum::_MDA:
                return self::_MDL;
            case ISO3166TwoEnum::_MCO:
                return self::_EUR;
            case ISO3166TwoEnum::_MNG:
                return self::_MNT;
            case ISO3166TwoEnum::_MNE:
                return self::_EUR;
            case ISO3166TwoEnum::_MSR:
                return self::_XCD;
            case ISO3166TwoEnum::_MAR:
                return self::_MAD;
            case ISO3166TwoEnum::_MOZ:
                return self::_MZN;
            case ISO3166TwoEnum::_NAM:
                return self::_NAD;
            case ISO3166TwoEnum::_NPL:
                return self::_NPR;
            case ISO3166TwoEnum::_NCL:
                return self::_XPF;
            case ISO3166TwoEnum::_NZL:
                return self::_NZD;
            case ISO3166TwoEnum::_NIC:
                return self::_NIO;
            case ISO3166TwoEnum::_NER:
                return self::_XOF;
            case ISO3166TwoEnum::_NGA:
                return self::_NGN;
            case ISO3166TwoEnum::_NFK:
                return self::_AUD;
            case ISO3166TwoEnum::_MNP:
                return self::_USD;
            case ISO3166TwoEnum::_NOR:
                return self::_NOK;
            case ISO3166TwoEnum::_OMN:
                return self::_OMR;
            case ISO3166TwoEnum::_PAK:
                return self::_PKR;
            case ISO3166TwoEnum::_PLW:
                return self::_USD;
            case ISO3166TwoEnum::_PAN:
                return self::_PAB;
            case ISO3166TwoEnum::_PNG:
                return self::_PGK;
            case ISO3166TwoEnum::_PRY:
                return self::_PYG;
            case ISO3166TwoEnum::_PER:
                return self::_PEN;
            case ISO3166TwoEnum::_PHL:
                return self::_PHP;
            case ISO3166TwoEnum::_POL:
                return self::_PLN;
            case ISO3166TwoEnum::_PRI:
                return self::_USD;
            case ISO3166TwoEnum::_QAT:
                return self::_QAR;
            case ISO3166TwoEnum::_REU:
                return self::_EUR;
            case ISO3166TwoEnum::_ROU:
                return self::_RON;
            case ISO3166TwoEnum::_RUS:
                return self::_RUB;
            case ISO3166TwoEnum::_RWA:
                return self::_RWF;
            case ISO3166TwoEnum::_WSM:
                return self::_WST;
            case ISO3166TwoEnum::_SMR:
                return self::_EUR;
            case ISO3166TwoEnum::_STP:
                return self::_STD;
            case ISO3166TwoEnum::_SAU:
                return self::_SAR;
            case ISO3166TwoEnum::_SEN:
                return self::_XOF;
            case ISO3166TwoEnum::_SRB:
                return self::_EUR;
            case ISO3166TwoEnum::_SYC:
                return self::_SCR;
            case ISO3166TwoEnum::_SLE:
                return self::_SLL;
            case ISO3166TwoEnum::_SGP:
                return self::_SGD;
            case ISO3166TwoEnum::_SVK:
                return self::_EUR;
            case ISO3166TwoEnum::_SVN:
                return self::_EUR;
            case ISO3166TwoEnum::_SLB:
                return self::_SBD;
            case ISO3166TwoEnum::_ZAF:
                return self::_ZAR;
            case ISO3166TwoEnum::_LKA:
                return self::_LKR;
            case ISO3166TwoEnum::_BLM:
                return self::_EUR;
            case ISO3166TwoEnum::_KNA:
                return self::_XCD;
            case ISO3166TwoEnum::_VIR:
                return self::_USD;
            case ISO3166TwoEnum::_LCA:
                return self::_XCD;
            case ISO3166TwoEnum::_SXM:
                return self::_USD;
            case ISO3166TwoEnum::_VCT:
                return self::_XCD;
            case ISO3166TwoEnum::_SUR:
                return self::_SRD;
            case ISO3166TwoEnum::_SWZ:
                return self::_SZL;
            case ISO3166TwoEnum::_SWE:
                return self::_SEK;
            case ISO3166TwoEnum::_CHE:
                return self::_CHF;
            case ISO3166TwoEnum::_TWN:
                return self::_TWD;
            case ISO3166TwoEnum::_TJK:
                return self::_TJS;
            case ISO3166TwoEnum::_TZA:
                return self::_TZS;
            case ISO3166TwoEnum::_THA:
                return self::_THB;
            case ISO3166TwoEnum::_TGO:
                return self::_XOF;
            case ISO3166TwoEnum::_TON:
                return self::_TOP;
            case ISO3166TwoEnum::_TTO:
                return self::_TTD;
            case ISO3166TwoEnum::_TUN:
                return self::_TND;
            case ISO3166TwoEnum::_TUR:
                return self::_TRY;
            case ISO3166TwoEnum::_TKM:
                return self::_TMT;
            case ISO3166TwoEnum::_TCA:
                return self::_USD;
            case ISO3166TwoEnum::_TUV:
                return self::_AUD;
            case ISO3166TwoEnum::_UGA:
                return self::_UGX;
            case ISO3166TwoEnum::_UKR:
                return self::_UAH;
            case ISO3166TwoEnum::_ARE:
                return self::_AED;
            case ISO3166TwoEnum::_USA:
                return self::_USD;
            case ISO3166TwoEnum::_URY:
                return self::_UYU;
            case ISO3166TwoEnum::_UZB:
                return self::_UZS;
            case ISO3166TwoEnum::_VUT:
                return self::_VUV;
            case ISO3166TwoEnum::_VAT:
                return self::_EUR;
            case ISO3166TwoEnum::_VEN:
                return self::_VEF;
            case ISO3166TwoEnum::_VNM:
                return self::_VND;
            case ISO3166TwoEnum::_WLF:
                return self::_XPF;
            case ISO3166TwoEnum::_YEM:
                return self::_YER;
            case ISO3166TwoEnum::_ZMB:
                return self::_ZMK;
            case ISO3166TwoEnum::_ZWE:
                return self::_ZWD;
            default:
                return '';
        }
    }
}
