package com.ga.core.vo.settle;

import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Pattern;
import jakarta.validation.constraints.Size;
import lombok.Data;

import java.math.BigDecimal;

/**
 * 시책 프로그램 등록/수정 요청 VO
 */
@Data
public class IncentiveProgramSaveReq {

    @NotBlank(message = "시책명은 필수입니다")
    @Size(max = 200)
    private String programName;

    @NotBlank(message = "시책 유형은 필수입니다")
    private String programType;

    @NotBlank(message = "지급 대상 구분은 필수입니다")
    private String targetType;           // AGENT/ORG/GRADE

    private Long targetGradeId;
    private Long targetOrgId;
    private String productCategory;

    @NotBlank(message = "시책 시작월은 필수입니다")
    @Pattern(regexp = "\\d{6}", message = "시작월은 6자리 숫자(YYYYMM)여야 합니다")
    private String startMonth;

    @NotBlank(message = "시책 종료월은 필수입니다")
    @Pattern(regexp = "\\d{6}", message = "종료월은 6자리 숫자(YYYYMM)여야 합니다")
    private String endMonth;

    @Size(max = 2000)
    private String conditionDesc;

    private BigDecimal payRate;          // RATE 방식 시 지급률
    private BigDecimal payAmountFixed;   // FIXED_AMOUNT 방식 시 고정액

    @NotBlank(message = "지급 방식은 필수입니다")
    private String payType;              // RATE / FIXED_AMOUNT

    private BigDecimal budgetAmount;
}
