package cz.moneta.test.dsl.wso2.objects.smallbusiness;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.time.LocalDate;

/**
 * Response model for GET_CUST_COMMERCIAL_BY_CIF service
 */
@Builder
@Data
@NoArgsConstructor
@AllArgsConstructor
@JsonIgnoreProperties(ignoreUnknown = true)
public class GetCustCommercialByCifResponse {
    @JsonProperty("Adresat")
    private String adresat;

    @JsonProperty("CO")
    private String co;

    @JsonProperty("CP")
    private String cp;

    @JsonProperty("CisloPasu")
    private String cisloPasu;

    @JsonProperty("Ctvrt")
    private String ctvrt;

    @JsonProperty("DIC")
    private String dic;

    @JsonProperty("DatumExpiraceKontaktnichUdaju")
    private LocalDate datumExpiraceKontaktnichUdaju;

    @JsonProperty("DatumPlatnostiOP")
    private LocalDate datumPlatnostiOP;

    @JsonProperty("DatumPodnikaniDo")
    private LocalDate datumPodnikaniDo;

    @JsonProperty("DatumPodnikaniOd")
    private LocalDate datumPodnikaniOd;

    @JsonProperty("DatumPosledniAktualizace")
    private LocalDate datumPosledniAktualizace;

    @JsonProperty("DatumZalozeniCIFu")
    private LocalDate datumZalozeniCIFu;

    @JsonProperty("DruheJmeno")
    private String druheJmeno;

    @JsonProperty("EMail")
    private String eMail;

    @JsonProperty("EkonomickySektor")
    private String ekonomickySektor;

    @JsonProperty("ICO")
    private String ico;

    @JsonProperty("ICOHlavnihoSpolku")
    private String icoHlavnihoSpolku;

    @JsonProperty("IDSdeleniDatumPodnikaniDo")
    private Integer idSdeleniDatumPodnikaniDo;

    @JsonProperty("IDSdeleniDatumPodnikaniOd")
    private Integer idSdeleniDatumPodnikaniOd;

    @JsonProperty("IDSdeleniEmail")
    private Integer idSdeleniEmail;

    @JsonProperty("IDSdeleniICOHlavnihoSpolku")
    private Integer idSdeleniICOHlavnihoSpolku;

    @JsonProperty("IDSdeleniMobil")
    private Integer idSdeleniMobil;

    @JsonProperty("JinyOsobniDoklad2Cislo")
    private String jinyOsobniDoklad2Cislo;

    @JsonProperty("JinyOsobniDoklad2Platnost")
    private LocalDate jinyOsobniDoklad2Platnost;

    @JsonProperty("JinyOsobniDoklad2Typ")
    private String jinyOsobniDoklad2Typ;

    @JsonProperty("Jmeno")
    private String jmeno;

    @JsonProperty("KodObchodnihoMista")
    private String kodObchodnihoMista;

    @JsonProperty("NezadouciKlient")
    private String nezadouciKlient;

    @JsonProperty("OKEC")
    private String okec;

    @JsonProperty("OROddil")
    private String orOddil;

    @JsonProperty("ORSoud")
    private String orSoud;

    @JsonProperty("ORVlozka")
    private String orVlozka;

    @JsonProperty("ObchodniJmeno")
    private String obchodniJmeno;

    @JsonProperty("Obec")
    private String obec;

    @JsonProperty("Osloveni")
    private String osloveni;

    @JsonProperty("PSC")
    private String psc;

    @JsonProperty("PlatnostKontaktnichUdaju")
    private String platnostKontaktnichUdaju;

    @JsonProperty("PlatnostPasuDo")
    private LocalDate platnostPasuDo;

    @JsonProperty("PocetZamestnancu")
    private String pocetZamestnancu;

    @JsonProperty("Posta")
    private String posta;

    @JsonProperty("PravniForma")
    private String pravniForma;

    @JsonProperty("Prijmeni")
    private String prijmeni;

    @JsonProperty("Rezidence")
    private String rezidence;

    @JsonProperty("RodneCislo")
    private String rodneCislo;

    @JsonProperty("SerieACisloOP")
    private String serieACisloOP;

    @JsonProperty("SocialneEkonomickaSkupina")
    private String socialneEkonomickaSkupina;

    @JsonProperty("SpiciUcet")
    private String spiciUcet;

    @JsonProperty("SpravniCelek")
    private String spravniCelek;

    @JsonProperty("Telefon")
    private String telefon;

    @JsonProperty("TelefonDalsi")
    private String telefonDalsi;

    @JsonProperty("TelefonDalsiPredvolba")
    private String telefonDalsiPredvolba;

    @JsonProperty("TelefonMobilni")
    private String telefonMobilni;

    @JsonProperty("TelefonMobilniPredvolba")
    private String telefonMobilniPredvolba;

    @JsonProperty("TelefonPredvolba")
    private String telefonPredvolba;

    @JsonProperty("TitulPred")
    private String titulPred;

    @JsonProperty("TypKlienta")
    private String typKlienta;

    @JsonProperty("Ulice")
    private String ulice;

    @JsonProperty("VztahKBance")
    private String vztahKBance;

    @JsonProperty("ZECO")
    private String zeco;

    @JsonProperty("Zeme")
    private String zeme;

    @JsonProperty("ZkraceneJmeno")
    private String zkraceneJmeno;

    @JsonProperty("TypKlientaDetail")
    private String typKlientaDetail;

    @Data
    @Builder
    @NoArgsConstructor
    @AllArgsConstructor
    @JsonIgnoreProperties(ignoreUnknown = true)
    public static class Fault {
        @JsonProperty("code")
        private String code;

        @JsonProperty("message")
        private String message;

        @JsonProperty("description")
        private String description;
    }

}