package com.eactive.ext.kjb.common;

import lombok.Data;
import org.hibernate.validator.constraints.NotEmpty;

import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.Pattern;

@Data
public class KjbProperty {
    @KjbPropertyValue(key = "kjb.eai.batch.url")
    @Pattern(regexp = "^(https?://[^\\s/$.?#][^\\s]*)|\\s*$", message = "kjb.eai_batch.url 는 유효한 URL 형식이거나 공백이어야 합니다. 예: http://example.com/api")
    private String eaiBatchUrl;

    @KjbPropertyValue(key = "kjb.eai.batch.connection_timeout", defaultValue = "5")
    @Min(1) @Max(10)
    private int eaiBatchConnectionTimeout = 5;

    @KjbPropertyValue(key = "kjb.eai.batch.response_timeout", defaultValue = "5")
    @Min(1) @Max(30)
    private int eaiBatchResponseTimeout = 5;

    @KjbPropertyValue(key = "kjb.eai.batch.timeout", defaultValue = "10")
    @Min(1) @Max(30)
    private int eaiBatchTimeout = 10;

    @KjbPropertyValue(key = "kjb.eai.batch.charset", defaultValue = "euc-kr")
    @NotEmpty
    private String eaiBatchCharset = "euc-kr";

    @KjbPropertyValue(key = "kjb.ums.eai_batch.send_dir")
    @NotEmpty(message = "kjb.ums.eai_batch.send_dir 는 필수값입니다.")
    private String umsEaiBatchSendDir;

    @KjbPropertyValue(key = "kjb.ums.eai_batch.backup_dir")
    @NotEmpty(message = "kjb.ums.eai_batch.backup_dir 는 필수값입니다.")
    private String umsEaiBatchBackupDir;

    @KjbPropertyValue(key = "kjb.ums.eai_batch.error_dir")
    @NotEmpty(message = "kjb.ums.eai_batch.error_dir 는 필수값입니다.")
    private String umsEaiBatchErrorDir;

    @KjbPropertyValue(key = "kjb.ums.eai_batch.interface_id")
    @Pattern(regexp = "^[a-zA-Z0-9]{13}$", message = "kjb.ums.eai_batch.interface_id 는 12자리 영문대소문자 및 숫자 조합이어야 합니다.")
    private String umsEaiBatchInterfaceId;

    @KjbPropertyValue(key = "kjb.ums.eai_batch.retention_date", defaultValue = "60")
    @Min(1) @Max(365)
    private int umsEaiBatchRetentionDate = 60;


    @KjbPropertyValue(key = "kjb.ums.host")
    @Pattern(regexp = "^(https?://[^\\s/$.?#][^\\s]*)|\\s*$", message = "kjb.ums.host_url 는 유효한 URL 형식이거나 공백이어야 합니다. 예: http://example.com/api")
    private String umsHostUrl;

    @KjbPropertyValue(key = "kjb.ums.api_key")
    @Pattern(regexp = "^[a-zA-Z0-9_-]{36}$", message = "kjb.ums.api_key 입력 형식이 맞지 않습니다.")
    private String umsApiKey;

    @KjbPropertyValue(key = "kjb.ums.connection_timeout", defaultValue = "5")
    @Min(1) @Max(10)
    private int umsConnectionTimeout = 5;

    @KjbPropertyValue(key = "kjb.ums.response_timeout", defaultValue = "5")
    @Min(1) @Max(30)
    private int umsResponseTimeout = 5;

    @KjbPropertyValue(key = "kjb.ums.timeout", defaultValue = "10")
    @Min(1) @Max(30)
    private int umsTimeout = 10;


    @KjbPropertyValue(key = "kjb.obp.url")
    @Pattern(regexp = "^(https?://[^\\s/$.?#][^\\s]*)|\\s*$", message = "kjb.obp.url 는 유효한 URL 형식이거나 공백이어야 합니다. 예: http://example.com/api")
    private String obpUrl;

    @KjbPropertyValue(key = "kjb.obp.trust_system.key", defaultValue = "x-obp-trust-system")
    @NotEmpty
    private String obpTrustSystemKey = "x-obp-trust-system";

    @KjbPropertyValue(key = "kjb.obp.trust_system.value", defaultValue = "APIMPT-0002-QVBJTVBULTAwMDI=")
    @NotEmpty
    private String obpTrustSystemValue = "APIMPT-0002-QVBJTVBULTAwMDI=";

    @KjbPropertyValue(key = "kjb.obp.partner_code.key", defaultValue = "x-obp-partnercode")
    @NotEmpty
    private String obpPartnerCodeKey = "x-obp-partnercode";

    @KjbPropertyValue(key = "kjb.obp.partner_code.value", defaultValue = "100001-01")
    @NotEmpty
    private String obpPartnerCodeValue = "100001-01";


    @KjbPropertyValue(key = "kjb.obp.url.commission", defaultValue = "/api/billing/billing/findBillingForCondition")
    @NotEmpty
    private String obpUrlCommission = "/api/billing/billing/findBillingForCondition";

    @KjbPropertyValue(key = "kjb.obp.url.commission_print", defaultValue = "/api/billing/billing/findBillingForCondition/print")
    @NotEmpty
    private String obpUrlCommissionPrint = "/api/billing/billing/findBillingForCondition/print";

    @KjbPropertyValue(key = "kjb.obp.url.organization_fmt", defaultValue = "/api/customer/findCustomerByBusinessManRegistrationNo/%s")
    @NotEmpty
    private String obpUrlOrganizationFmt = "/api/customer/findCustomerByBusinessManRegistrationNo/%s";


    // 광주은행 SSO

    @KjbPropertyValue(key = "kjb.url", defaultValue = "https://manage-eapim.kjbank.com")
    @NotEmpty
    private String url = "https://manage-eapim.kjbank.com";

    @KjbPropertyValue(key = "kjb.sso.ascp_url", defaultValue = "/sso/login.do")
    @NotEmpty
    private String ssoAscpUri = "/sso/login.do";

//    @KjbPropertyValue(key = "kjb.sso.domain", defaultValue = "sso.kjbank.com")
//    @NotEmpty
//    private String ssoDomain = "sso.kjbank.com";
//
//    @KjbPropertyValue(key = "kjb.sso.nd_server", defaultValue = "http://sso.kjbank.com:5480")
//    @NotEmpty
//    private String ssoNdServer = "http://sso.kjbank.com:5480";
//
//    @KjbPropertyValue(key = "kjb.sso.timeout", defaultValue = "15000")
//    @Min(1)
//    private int ssoTimeout = 15000;
//
//    @KjbPropertyValue(key = "kjb.sso.cookie_padding", defaultValue = "_V42")
//    @Min(1)
//    private String ssoCookiePadding = "_V42";
//
//    @KjbPropertyValue(key = "kjb.sso.service_name", defaultValue = "eapim-admin")
//    @Min(1)
//    private String ssoServiceName = "eapim-admin";
}












































