package com.mosquito.project.dto;

import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Size;
import lombok.NoArgsConstructor;

import java.time.ZonedDateTime;

@NoArgsConstructor
public class UpdateActivityRequest {

    @NotBlank(message = "活动名称不能为空")
    @Size(max = 100, message = "活动名称不能超过100个字符")
    private String name;

    @NotNull(message = "活动开始时间不能为空")
    private ZonedDateTime startTime;

    @NotNull(message = "活动结束时间不能为空")
    private ZonedDateTime endTime;

    // 目标人群配置：用户ID列表或标签列表的JSON
    private String targetUsersConfig;

    // 页面内容配置：邀请页文案、图片等JSON配置
    private String pageContentConfig;

    // 奖励计算模式：DIFFERENTIAL(补差) 或 CUMULATIVE(叠加)
    private String rewardCalculationMode;

    // 阶梯奖励配置JSON：包含多个档位及奖励
    private String rewardTiersConfig;

    // 多级邀请衰减奖励配置JSON：包含层级和衰减系数
    private String multiLevelRewardConfig;

    // Getters and Setters
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public ZonedDateTime getStartTime() {
        return startTime;
    }

    public void setStartTime(ZonedDateTime startTime) {
        this.startTime = startTime;
    }

    public ZonedDateTime getEndTime() {
        return endTime;
    }

    public void setEndTime(ZonedDateTime endTime) {
        this.endTime = endTime;
    }

    public String getTargetUsersConfig() {
        return targetUsersConfig;
    }

    public void setTargetUsersConfig(String targetUsersConfig) {
        this.targetUsersConfig = targetUsersConfig;
    }

    public String getPageContentConfig() {
        return pageContentConfig;
    }

    public void setPageContentConfig(String pageContentConfig) {
        this.pageContentConfig = pageContentConfig;
    }

    public String getRewardCalculationMode() {
        return rewardCalculationMode;
    }

    public void setRewardCalculationMode(String rewardCalculationMode) {
        this.rewardCalculationMode = rewardCalculationMode;
    }

    public String getRewardTiersConfig() {
        return rewardTiersConfig;
    }

    public void setRewardTiersConfig(String rewardTiersConfig) {
        this.rewardTiersConfig = rewardTiersConfig;
    }

    public String getMultiLevelRewardConfig() {
        return multiLevelRewardConfig;
    }

    public void setMultiLevelRewardConfig(String multiLevelRewardConfig) {
        this.multiLevelRewardConfig = multiLevelRewardConfig;
    }
}
