using System;
using System.Collections.Generic;
using Newtonsoft.Json;
using System.ComponentModel.DataAnnotations.Schema;

namespace Parser_Xls_Integral
{
    // Sheet 1: Prehľad: Priepusty za celú dopravnú cestu
    [Table("priepusty")]
    public class Priepusty
    {
        [JsonProperty("or")]
        public string OR { get; set; }

        [JsonProperty("spravca")]
        public string Spravca { get; set; }

        [JsonProperty("tu")]
        public string TU { get; set; }

        [JsonProperty("du")]
        public string DU { get; set; }

        [JsonProperty("rozchod")]
        public string Rozchod { get; set; }

        [JsonProperty("kategoria")]
        public string Kategoria { get; set; }

        [JsonProperty("oznacenie_rozchodu")]
        public string OznačenieRozchodu { get; set; }

        [JsonProperty("trakcia")]
        public string Trakcia { get; set; }

        [JsonProperty("koridory")]
        public string Koridory { get; set; }

        [JsonProperty("kategoria_zatazenia_trate")]
        public string KategoriaZatazeniaTrate { get; set; }

        [JsonProperty("cislo_ttp")]
        public string CisloTTP { get; set; }

        [JsonProperty("jic_priepustu")]
        public string JICPriepustu { get; set; }

        [JsonProperty("km_poloha_stredu_priepustu")]
        public string KmPolohaStreduPriepustu { get; set; }

        [JsonProperty("interne_cislo_sap")]
        public string InterneCisloSAP { get; set; }

        [JsonProperty("typ_priepustu")]
        public string TypPriepustu { get; set; }

        [JsonProperty("umiestnenie")]
        public string Umiestnenie { get; set; }

        [JsonProperty("tech_miesto_udrzby")]
        public string TechMiestoUdrzby { get; set; }

        [JsonProperty("obstaravacia_cena")]
        public string ObstaravaciaCena { get; set; }

        [JsonProperty("rok_stavby_opor")]
        public string RokStavbyOpor { get; set; }

        [JsonProperty("rok_prestavby_opor")]
        public string RokPrestavbyOpor { get; set; }

        [JsonProperty("celkovy_pocet_kolaji_na_priepuste")]
        public string CelkovyPocetKolajiNaPriepuste { get; set; }

        [JsonProperty("pocet_nosnych_konstrukcii")]
        public string PocetNosnychKonstrukcii { get; set; }

        [JsonProperty("kolajove_rozvetvenie")]
        public string KolajoveRozvetvenie { get; set; }

        [JsonProperty("kolajove_styky")]
        public string KolajoveStyky { get; set; }

        [JsonProperty("umiestnenie_kabeloveho_zlaby")]
        public string UmiestnenieKabelovehoZlaby { get; set; }

        [JsonProperty("zem_sirka")]
        public string ZemSirka { get; set; }

        [JsonProperty("zem_dlzka")]
        public string ZemDlzka { get; set; }

        [JsonProperty("obec")]
        public string Obec { get; set; }

        [JsonProperty("kataster")]
        public string Kataster { get; set; }

        [JsonProperty("okres")]
        public string Okres { get; set; }

        [JsonProperty("kraj")]
        public string Kraj { get; set; }

        [JsonProperty("dlzka_priepustu")]
        public string DlzkaPriepustu { get; set; }

        [JsonProperty("vyska_priepustu")]
        public string VyskaPriepustu { get; set; }

        [JsonProperty("sirka_priepustu")]
        public string SirkaPriepustu { get; set; }

        [JsonProperty("celk_dlzka_nk_priepustu")]
        public string CelkDlzkaNKPriepustu { get; set; }

        [JsonProperty("pocet_poli_rur")]
        public string PocetPoliRur { get; set; }

        [JsonProperty("vyska_1_opory")]
        public string Vyska1Opory { get; set; }

        [JsonProperty("vyska_2_opory")]
        public string Vyska2Opory { get; set; }

        [JsonProperty("staticky_system_1_opory")]
        public string StatickySystem1Opory { get; set; }

        [JsonProperty("staticky_system_2_opory")]
        public string StatickySystem2Opory { get; set; }

        [JsonProperty("druh_kridel_1_opory")]
        public string DruhKridel1Opory { get; set; }

        [JsonProperty("druh_kridel_2_opory")]
        public string DruhKridel2Opory { get; set; }

        [JsonProperty("sucet_vysok_opor")]
        public string SucetVysokOpor { get; set; }

        [JsonProperty("material_opor")]
        public string MaterialOpor { get; set; }

        [JsonProperty("kategoria_zatazenia_stavby")]
        public string KategoriaZatazeniaStavby { get; set; }

        [JsonProperty("zatazitelnost_priepustu")]
        public string ZatazitelnostPriepustu { get; set; }

        [JsonProperty("stav_nosnej_konstrukcie")]
        public string StavNosnejKonstrukcie { get; set; }

        [JsonProperty("stav_spodnej_stavby")]
        public string StavSpodnejStavby { get; set; }

        [JsonProperty("hodnotenie_stavu_objektu")]
        public string HodnotenieStavuObjektu { get; set; }
    }

    // Sheet 2:  Obmedzujúce prvky za celú dopravnú cestu
    [Table("prehlad_obmedzujuce_prvky")]
    public class ObmedzujucePrvky
    {
        [JsonProperty("or")]
        public string OR { get; set; }

        [JsonProperty("spravca")]
        public string Spravca { get; set; }

        [JsonProperty("cislo_tu")]
        public string CisloTU { get; set; }

        [JsonProperty("cislo_du")]
        public string CisloDU { get; set; }

        [JsonProperty("jic_priepustu")]
        public string JICPriepustu { get; set; }

        [JsonProperty("typ_priepustu")]
        public string TypPriepustu { get; set; }

        [JsonProperty("obmedzujuci_prvok")]
        public string ObmedzujuciPrvok { get; set; }

        [JsonProperty("celkova_dlzka")]
        public string CelkovaDlzka { get; set; }

        [JsonProperty("vzdialenost_od_lavej_kolaje")]
        public string VzdialenostOdLavejKolaje { get; set; }

        [JsonProperty("vzdialenost_od_pravej_kolaje")]
        public string VzdialenostOdPravejKolaje { get; set; }
    }

    // Sheet 3:  Premostené prekážky za celú dopravnú cestu
    [Table("premostene_prekazky")]
    public class PremostenePrekazky
    {
        [JsonProperty("or")]
        public string OR { get; set; }

        [JsonProperty("spravca")]
        public string Spravca { get; set; }

        [JsonProperty("cislo_tu")]
        public string CisloTU { get; set; }

        [JsonProperty("cislo_du")]
        public string CisloDU { get; set; }

        [JsonProperty("jic_priepustu")]
        public string JICPriepustu { get; set; }

        [JsonProperty("typ_priepustu")]
        public string TypPriepustu { get; set; }

        [JsonProperty("typ_prekazky")]
        public string TypPrekazky { get; set; }

        [JsonProperty("blizsi_popis")]
        public string BlizsiPopis { get; set; }

        [JsonProperty("volna_vyska_nad_priepustom")]
        public string VolnaVyskaNadPriepustom { get; set; }

        [JsonProperty("storocny_prietok")]
        public string StorocnyPrietok { get; set; }

        [JsonProperty("poznamka")]
        public string Poznamka { get; set; }
    }

    // Sheet 4:  Svetlosť za celú dopravnú cestu
    [Table("svetlost")]
    public class Svetlost
    {
        [JsonProperty("or")]
        public string OR { get; set; }

        [JsonProperty("spravca")]
        public string Spravca { get; set; }

        [JsonProperty("cislo_tu")]
        public string CisloTU { get; set; }

        [JsonProperty("cislo_du")]
        public string CisloDU { get; set; }

        [JsonProperty("jic_priepustu")]
        public string JICPriepustu { get; set; }

        [JsonProperty("typ_priepustu")]
        public string TypPriepustu { get; set; }

        [JsonProperty("poradove_cislo")]
        public string PoradoveCislo { get; set; }

        [JsonProperty("sucet_vysky_kolajoveho_lozka_a_presypavky")]
        public string SucetVyskyKolajovehoLozkaAPresypavky { get; set; }

        [JsonProperty("svetlost_kolmna")]
        public string SvetlostKolmna { get; set; }

        [JsonProperty("svetlost_sikma")]
        public string SvetlostSikma { get; set; }

        [JsonProperty("uhol_krizeni")]
        public string UholKrizeni { get; set; }

        [JsonProperty("poznamka")]
        public string Poznamka { get; set; }
    }


    // Sheet 5: Dĺžka za celú dopravnú cestu
    [Table("cudzie_zariadenia")]
    public class CudzieZariadenia
    {
        [JsonProperty("or")]
        public string OR { get; set; }

        [JsonProperty("spravca")]
        public string Spravca { get; set; }

        [JsonProperty("cislo_tu")]
        public string CisloTU { get; set; }

        [JsonProperty("cislo_du")]
        public string CisloDU { get; set; }

        [JsonProperty("jic_priepustu")]
        public string JICPriepustu { get; set; }

        [JsonProperty("typ_priepustu")]
        public string TypPriepustu { get; set; }

        [JsonProperty("druh_cudzieho_zariadenia")]
        public string DruhCudziehoZariadenia { get; set; }

        [JsonProperty("spravca_zariadenia")]
        public string SpravcaZariadenia { get; set; }

        [JsonProperty("poznamka")]
        public string Poznamka { get; set; }
    }


    // Sheet 6: Kolaje
    [Table("kolaje")]
    public class Kolaje
    {
        [JsonProperty("or")]
        public string OR { get; set; }

        [JsonProperty("spravca")]
        public string Spravca { get; set; }

        [JsonProperty("cislo_tu")]
        public string CisloTU { get; set; }

        [JsonProperty("cislo_du")]
        public string CisloDU { get; set; }

        [JsonProperty("jic_priepustu")]
        public string JICPriepustu { get; set; }

        [JsonProperty("typ_priepustu")]
        public string TypPriepustu { get; set; }

        [JsonProperty("cislo")]
        public string Cislo { get; set; }

        [JsonProperty("tu")]
        public string TU { get; set; }

        [JsonProperty("du")]
        public string DU { get; set; }

        [JsonProperty("umiestnenie")]
        public string Umiestnenie { get; set; }

        [JsonProperty("obmedzujuca_rychlost_1")]
        public string ObmedzujucaRychlost1 { get; set; }

        [JsonProperty("obmedzujuca_rychlost_2")]
        public string ObmedzujucaRychlost2 { get; set; }

        [JsonProperty("kategoria_zatazenia_st_zelen_spodku")]
        public string KategoriaZatazeniaStZelenSpodku { get; set; }

        [JsonProperty("zatazitelnost")]
        public string Zatazitelnost { get; set; }

        [JsonProperty("poznamka")]
        public string Poznamka { get; set; }
    }


    // Sheet 7: Material Spodnej Stavby
    [Table("material_spodnej_stavby")]
    public class MaterialSpodnejStavby
    {
        [JsonProperty("or")]
        public string OR { get; set; }

        [JsonProperty("spravca")]
        public string Spravca { get; set; }

        [JsonProperty("cislo_tu")]
        public string CisloTU { get; set; }

        [JsonProperty("cislo_du")]
        public string CisloDU { get; set; }

        [JsonProperty("jic_priepustu")]
        public string JICPriepustu { get; set; }

        [JsonProperty("typ_priepustu")]
        public string TypPriepustu { get; set; }

        [JsonProperty("cast_spodnej_stavby")]
        public string CastSpodnejStavby { get; set; }

        [JsonProperty("material_casti_spodnej_stavby")]
        public string MaterialCastiSpodnejStavby { get; set; }

        [JsonProperty("prefabrikacia_spodnej_stavby")]
        public string PrefabrikaciaSpodnejStavby { get; set; }

        [JsonProperty("popis_prefabrikatu")]
        public string PopisPrefabrikatu { get; set; }
    }


    // Sheet 8: Prehľad: Odkaz za celú dopravnú cestu
    [Table("nosne_konstrukcie")]
    public class NosneKonstrukcie
    {
        [JsonProperty("or")]
        public string OR { get; set; }

        [JsonProperty("spravca")]
        public string Spravca { get; set; }

        [JsonProperty("cislo_tu")]
        public string CisloTU { get; set; }

        [JsonProperty("cislo_du")]
        public string CisloDU { get; set; }

        [JsonProperty("jic_priepustu")]
        public string JICPriepustu { get; set; }

        [JsonProperty("typ_priepustu")]
        public string TypPriepustu { get; set; }

        [JsonProperty("porad_cislo_nk")]
        public string PoradCisloNK { get; set; }

        [JsonProperty("hodnotenie_nk")]
        public string HodnotenieNK { get; set; }

        [JsonProperty("nk_kod_1")]
        public string NKKod1 { get; set; }

        [JsonProperty("nk_kod_2")]
        public string NKKod2 { get; set; }

        [JsonProperty("docasna_konstrukcia")]
        public string DocasnaKonstrukcia { get; set; }

        [JsonProperty("evid_oznacenie_provizoria")]
        public string EvidOznacenieProvizoria { get; set; }

        [JsonProperty("konstrukcia_pozdlzne_delenie")]
        public string KonstrukciaPozdlzneDelenie { get; set; }

        [JsonProperty("blizsi_popis")]
        public string BlizsiPopis { get; set; }

        [JsonProperty("dlzka_nk")]
        public string DlzkaNK { get; set; }

        [JsonProperty("stavebna_vyska")]
        public string StavebnaVyska { get; set; }

        [JsonProperty("ukoncenie_nk")]
        public string UkoncenieNK { get; set; }

        [JsonProperty("sikmost_ukoncenia")]
        public string SikmostUkoncenia { get; set; }

        [JsonProperty("mostny_predpis")]
        public string MostnyPredpis { get; set; }

        [JsonProperty("zatazitelnost_nk")]
        public string ZatazitelnostNK { get; set; }

        [JsonProperty("rok_vyroby_nk")]
        public string RokVyrobyNK { get; set; }

        [JsonProperty("rok_zosilnenia_nk")]
        public string RokZosilneniaNK { get; set; }

        [JsonProperty("typ_hydroizolacie_nk")]
        public string TypHydroizolacieNK { get; set; }

        [JsonProperty("poznamka")]
        public string Poznamka { get; set; }

        [JsonProperty("spôsob_rozsirenia_bet_konstrukcie")]
        public string SposobRozsireniaBetKonstrukcie { get; set; }

        [JsonProperty("rok_rozsirenia")]
        public string RokRozsirenia { get; set; }
    }


    // Sheet 9: Prehľad: Poznámka za celú dopravnú cestu
    [Table("kolaje_na_nosnej_konstrukcii")]
    public class KolajeNaNosnejKonstrukcii
    {
        [JsonProperty("or")]
        public string OR { get; set; }

        [JsonProperty("spravca")]
        public string Spravca { get; set; }

        [JsonProperty("cislo_tu")]
        public string CisloTU { get; set; }

        [JsonProperty("cislo_du")]
        public string CisloDU { get; set; }

        [JsonProperty("jic_priepustu")]
        public string JICPriepustu { get; set; }

        [JsonProperty("typ_priepustu")]
        public string TypPriepustu { get; set; }

        [JsonProperty("porad_cislo_nk")]
        public string PoradCisloNK { get; set; }

        [JsonProperty("cislo_kolaje")]
        public string CisloKolaje { get; set; }

        [JsonProperty("sposob_ulozenia_kolaje")]
        public string SposobUlozeniaKolaje { get; set; }

        [JsonProperty("poznamka")]
        public string Poznamka { get; set; }
    }

}
