// ...existing code...
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.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.ToString;

import java.util.ArrayList;
import java.util.List;

/**
 * Response model for get-digi-edisponent-list
 */
@AllArgsConstructor
@NoArgsConstructor
@Builder
@Data
@EqualsAndHashCode(callSuper = false)
@ToString
@JsonIgnoreProperties(ignoreUnknown = true)
public class GetDigiEdisponentListResponse {

    @JsonProperty("persons")
    @Builder.Default
    private List<Person> persons = new ArrayList<>();

    @JsonProperty("tifResponseStatus")
    private ErrorModel tifResponseStatus;

    @JsonProperty("fault")
    private FaultModel fault;

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

        @JsonProperty("appState")
        private String appState;

        @JsonProperty("appProcessState")
        private String appProcessState;

        @JsonProperty("prodPckgKey")
        private String prodPckgKey;

        @JsonProperty("propWflBusState")
        private String propWflBusState;

        @JsonProperty("dispoUniPtKey")
        private Long dispoUniPtKey;

        @JsonProperty("dispoNasInstPtKey")
        private Long dispoNasInstPtKey;

        @JsonProperty("dispoFirstName")
        private String dispoFirstName;

        @JsonProperty("dispoMiddleName")
        private String dispoMiddleName;

        @JsonProperty("dispoLastName")
        private String dispoLastName;

        @JsonProperty("dispoBirthDate")
        private String dispoBirthDate;

        @JsonProperty("dispoBirthNum")
        private String dispoBirthNum;

        @JsonProperty("dispoResAddrCountry")
        private String dispoResAddrCountry;

        @JsonProperty("dispoResAddrCity")
        private String dispoResAddrCity;

        @JsonProperty("dispoResAddrZipCode")
        private String dispoResAddrZipCode;

        @JsonProperty("dispoResAddrPostOffice")
        private String dispoResAddrPostOffice;

        @JsonProperty("dispoResAddrStreet")
        private String dispoResAddrStreet;

        @JsonProperty("dispoResAddrStreetDescNo")
        private String dispoResAddrStreetDescNo;

        @JsonProperty("dispoResAddrStreetOrientNo")
        private String dispoResAddrStreetOrientNo;

        @JsonProperty("dispoEmContextId")
        private Long dispoEmContextId;

        @JsonProperty("dispoEmEntityId")
        private Long dispoEmEntityId;

        @JsonProperty("dispoEmStatus")
        private String dispoEmStatus;

        @JsonProperty("dispoEmMasterFlag")
        private String dispoEmMasterFlag;

        @JsonProperty("dispoEmLoginName")
        private String dispoEmLoginName;

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

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

        @JsonProperty("errorCode")
        private String errorCode;

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

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

        @JsonProperty("message")
        private String message;

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

