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

import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.time.LocalDateTime;
import java.util.List;

@Schema(description = "管理后台 - 商品预约配置 Response VO")
@Data
@ExcelIgnoreUnannotated
public class ProdReservationConfigRespVO {

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

    @Schema(description = "关联的商品ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "19369")
    @ExcelProperty("关联的商品ID")
    private Long prodId;

    @Schema(description = "预约时段设置", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("预约时段设置")
    private List<String> reservationTimeSlots;

    @Schema(description = "需提前多少小时预约", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("需提前多少小时预约")
    private Integer advanceHours;

    @Schema(description = "预约日期范围 7天 10天 15天 30天", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("预约日期范围 7天 10天 15天 30天")
    private Integer reservationDateRange;

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

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

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

    @Schema(description = "黑名自定义日期")
    @ExcelProperty("黑名自定义日期")
    private List<String> blacklistedDates;

    /**
     * '是否开启黑名单自定义0关1开'
     */
    private Integer isBlacklisted;

    /**
     * '是否开启黑名单指定日期0关1开'
     */
    private Integer isBlackAppoint;

    @Schema(description = "黑名单指定日期")
    @ExcelProperty("黑名单指定日期")
    private List<String> blackAppointDates;

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

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

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

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

}