# BadGuestDTO.java

    package cloud.wconnect.frontoffice.pojo.dto.badguest;

    import cloud.wconnect.frontoffice.pojo.vo.badguest.BadAttachmentDTO;
    import lombok.Data;
    import org.hibernate.validator.constraints.Length;
    import org.hibernate.validator.constraints.Range;

    import jakarta.validation.Valid;
    import jakarta.validation.constraints.NotBlank;
    import jakarta.validation.constraints.NotEmpty;
    import jakarta.validation.constraints.NotNull;
    import java.util.List;

    /**
     * DTO类：黑名单数据显示
     */
    @Data
    public class BadGuestDTO {

        private Long id;

        private String firstName;

        private String lastName;

        private String propertyName;

        private Integer propertyId;

        @NotNull(message = "the checkInDate must not be null")
        private Long checkInDate;

        @NotNull(message = "the checkOutDate must not be null")
        private Long checkOutDate;

        @NotBlank(message = "the folioNumber must not be blank")
        @Length(max = 30, message = "the folioNumber max length is 30")
        private String folioNumber;

        @NotBlank(message = "the whatHappened must not be blank")
        @Length(max = 2000, message = "the whatHappened max length is 2000")
        private String whatHappened;

        @Length(max = 1000, message = "the reportedTo max length is 1000")
        private String reportedTo;

        @NotBlank(message = "the results must not be blank")
        @Length(max = 2000, message = "the results max length is 2000")
        private String results;

        private Integer lastUpdatedBy;

        private String lastUpdatedByName;

        private Long lastUpdatedTime;

        private Long lastCheckInDate;

        private Long lastCheckOutDate;

        @Length(max = 2000, message = "The attachments is limited 2000 characters")
        private String attachments;

        @Valid
        @NotEmpty(message = "The companions cannot be empty")
        private List<CompanionDTO> companions;

        /**
         * 审批状态
         */
        private Integer approveStatus;
        /**
         * 审批节点
         */
        private Integer approveIndex;
        /**
         * 审批节点描述
         */
        private String approveIndexDesc;
        /**
         * 当前审批批次id
         */
        private Long batchId;
        /**
         * 附件的dto
         */
        private List<BadAttachmentDTO> attachmentDtos;

        /**
         * 创建人
         */
        private Integer createdBy;

        /**
         * 创建人姓名
         */
        private String createdByName;

        /**
         * 黑名单类型1-住房客人 2-会议/宴会房间
         */
        @NotNull
        @Range(min = 1, max = 2,message = "The type must between in [1:Guest check-in 2:Meeting/Banquet Rooms]")
        private Integer type;
    }