
package dev.sonpx.loyalty.mcp.reward.model;

import dev.sonpx.loyalty.mcp.reward.enums.CampaignType;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Size;
import java.time.LocalDate;
import lombok.Getter;
import lombok.Setter;
import com.fasterxml.jackson.annotation.JsonPropertyDescription;

@Getter
@Setter
public class Campaign extends Fw {

    @NotBlank
    @Size(min = 1, max = 10)
    @JsonPropertyDescription("Mã chiến dịch (tối đa 10 ký tự, ví dụ: 'CMP01')")
    private String campaignId;

    @Size(max = 50)
    @JsonPropertyDescription("Tên người hoặc phòng ban sở hữu chiến dịch")
    private String ownerName;

    @NotBlank
    @Size(min = 1, max = 50)
    @JsonPropertyDescription("Tên hiển thị của chiến dịch")
    private String name;

    @Size(max = 500)
    @JsonPropertyDescription("Mô tả chi tiết về chiến dịch")
    private String description;

    @JsonPropertyDescription("Loại chiến dịch, xác định chiến dịch thuộc loại nào (ví dụ: POINT, VOUCHER)")
    private CampaignType campaignType;

    @JsonPropertyDescription("Số lượng khách hàng mục tiêu dự kiến của chiến dịch")
    private Long noOfCustomerTarget;

    @JsonPropertyDescription("Mục tiêu giá trị giao dịch trung bình (Target ATV)")
    private Double targetAtv;

    @JsonPropertyDescription("Ngày bắt đầu có hiệu lực của chiến dịch")
    private LocalDate effectiveFrom;

    @JsonPropertyDescription("Ngày kết thúc hiệu lực của chiến dịch")
    private LocalDate effectiveTo;

    @JsonPropertyDescription("Số lượng quy tắc (rules) cấu hình trong chiến dịch")
    private Integer numOfRule;
}
