package com.tourism.webadmin.back.dto;

import com.tourism.common.core.validator.UpdateGroup;
import com.tourism.common.core.validator.ConstDictRef;
import com.tourism.webadmin.back.model.constant.HouseEequipmentIsHave;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import jakarta.validation.constraints.*;

/**
 * 租赁房屋配套设施Dto对象。
 *
 * @author 吃饭睡觉
 * @date 2024-09-06
 */
@Schema(description = "租赁房屋配套设施Dto对象")
@Data
public class TourHouseEquipmentDto {

    /**
     * 主键。
     */
    @Schema(description = "主键。", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "数据验证失败，主键不能为空！", groups = {UpdateGroup.class})
    private Long id;

    /**
     * 房屋表id。
     * NOTE: 可支持等于操作符的列表数据过滤。
     */
    @Schema(description = "房屋表id。可支持等于操作符的列表数据过滤。", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "数据验证失败，房屋表id不能为空！", groups = {UpdateGroup.class})
    private Long houseId;

    /**
     * 房屋详情图(多张图片)。
     */
    @Schema(description = "房屋详情图(多张图片)。")
    private String houseDetailImage;

    /**
     * 有无冰箱。
     */
    @Schema(description = "有无冰箱。")
//    @ConstDictRef(constDictClass = HouseEequipmentIsHave.class, message = "数据验证失败，有无冰箱为无效值！")
    private Integer icebox;

    /**
     * 有无洗衣机。
     */
    @Schema(description = "有无洗衣机。")
//    @ConstDictRef(constDictClass = HouseEequipmentIsHave.class, message = "数据验证失败，有无洗衣机为无效值！")
    private Integer washer;

    /**
     * 有无热水器。
     */
    @Schema(description = "有无热水器。")
//    @ConstDictRef(constDictClass = HouseEequipmentIsHave.class, message = "数据验证失败，有无热水器为无效值！")
    private Integer calorifier;

    /**
     * 有无宽带。
     */
    @Schema(description = "有无宽带。")
//    @ConstDictRef(constDictClass = HouseEequipmentIsHave.class, message = "数据验证失败，有无宽带为无效值！")
    private Integer broadband;

    /**
     * 有无沙发。
     */
    @Schema(description = "有无沙发。")
//    @ConstDictRef(constDictClass = HouseEequipmentIsHave.class, message = "数据验证失败，有无沙发为无效值！")
    private Integer sofa;

    /**
     * 有无油烟机。
     */
    @Schema(description = "有无油烟机。")
//    @ConstDictRef(constDictClass = HouseEequipmentIsHave.class, message = "数据验证失败，有无油烟机为无效值！")
    private Integer rangeHood;

    /**
     * 有无燃气灶。
     */
    @Schema(description = "有无燃气灶。")
//    @ConstDictRef(constDictClass = HouseEequipmentIsHave.class, message = "数据验证失败，有无燃气灶为无效值！")
    private Integer gasStove;

    /**
     * 有无做饭。
     */
    @Schema(description = "有无做饭。")
//    @ConstDictRef(constDictClass = HouseEequipmentIsHave.class, message = "数据验证失败，有无做饭为无效值！")
    private Integer ableCook;

    /**
     * 有无电视。
     */
    @Schema(description = "有无电视。")
//    @ConstDictRef(constDictClass = HouseEequipmentIsHave.class, message = "数据验证失败，有无电视为无效值！")
    private Integer television;

    /**
     * 有无空调。
     */
    @Schema(description = "有无空调。")
//    @ConstDictRef(constDictClass = HouseEequipmentIsHave.class, message = "数据验证失败，有无空调为无效值！")
    private Integer airConditioner;

    /**
     * 有无衣柜。
     */
    @Schema(description = "有无衣柜。")
//    @ConstDictRef(constDictClass = HouseEequipmentIsHave.class, message = "数据验证失败，有无衣柜为无效值！")
    private Integer wardrobe;

    /**
     * 有无床。
     */
    @Schema(description = "有无床。")
//    @ConstDictRef(constDictClass = HouseEequipmentIsHave.class, message = "数据验证失败，有无床为无效值！")
    private Integer bed;

    /**
     * 有无卫生间。
     */
    @Schema(description = "有无卫生间。")
//    @ConstDictRef(constDictClass = HouseEequipmentIsHave.class, message = "数据验证失败，有无卫生间为无效值！")
    private Integer restRoom;

    /**
     * 有无智能门锁。
     */
    @Schema(description = "有无智能门锁。")
//    @ConstDictRef(constDictClass = HouseEequipmentIsHave.class, message = "数据验证失败，有无智能门锁为无效值！")
    private Integer smartDoorLock;

    /**
     * 有无阳台。
     */
    @Schema(description = "有无阳台。")
//    @ConstDictRef(constDictClass = HouseEequipmentIsHave.class, message = "数据验证失败，有无阳台为无效值！")
    private Integer balcony;

    /**
     * 有无暖气。
     */
    @Schema(description = "有无暖气。")
//    @ConstDictRef(constDictClass = HouseEequipmentIsHave.class, message = "数据验证失败，有无暖气为无效值！")
    private Integer heating;

    /**
     * 周边配套描述。
     */
    @Schema(description = "周边配套描述。")
    private String surroundingSupport;

    /**
     * 周边配套的图片(多张图片)。
     */
    @Schema(description = "周边配套的图片(多张图片)。")
    private String surroundingSupportImage;

    /**
     * 小区介绍。
     */
    @Schema(description = "小区介绍。")
    private String plotIntroduction;

    /**
     * 小区介绍图片(多张图片)。
     */
    @Schema(description = "小区介绍图片(多张图片)。")
    private String plotIntroductionImage;
}
