<?php

namespace Xentral\Modules\Country\Data;

use Xentral\Modules\Country\Exception\CountryInvalidArgumentException;

class CountryDataValidator
{
    /**
     * @param $isoAlpha3
     */
    public function ensureIso3($isoAlpha3)
    {
        if (strlen($isoAlpha3) !== 3) {
            throw new CountryInvalidArgumentException('ISO-3166-Alpha3-Feld ist nicht 3 Zeichen lang');
        }
    }

    /**
     * @param $isoAlpha2
     */
    public function ensureIso2($isoAlpha2)
    {
        if (strlen($isoAlpha2) !== 2) {
            throw new CountryInvalidArgumentException('ISO-3166-Alpha2-Feld ist nicht 2 Zeichen lang');
        }
    }

    /**
     * @param $isoNumeric
     */
    public function ensureIsoNumeric($isoNumeric)
    {
        if (strlen($isoNumeric) !== 3) {
            throw new CountryInvalidArgumentException(
                'Numerischer Ländercode (ISO-3166 numeric) ist nicht 3 Zeichen lang'
            );
        }
    }

    /**
     * @param $nameGerman
     */
    public function ensureNameGerman($nameGerman)
    {
        if (trim($nameGerman) === '') {
            throw new CountryInvalidArgumentException('Deutsche Bezeichnung ist leer');
        }
    }

    /**
     * @param $nameEnglish
     */
    public function ensureNameEnglish($nameEnglish)
    {
        if (trim($nameEnglish) === '') {
            throw new CountryInvalidArgumentException('Englische Bezeichnung ist leer');
        }
    }

    /**
     * @param $isEu
     */
    public function ensureIsEu($isEu)
    {
        if (!is_bool($isEu)) {
            throw new CountryInvalidArgumentException('Fehlerhafter EU-Parameter. Es sind nur boolsche Werte erlaubt.');
        }
    }
}