package cz.moneta.test.dsl.util.data.client;

import java.util.EnumSet;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;

public enum OccupationType {
    //TODO - feel free to translate
    UKLIZECKA("1", "uklízečka"),
    DELNIK_REMESLNIK("2", "dělník/řemeslník"),
    TECHNIK_RIDIC("3", "technik/řidič"),
    PRODAVAC_PRODEJCE("4", "prodavač/prodejce"),
    UCITEL("5", "učitel"),
    ZDRAVOTNI_SESTRA_ZDRAVOTNI_PERSONAL("6", "zdravotní sestra/zdravotní personál"),
    NIZSI_VEDOUCI_POZICE("7", "nižší vedoucí pozice"),
    MANAZER_REDITEL("8", "manager/ředitel"),
    OZBROJENE_STATNI_SLOZKY("9", "ozbrojené státní složky"),
    PRAVNIK_ADVOKAT("10", "právník/advokát"),
    ADMINISTRATIVNI_BANKOVNI_PRACOVNIK_UCETNI("11", "admin/bankovní pracovník/účetní"),
    ODBORNY_PRACOVNIK_EXPERT_PILOT("12", "odborný pracovník/expert/pilot"),
    LEKAR_ZUBAR("13", "lékař/zubař"),
    VETERINAR("14", "veterinář"),
    UMELECKA_PROFESE("15", "umělecká profese"),
    SPORTOVEC_SPORTOVNI_TRENER("16", "sportovec/sportovní trenér"),
    STATNI_SPRAVA("17", "státní správa"),
    STAROSTA_POSLANEC_HEJTMAN_POLITIK("18", "starosta/poslanec/hejtman/politik"),
    SOUDCE_STATNI_ZASTUPCE("19", "soudce/státní zástupce"),
    PRACOVNIK_V_GASTRONOMII("20", "pracovník v gastronomii"),
    STAVEBNI_PROJEKTANT_STATIK_ARCHITEKT("21", "staveb. projektant/statik/architekt"),
    IT_GUYS("22", "it programátor/software developer"),
    MASER_FYZIOTERAPEUT("23", "masér/fyzioterapeut"),
    KADERNICE_KOSMETICKA_MANIKERKA("24", "kadeřnice/kosmetička/manikérka"),
    TLUMOCNIK_PREKLADATEL("25", "tlumočník/překladatel"),
    PORADCE_HR_KONZULTANT_REALITNI_MAKLER("26", "poradce/hr konzultant/real. makléř"),
    PSYCHOLOG_PSYCHIATR_TERAPEUT("27", "psycholog/psychiatr/terapeut"),
    PRUVODCI_REVIZOR_OBSLUZNY_PERSONAL("28", "průvodčí/revizor/obslužný personál"),
    OPERATOR_CALL_CENTRA("29", "operátor call centra"),
    SVOBODNE_POVOLANI("30", "svobodné povolání- zaměstnanec"),
    PODNIKATEL("67", "podnikatel");

    private static final Map<String, OccupationType> UFO_VALUES_LOOKUP = EnumSet.allOf(OccupationType.class).stream()
            .collect(Collectors.toMap(os -> os.ufoValue, Function.identity()));
    private final String hcisValue;
    private final String ufoValue;

    OccupationType(String hcisValue, String ufoValue) {
        this.hcisValue = hcisValue;
        this.ufoValue = ufoValue;
    }

    public static OccupationType getByUfoValue(String ufoValue) {
        return UFO_VALUES_LOOKUP.get(ufoValue);
    }

    public String getHCisValue() {
        return hcisValue;
    }

    public String getUfoValue() {
        return ufoValue;
    }
}
