package com.banesco.module.legal_customer_product_directory.domain.dto.request;

import io.quarkus.runtime.annotations.RegisterForReflection;
import lombok.*;

import java.util.Map;
import java.util.Objects;

import static java.util.Map.entry;

@Getter
@ToString
@Builder
@NoArgsConstructor
@AllArgsConstructor
@RegisterForReflection
public class LegalCustomerProductDirectoryRequest {
    @NonNull
    private String customerReferenceFintechId;  // Header obligatorio
    @NonNull
    private String appId;                       // Header obligatorio
    @NonNull
    private String customerId;      // VCUSCUN - Obligatorio (Numero de cliente IBS)

    private String bankNumber;             // VACMBNK - Numero de Banco (filtro)
    private String currencyCode;           // VACMCCY - Moneda (filtro)
    private String accountStatus;          // VACMAST - Estatus de Cuenta (filtro)
    private String productCvCode;          // VACMPROCV - Codigo de Producto Cuenta Verde (filtro)
    private String productCode;            // VACMPRO - Codigo de Producto (filtro)
    private String channelCode;            // VAFILICANAL - Codigo de Canal (filtro)
    private String serviceType;            // VAFILICOSER - Tipo de Servicio (filtro)
    private String affiliationStatus;      // VAFILISTATU - Estatus de afiliacion (filtro)
    private String limitType;              // VALIMIT - Pagador/Receptor (PAG/REC) (filtro)
    private String casheaIndicator;        // VCASHEA - SI/NO (filtro)

    public Map<String, String> toQueryString() {
        return Map.ofEntries(
            entry("appId", Objects.toString(getAppId(), "")),
            entry("customerReferenceFintechId", Objects.toString(getCustomerReferenceFintechId(), ""))
        );
    }
}