package cokr.xit.ens.modules.common.ctgy.intgrnbill.nv.model;

import com.fasterxml.jackson.annotation.JsonAlias;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.google.gson.annotations.SerializedName;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Builder;
import lombok.Getter;
import lombok.Setter;
import org.hibernate.validator.constraints.Length;

import javax.validation.constraints.NotEmpty;

@Builder
@Getter
@Schema(name = "BillNvAcptReqVO")
public class BillNvAcptReqVO {

    @Length(max = 45, message = "청구서 유니크 아이디의 최대 길이를 초과 했습니다.")
    @Schema(required = false, title = "청구서 유니크 아이디", example = " ")
    @JsonProperty("billUid")
    @JsonAlias({"bill_uid"})
    @SerializedName(value = "billUid", alternate = "bill_uid")
    @Setter
    private String billUid;

    @NotEmpty(message = "계약번호는 필수 입력값 입니다.")
    @Length(max = 40, message = "계약번호의 최대 길이를 초과 했습니다.")
    @Schema(required = true, title = "기관에서 관리하는 해당 고객번호 혹은 계약번호", example = " ")
    @JsonProperty("billerUserKey")
    @JsonAlias({"biller_user_key"})
    @SerializedName(value = "billerUserKey", alternate = "biller_user_key")
    private String billerUserKey;


//    @Pattern(regexp = "(normal|recurrent)", message = "결제타입은 normal(default) 또는 recurrent 만 입력 할 수 있습니다.")
//    @Length(max = 10, message = "결제 타입의 최대 길이를 초과 했습니다.")
//    @Schema(required = true, title = "결제 타입", example = "normal")
//    @JsonAlias({"pay_type"})
//    private String payType;
//
//    @Pattern(regexp = "(page|popup)", message = "결제창 Open 타입은 page(default) 또는 popup 만 입력 할 수 있습니다.")
//    @Length(max = 10, message = "결제창 Open 타입의 최대 길이를 초과 했습니다.")
//    @Schema(required = true, title = "결제창 Open 타입", example = "page")
//    @JsonAlias({"open_type"})
//    private String openType;
//    @NotBlank(message = "리턴URL는 필수조건 입니다.")
//    @Length(max = 1000, message = "리턴URL의 최대 길이를 초과 했습니다.")
//    @Schema(required = true, title = "네이버페이 결제 후 리턴URL", example = " ")
//    @JsonProperty("returnUrl")
//    @JsonAlias({"return_url"})
//    @SerializedName(value = "returnUrl", alternate = "return_url")
//    private String returnUrl;
//    @Schema(required = false, title = "상품 목록", example = " ")
//    @JsonAlias({"product_items"})
//    private List<Map<String, Object>> productItems;
}
