package com.tashow.cloud.product.vo.prodreservationconfig;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import jakarta.validation.constraints.*;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;

@Schema(description = "管理后台 - 商品预约配置新增/修改 Request VO")
@Data
public class ProdReservationConfigSaveReqVO {

    @Schema(description = "预约配置的唯一标识符", requiredMode = Schema.RequiredMode.REQUIRED, example = "20606")
    private Long id;

    @Schema(description = "关联的商品ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "19369")
    @NotNull(message = "关联的商品ID不能为空")
    private Long prodId;

    @Schema(description = "预约时段设置（JSON格式存储）", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "预约时段设置（JSON格式存储）不能为空")
    private String reservationTimeSlots;

    @Schema(description = "需提前多少小时预约", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "需提前多少小时预约不能为空")
    private Integer advanceHours;

    @Schema(description = "预约日期范围 7天 10天 15天 30天", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "预约日期范围 7天 10天 15天 30天不能为空")
    private Integer reservationDateRange;

    @Schema(description = "是否允许更改预约时间 1可以 0不可以", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "是否允许更改预约时间 1可以 0不可以不能为空")
    private Boolean allowChange;

    @Schema(description = "更改预约时间的时间规则（如服务开始前1小时可更改）")
    private Integer changeTimeRule;

    @Schema(description = "允许更改预约时间的最大次数")
    private Integer maxChangeTimes;

    @Schema(description = "黑名自定义日期（JSON格式存储）")
    private String blacklistedDates;

    @Schema(description = "黑名单指定日期（JSON格式存储）")
    private String blackAppointDates;

    @Schema(description = "法定节假日是否开启0:关闭1开启")
    private Boolean blackHappy;

    @Schema(description = "固定休息日周末是否开启0关闭1开启")
    private Boolean blackWeekend;

    @Schema(description = "配置创建时间")
    private LocalDateTime createdAt;

    @Schema(description = "配置最后更新时间")
    private LocalDateTime updatedAt;

}